
package de.mpg.mpiz_koeln.featureClient.test;

import java.util.Collection;

import org.biomoby.shared.MobyException;
import org.biomoby.shared.datatypes.AminoAcidSequence;
import org.biomoby.shared.datatypes.GenericSequence;
import org.biomoby.shared.datatypes.MobyInteger;
import org.biomoby.shared.datatypes.MobyString;

import de.mpg.mpiz_koeln.featureClient.FeatureClient;
import de.mpg.mpiz_koeln.featureClient.FeatureClientException;
import de.mpg.mpiz_koeln.featureClient.FeatureClientResult;

/**
 * This examples shows how to use the client to call a web service once which consumes a complex data type, such as
 * AminoAcidSequence.
 */
class ComplexSingleCall {
	public static void main(String[] args) throws MobyException, FeatureClientException {
		FeatureClient client = new FeatureClient();
		// timeout of the calls is set to 45 seconds
		client.setTimeout( 45 );
		// call the service called 'fromGenericToAminoAcidSequence'
		client.addService( "fromGenericToAminoAcidSequence" );

		// the service has a generic sequence has input
		GenericSequence sequence = new GenericSequence();
		sequence.set_SequenceString( new MobyString( "MQPVKVYADRRSQPSRAVIIFCRVNQIDFEEVTVDLFKSQHLTPEFRKVNPMGQVPAIVDGR" ) );
		sequence.set_Length( new MobyInteger( 50 ) );
		// set the input to the client
		client.setSingleCallInput( sequence );

		// start the call and retrieve the results
		Collection< FeatureClientResult > result = client.call();
		for ( FeatureClientResult featureClientResult : result ) {
			// as the service was called once we get back the result for this service call
			Collection< AminoAcidSequence > sequences = featureClientResult.getSingleCallResult();

			// and lets see what results the service returned
			for ( AminoAcidSequence acidSequence : sequences ) {
				System.out.println( acidSequence.get_SequenceString() );
				System.out.println( acidSequence.getMoby_Length().getValue() );
			}
		}
        System.exit( 0 );
	}
}
