[MOBY-l] Moby Client Example

Paul Gordon gordonp at ucalgary.ca
Mon May 8 14:23:49 UTC 2006


By the way, I have created several new help documents for my classes, 
but haven't committed them since they rely on the (uncommited) Java 
1.5-requiring changes I've made in jMOBY.  Did we get a final word on if 
it's okay to switch now?

Cheers,

Paul
> Hi,
>    You can write moby client in two ways. The general one - when you do
> not need generated Java objects - was demonstrated by Eddie in his reply.
>    This is the second way:
>
>    In order to use it, you need to generate moby data types (more about it
> in
> Moses: http://biomoby.open-bio.org/CVS_CONTENT/moby-live/Java/docs/Moses.html). Or
> ask me for details.
>
>    Once you have them, you can process a response with a method like this
> (this is a real example that I have just put together - the whole code for
> this command-line client is attached, and it is also part of jMoby
> samples):
>
> public boolean useResponse (MobyJob response,
> 			    MobyPackage responseContext)
>     throws MobyException {
>
>     MobyObject[] gff = response.getDataSet ("gff");
>     for (int i = 0; i < gff.length; i++) {
> 	BasicGFFSequenceFeature feature = (BasicGFFSequenceFeature)gff[i];
> 	System.out.println ("\n" + feature.getId() + "\t" +feature.getNamespace());
> 	System.out.println ("Frame:     " + feature.get_frame());
> 	System.out.println ("Source:    " + feature.get_source());
> 	System.out.println ("Method:    " + feature.get_method());
> 	System.out.println ("Reference: " + feature.get_reference());
> 	System.out.println ("Strand:    " + feature.get_strand());
> 	System.out.println ("Score:     " + feature.getMoby_score().getValue());
> 	System.out.println ("Start:     " + feature.getMoby_start().getValue());
> 	System.out.println ("Stop:      " + feature.getMoby_stop().getValue());
> 	multi_key_value_pair[] pairs = feature.getMoby_column9_tag_value();
> 	for (int j = 0; j < pairs.length; j++) {
> 	    System.out.print (pairs[j].get_key());
> 	    String[] values = pairs[j].get_the_value();
> 	    for (int k = 0; k < values.length; k++)
> 		System.out.print ("\t" + values[k]);
> 	    System.out.println();
> 	}
>     }
>     return true;
> }
>
>    The attached sample code calles service
> "getInsertionsAsGFFByAGICode". For an AGI_LocusCode "At1g44446", the
> method above prints something like this:
>
> T-DNA_LB.T-DNA.SAIL_326_H02.v1  ATH_Insert_number
> Frame:     '.'
> Source:    'AtiDB'
> Method:    'variation'
> Reference: 1
> Strand:    '.'
> Score:     5
> Start:     16853268
> Stop:      16853269
> 'Insertion'     T-DNA_LB.T-DNA.SAIL_326_H02.v1
>
> T-DNA_LB.T-DNA.SAIL_1238_D01.v1 ATH_Insert_number
> Frame:     '.'
> Source:    'AtiDB'
> Method:    'variation'
> Reference: 1
> Strand:    '.'
> Score:     5
> Start:     16852562
> Stop:      16852563
> 'Insertion'     T-DNA_LB.T-DNA.SAIL_1238_D01.v1
>
> ... and more
>
>    With regards,
>    Martin
>
>   
> ------------------------------------------------------------------------
>
> // TestExtractGFF.java
> //
> //    Created: May 2006
> //
> // This file is a component of the BioMoby project.
> // Copyright Martin Senger (martin.senger at gmail.com).
> //
>
> package org.jmoby.tutorial.client;
>
> import org.biomoby.client.BaseClient;
> import org.biomoby.shared.MobyException;
> import org.biomoby.shared.MobyService;
> import org.biomoby.shared.parser.MobyPackage;
> import org.biomoby.shared.parser.MobyJob;
> import org.biomoby.shared.datatypes.MobyObject;
> import org.biomoby.client.MobyServiceLocator;
> import org.biomoby.shared.datatypes.*;
>
> /**
>  * This is an example of a client. It calls a Biomoby service
>  * "getInsertionsAsGFFByAGICode" it uses generated data types and it
>  * benefits from various features provided by the BaseClient
>  * class. <p>
>  *
>  * @author <A HREF="mailto:martin.senger at gmail.com">Martin Senger</A>
>  * @version $Id: TestExtractGFF.java,v 1.1 2006/05/05 21:11:46 senger Exp $
>  */
>
> public class TestExtractGFF
>     extends BaseClient {
>
>     // from the command-line
>     String serviceEndpoint;
>     MobyObject input;
>
>     /**************************************************************************
>      * Constructor. It expects arguments: AGI_Locus_code [service-endpoint].
>      *************************************************************************/
>     public TestExtractGFF (String[] args) {
> 	input = new MobyObject();
> 	String agiLocusCode = "At1g44446";
> 	if (args.length > 0)
> 	    agiLocusCode = args[0];
> 	input.setId (agiLocusCode);
> 	input.setNamespace ("AGI_LocusCode");
>
> 	if (args.length > 1)
> 	    serviceEndpoint = args[1];
>     }
>
>     /**************************************************************************
>      *
>      *************************************************************************/
>     public MobyServiceLocator getServiceLocator()
> 	throws MobyException {
> 	MobyService service = new MobyService ("getInsertionsAsGFFByAGICode");
> 	if (serviceEndpoint != null)
> 	    service.setURL (serviceEndpoint);
> 	return new MobyServiceLocator (service);
>     }
>
>     /**************************************************************************
>      *
>      *************************************************************************/
>     public boolean fillRequest (MobyJob request, MobyPackage inputContext)
> 	throws MobyException {
> 	request.setData (input);
> 	return true;
>     }
>
>     /**************************************************************************
>      *
>      *************************************************************************/
>     public boolean useResponse (MobyJob response,
> 				MobyPackage responseContext)
> 	throws MobyException {
>
>  	MobyObject[] gff = response.getDataSet ("gff");
>  	for (int i = 0; i < gff.length; i++) {
> 	    BasicGFFSequenceFeature feature = (BasicGFFSequenceFeature)gff[i];
> 	    System.out.println ("\n" + feature.getId() + "\t" + feature.getNamespace());
> 	    System.out.println ("Frame:     " + feature.get_frame());
> 	    System.out.println ("Source:    " + feature.get_source());
> 	    System.out.println ("Method:    " + feature.get_method());
> 	    System.out.println ("Reference: " + feature.get_reference());
> 	    System.out.println ("Strand:    " + feature.get_strand());
> 	    System.out.println ("Score:     " + feature.getMoby_score().getValue());
> 	    System.out.println ("Start:     " + feature.getMoby_start().getValue());
> 	    System.out.println ("Stop:      " + feature.getMoby_stop().getValue());
> 	    multi_key_value_pair[] pairs = feature.getMoby_column9_tag_value();
> 	    for (int j = 0; j < pairs.length; j++) {
> 		System.out.print (pairs[j].get_key());
> 		String[] values = pairs[j].get_the_value();
> 		for (int k = 0; k < values.length; k++)
> 		    System.out.print ("\t" + values[k]);
> 		System.out.println();
> 	    }
> 	}
> 	return true;
>     }
>
>     /**************************************************************************
>      *
>      *************************************************************************/
>     public static void main (String [] args) {
> 	if (args.length > 2) {
> 	    System.err.println ("Usage: java TestExtractGFF [<AGI_LocusCode> [<service-endpoint>]]\n");
> 	    System.exit (1);
> 	}
> 	TestExtractGFF client = new TestExtractGFF (args);
> 	try {
> 	    client.process();
> 	} catch (MobyException e) {
> 	    System.err.println (e.getMessage());
> 	    System.exit (1);
> 	}
>     }
>
> }
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> moby-l mailing list
> moby-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/moby-l
>   




More information about the moby-l mailing list