From: <os...@us...> - 2008-04-29 12:23:26
|
Revision: 5533 http://bioclipse.svn.sourceforge.net/bioclipse/?rev=5533&view=rev Author: ospjuth Date: 2008-04-29 05:23:12 -0700 (Tue, 29 Apr 2008) Log Message: ----------- Services are run with generic Object as input, not List<Object>. Resource extraction pushed to manager instead of in DropAdapter. Modified Paths: -------------- bioclipse2/trunk/plugins/net.bioclipse.services/src/net/bioclipse/services/business/IServiceManager.java bioclipse2/trunk/plugins/net.bioclipse.services/src/net/bioclipse/services/business/ServiceManager.java Added Paths: ----------- bioclipse2/trunk/plugins/net.bioclipse.services/src/net/bioclipse/services/business/ServiceManagerHelper.java Modified: bioclipse2/trunk/plugins/net.bioclipse.services/src/net/bioclipse/services/business/IServiceManager.java =================================================================== --- bioclipse2/trunk/plugins/net.bioclipse.services/src/net/bioclipse/services/business/IServiceManager.java 2008-04-29 11:12:55 UTC (rev 5532) +++ bioclipse2/trunk/plugins/net.bioclipse.services/src/net/bioclipse/services/business/IServiceManager.java 2008-04-29 12:23:12 UTC (rev 5533) @@ -40,18 +40,6 @@ @Recorded public void list(); - /** - * Run the service with the inputs. - * @param service - * @param inputs - * @return - * @throws InvocationTargetException - * @throws InterruptedException - */ - @Recorded - @PublishedMethod(methodSummary="TBC") - Job run(ServiceImpl service, List<Object> inputs) - throws InvocationTargetException, InterruptedException; /** * Run the service with the inputs. @@ -79,17 +67,4 @@ Job run(ServiceType serviceType, Object input) throws InvocationTargetException, InterruptedException; - /** - * Delegate to runService() with default implementation. - * @param serviceType - * @param inputs - * @return - * @throws InvocationTargetException - * @throws InterruptedException - */ - @Recorded - @PublishedMethod(methodSummary="TBC") - Job run(ServiceType serviceType, List<Object> inputs) - throws InvocationTargetException, InterruptedException; - } Modified: bioclipse2/trunk/plugins/net.bioclipse.services/src/net/bioclipse/services/business/ServiceManager.java =================================================================== --- bioclipse2/trunk/plugins/net.bioclipse.services/src/net/bioclipse/services/business/ServiceManager.java 2008-04-29 11:12:55 UTC (rev 5532) +++ bioclipse2/trunk/plugins/net.bioclipse.services/src/net/bioclipse/services/business/ServiceManager.java 2008-04-29 12:23:12 UTC (rev 5533) @@ -47,7 +47,7 @@ */ public class ServiceManager implements IServiceManager { - private static Map<String, ServiceType> serviceTypes; // Name -> ServiceType + private static Map<String, ServiceType> serviceTypes; // Name -> ServiceType //The logger private static final Logger logger = Logger.getLogger(ServiceManager.class); @@ -80,7 +80,8 @@ public String getDescription() { - return "Services give access to various plugged-in services in Bioclipse."; + return "Services give access to various " + + "plugged-in services in Bioclipse."; } @@ -91,7 +92,8 @@ String ret="Available serviceTypes: "; for (ServiceType st : serviceTypes.values()){ - ret=ret + "\n " + st.getShortname() + " - (Full name: '" + st.getName() + "')"; + ret=ret + "\n " + st.getShortname() + " - (Full name: '" + + st.getName() + "')"; // ret=ret + "\n " + "Implementations:"; // for (IServiceObject impl : st.getChildren()){ // ret=ret + "\n " + impl.getName(); @@ -157,13 +159,6 @@ * @throws InterruptedException * @throws InvocationTargetException */ - public Job run(ServiceType serviceType, List<Object> inputs) - throws InvocationTargetException, InterruptedException { - - ServiceImpl service=serviceType.getPreferredImplementation(); - return run(service, inputs); - } - public Job run(ServiceType serviceType, Object input) throws InvocationTargetException, InterruptedException { @@ -175,29 +170,37 @@ } - public Job run(final ServiceImpl service, final Object input) - throws InvocationTargetException, InterruptedException{ - - List<Object> list=new ArrayList<Object>(); - list.add(input); - return run(service, list); - - } - - /** * Run the service with the inputs. * @param service IRunnableService to run * @param inputs The inputs for the service * @throws InvocationTargetException * @throws InterruptedException - '+\x8C,,m */ - public Job run(final ServiceImpl service, final List<Object> inputs) + */ + public Job run(final ServiceImpl service, final Object input) throws InvocationTargetException, InterruptedException{ logger.debug("Running service: " + service.getName()); + + if (input==null){ + throw new InvocationTargetException(new BioclipseException( + "No input provided to service: " + service.getName())); + } -// final ServiceRunner runner=new ServiceRunner(); + //For debug out + if (input instanceof List) { + logger.debug("Running service: " + service.getName() + " with: " + + ((List)input).size() + " inputs"); + + } else{ + logger.debug("Running service: " + service.getName() + + " with single input: " + input.toString()); + } + + //Extract resources from input, could be file or IBioResources + List<Object> inputs = ServiceManagerHelper.extractSourceData(input); + + //Set up ServiceJob ServiceJob job=new ServiceJob("Service: " + service.getName()); job.setService(service); @@ -206,15 +209,19 @@ //Check if inputs are accepted in the ServiceType, add to job if (inputs!=null){ - for (Object input : inputs){ - if (type.acceptsInput(input.getClass())){ - job.addInput(input); - logger.debug(" + Added input: " + input.toString()); + for (Object obj : inputs){ + if (type.acceptsInput(obj.getClass())){ + job.addInput(obj); + logger.debug(" + Added accepted input: " + obj.toString()); } + else{ + logger.debug(" + Omitting rejected input: " + + obj.toString()); + } } } else { - logger.debug("No inputs provided to service."); + logger.debug("No accepted inputs provided to service."); } logger.debug("Service: " + service.getName() + " scheduled..."); @@ -222,56 +229,6 @@ job.schedule(); return job; -// try { -// job.join(); -// } catch (InterruptedException e) { -// logger.debug("Job was interrupted."); -// return; -// } - -// Object res=job.getResultObject(); -// -// -// logger.debug("Service: " + service.getName() + " finished."); -// logger.debug("Result: " + res); -// -// int a=0; - - - - - - - - - - - /* - logger.debug("Running service: " + service.getName()); - - ServiceRunner runner=new ServiceRunner(); - runner.setService(service); - - //Get parent=ServiceType - ServiceType type=(ServiceType)service.getParent(); - - //Check if inputs are accepted in the ServiceType, add to runner - if (inputs!=null){ - for (IBioObject input : inputs){ - if (type.acceptsInput(input.getClass())){ - runner.addInput(input); - logger.debug(" + Added input: " + input.toString()); - } - } - } - else { - logger.debug("No inputs provided to service."); - } - logger.debug("Service: " + service.getName() + " started with dialog..."); - runner.run(new DummyMonitor()); - logger.debug("Service: " + service.getName() + " finished."); - */ } - } Added: bioclipse2/trunk/plugins/net.bioclipse.services/src/net/bioclipse/services/business/ServiceManagerHelper.java =================================================================== --- bioclipse2/trunk/plugins/net.bioclipse.services/src/net/bioclipse/services/business/ServiceManagerHelper.java (rev 0) +++ bioclipse2/trunk/plugins/net.bioclipse.services/src/net/bioclipse/services/business/ServiceManagerHelper.java 2008-04-29 12:23:12 UTC (rev 5533) @@ -0,0 +1,116 @@ +/******************************************************************************* + * Copyright (c) 2008 The Bioclipse Project and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Ola Spjuth + * + ******************************************************************************/ +package net.bioclipse.services.business; + +import java.util.ArrayList; +import java.util.List; + +import net.bioclipse.core.domain.BioList; +import net.bioclipse.core.domain.IBioObject; + +import org.eclipse.core.resources.IResource; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.navigator.CommonNavigator; + +public class ServiceManagerHelper { + + @SuppressWarnings("unchecked") + public static List<Object> extractSourceData(Object data) { + List<Object> inputs=new ArrayList<Object>(); + + //Extract the dropped data, only accept IBioObjects + if (data instanceof IStructuredSelection) { + IStructuredSelection sel = (IStructuredSelection) data; + for (Object obj:sel.toList()){ + if (obj instanceof IBioObject){ + inputs.add((IBioObject)obj); + } + else if (obj instanceof IResource){ + List<IBioObject> ibios = getBioObjFromResource((IResource)obj); + if (ibios==null || ibios.size()<=0){ + //Unable to parse into IBioObjects, provide complete IResource + inputs.add(obj); + } else{ + //Add the parsed IResource as OIBio objects + inputs.addAll(ibios); + } + } + } + } + else{ + //Simply add input to list + if (data instanceof IBioObject){ + inputs.add((IBioObject)data); + } + else if (data instanceof BioList){ + for (Object obj : (BioList)data){ + inputs.add((IBioObject)obj); + } + } + else if (data instanceof IBioObject[]){ + for (Object obj : (IBioObject[])data){ + inputs.add((IBioObject)obj); + } + } + else if (data instanceof ArrayList){ + for (Object obj : (ArrayList)data){ + if (obj instanceof IBioObject) { + inputs.add((IBioObject)obj); + } + } + } + //Or parse IResource to IBioObjects + else if (data instanceof IResource){ + List<IBioObject> ibios = getBioObjFromResource((IResource)data); + if (ibios==null || ibios.size()<=0){ + //Unable to parse into IBioObjects, provide complete IResource + inputs.add(data); + } else{ + //Add the parsed IResource as OIBio objects + inputs.addAll(ibios); + } + } + + } + return inputs; + } + + + + private static List<IBioObject> getBioObjFromResource(IResource resource){ + + List<IBioObject> retlist=new ArrayList<IBioObject>(); + + //Find navigator + IViewPart part=PlatformUI.getWorkbench(). + getActiveWorkbenchWindow().getActivePage(). + findView("net.bioclipse.navigator"); + + if (!(part instanceof CommonNavigator)) return null; + + //Use navigator content provider to extract children + CommonNavigator nav = (CommonNavigator) part; + ITreeContentProvider prov=(ITreeContentProvider) nav.getCommonViewer().getContentProvider(); + Object objs[]=prov.getChildren(resource); + for (Object obj : objs){ + if (obj instanceof IBioObject) { + IBioObject bobj = (IBioObject) obj; + retlist.add(bobj); + } + } + return retlist; + + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |