Author: mes
Date: 2011-03-13 18:26:37 -0700 (Sun, 13 Mar 2011)
New Revision: 24423

Added:
   
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/AbstractStringTunableHandler.java
   
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/FileTunableHandler.java
   
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/IntTunableHandler.java
   
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/StringTunableHandler.java
Modified:
   core3/command-executor-impl/trunk/pom.xml
   
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/CommandExecutorImpl.java
   
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/NTFExecutor.java
   
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/TFExecutor.java
   
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/CommandTunableHandlerFactory.java
   
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/CommandTunableInterceptorImpl.java
   
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/DummyTunableHandler.java
Log:
added tunable support

Modified: core3/command-executor-impl/trunk/pom.xml
===================================================================
--- core3/command-executor-impl/trunk/pom.xml   2011-03-12 02:08:09 UTC (rev 
24422)
+++ core3/command-executor-impl/trunk/pom.xml   2011-03-14 01:26:37 UTC (rev 
24423)
@@ -85,6 +85,11 @@
                </dependency>
                <dependency>
                        <groupId>org.cytoscape</groupId>
+                       <artifactId>work-api</artifactId>
+                       <version>3.0.0-alpha3-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.cytoscape</groupId>
                        <artifactId>work-spring-hack</artifactId>
                        <version>3.0.0-alpha1</version>
                </dependency>

Modified: 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/CommandExecutorImpl.java
===================================================================
--- 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/CommandExecutorImpl.java
     2011-03-12 02:08:09 UTC (rev 24422)
+++ 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/CommandExecutorImpl.java
     2011-03-14 01:26:37 UTC (rev 24423)
@@ -23,7 +23,7 @@
        private final Map<String, Map<String,Executor>> commandExecutorMap = 
                                                     new 
HashMap<String,Map<String,Executor>>();
 
-       private final TunableInterceptor interceptor = new 
CommandTunableInterceptorImpl(new CommandTunableHandlerFactory()); 
+       private final CommandTunableInterceptorImpl interceptor = new 
CommandTunableInterceptorImpl(new CommandTunableHandlerFactory()); 
        private final CyApplicationManager appMgr;
 
        public CommandExecutorImpl(CyApplicationManager appMgr) {

Modified: 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/NTFExecutor.java
===================================================================
--- 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/NTFExecutor.java
     2011-03-12 02:08:09 UTC (rev 24422)
+++ 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/NTFExecutor.java
     2011-03-14 01:26:37 UTC (rev 24423)
@@ -5,12 +5,13 @@
 import org.cytoscape.task.NetworkTaskFactory;
 import org.cytoscape.work.TunableInterceptor;
 import org.cytoscape.session.CyApplicationManager;
+import org.cytoscape.command.internal.tunables.CommandTunableInterceptorImpl;
 
 class NTFExecutor extends TFExecutor {
        private final NetworkTaskFactory ntf;
        private final CyApplicationManager appMgr;
 
-       public NTFExecutor(NetworkTaskFactory ntf, TunableInterceptor 
interceptor, CyApplicationManager appMgr) {
+       public NTFExecutor(NetworkTaskFactory ntf, 
CommandTunableInterceptorImpl interceptor, CyApplicationManager appMgr) {
                super(ntf,interceptor);
                this.ntf = ntf;
                this.appMgr = appMgr;

Modified: 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/TFExecutor.java
===================================================================
--- 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/TFExecutor.java
      2011-03-12 02:08:09 UTC (rev 24422)
+++ 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/TFExecutor.java
      2011-03-14 01:26:37 UTC (rev 24423)
@@ -6,13 +6,14 @@
 import org.cytoscape.work.TaskIterator;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.TunableInterceptor;
+import org.cytoscape.command.internal.tunables.CommandTunableInterceptorImpl;
 
 class TFExecutor implements Executor {
        private final TaskFactory tf;
-       private final TunableInterceptor interceptor; 
+       private final CommandTunableInterceptorImpl interceptor; 
        private final TaskMonitor tm = new OutTaskMonitor(); 
 
-       public TFExecutor(TaskFactory tf, TunableInterceptor interceptor) {
+       public TFExecutor(TaskFactory tf, CommandTunableInterceptorImpl 
interceptor) {
                this.tf = tf;
                this.interceptor = interceptor;
        }
@@ -23,6 +24,7 @@
                TaskIterator ti = tf.getTaskIterator();
                while (ti.hasNext()) {
                        Task t = ti.next();
+                       interceptor.setArgString(args);
                        interceptor.loadTunables(t);
                        interceptor.execUI(t);
                        t.run(tm);

Added: 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/AbstractStringTunableHandler.java
===================================================================
--- 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/AbstractStringTunableHandler.java
                           (rev 0)
+++ 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/AbstractStringTunableHandler.java
   2011-03-14 01:26:37 UTC (rev 24423)
@@ -0,0 +1,58 @@
+
+package org.cytoscape.command.internal.tunables;
+
+
+
+import org.cytoscape.work.TunableHandler;
+import org.cytoscape.work.Tunable;
+import org.cytoscape.work.AbstractTunableHandler;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public abstract class AbstractStringTunableHandler extends 
AbstractTunableHandler implements StringTunableHandler {
+
+       private static final Logger logger = 
LoggerFactory.getLogger(IntTunableHandler.class);
+
+       protected String[] args;
+
+       public AbstractStringTunableHandler(Field f, Object o, Tunable t) {
+               super(f,o,t);
+       }
+
+       public AbstractStringTunableHandler(Method get, Method set, Object o, 
Tunable t) {
+               super(get,set,o,t);
+       }
+
+       public void handle() {
+               try {
+               for ( int i = 0; i < args.length; i++ ) {
+                       String arg = args[i];
+                       if ( arg.equals(getName()) && (i+1) < args.length ) {
+                               Object value;
+                               try {
+                                       value = processArg(args[i+1]); 
+                               } catch (Exception e) {
+                                       logger.warn("Couldn't parse value from: 
" + args[i+1], e);
+                                       return;
+                               }
+                               setValue(value);
+                               return;
+                       }
+               }
+               logger.warn("found no match for tunable: " + 
getQualifiedName());
+               } catch ( Exception e) {
+                       logger.warn("tunable handler exception: " + 
getQualifiedName(), e);
+               }
+       }
+
+       public void setArgString(String s) {
+               if ( s != null )
+                       args = s.split("\\s+");
+       }
+
+       public abstract Object processArg(String arg) throws Exception;
+}

Modified: 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/CommandTunableHandlerFactory.java
===================================================================
--- 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/CommandTunableHandlerFactory.java
   2011-03-12 02:08:09 UTC (rev 24422)
+++ 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/CommandTunableHandlerFactory.java
   2011-03-14 01:26:37 UTC (rev 24423)
@@ -18,10 +18,10 @@
 import org.cytoscape.work.util.ListSingleSelection;
 
 
-public class CommandTunableHandlerFactory implements 
TunableHandlerFactory<TunableHandler> {
+public class CommandTunableHandlerFactory implements 
TunableHandlerFactory<StringTunableHandler> {
 
 
-       public TunableHandler getHandler(final Method getter, final Method 
setter, final Object instance, final Tunable tunable) {
+       public StringTunableHandler getHandler(final Method getter, final 
Method setter, final Object instance, final Tunable tunable) {
                final Class<?> type = getter.getReturnType();
 
                if (type == Boolean.class || type == boolean.class)
@@ -29,7 +29,7 @@
                if (type == String.class)
                        return new DummyTunableHandler(getter, setter, 
instance, tunable);
                if (type == Integer.class || type == int.class)
-                       return new DummyTunableHandler(getter, setter, 
instance, tunable);
+                       return new IntTunableHandler(getter, setter, instance, 
tunable);
                if (type == Double.class || type == double.class)
                        return new DummyTunableHandler(getter, setter, 
instance, tunable);
                if (type == Float.class || type == float.class)
@@ -49,7 +49,7 @@
                if (type == ListMultipleSelection.class)
                        return new DummyTunableHandler(getter, setter, 
instance, tunable);
                if (type == File.class)
-                       return new DummyTunableHandler(getter, setter, 
instance, tunable);
+                       return new FileTunableHandler(getter, setter, instance, 
tunable);
                if (type == URL.class)
                        return new DummyTunableHandler(getter, setter, 
instance, tunable);
                if (type == InputStream.class)
@@ -58,7 +58,7 @@
                return null;
        }
 
-       public TunableHandler getHandler(final Field field, final Object 
instance, final Tunable tunable) {
+       public StringTunableHandler getHandler(final Field field, final Object 
instance, final Tunable tunable) {
                final Class<?> type = field.getType();
 
                if (type == Boolean.class || type == boolean.class)
@@ -66,7 +66,7 @@
                if (type == String.class)
                        return new DummyTunableHandler(field, instance, 
tunable);
                if (type == Integer.class || type == int.class)
-                       return new DummyTunableHandler(field, instance, 
tunable);
+                       return new IntTunableHandler(field, instance, tunable);
                if (type == Double.class || type == double.class)
                        return new DummyTunableHandler(field, instance, 
tunable);
                if (type == Float.class || type == float.class)
@@ -86,7 +86,7 @@
                if (type == ListMultipleSelection.class)
                        return new DummyTunableHandler(field, instance, 
tunable);
                if (type == File.class)
-                       return new DummyTunableHandler(field, instance, 
tunable);
+                       return new FileTunableHandler(field, instance, tunable);
                if (type == URL.class)
                        return new DummyTunableHandler(field, instance, 
tunable);
                if (type == InputStream.class)

Modified: 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/CommandTunableInterceptorImpl.java
===================================================================
--- 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/CommandTunableInterceptorImpl.java
  2011-03-12 02:08:09 UTC (rev 24422)
+++ 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/CommandTunableInterceptorImpl.java
  2011-03-14 01:26:37 UTC (rev 24423)
@@ -17,24 +17,29 @@
 import org.slf4j.LoggerFactory;
 
 
-public class CommandTunableInterceptorImpl extends 
SpringTunableInterceptor<TunableHandler> {
-       private boolean newValuesSet;
+public class CommandTunableInterceptorImpl extends 
SpringTunableInterceptor<StringTunableHandler> {
+       private String args;
 
-       public CommandTunableInterceptorImpl(final 
TunableHandlerFactory<TunableHandler> factory) {
+       public CommandTunableInterceptorImpl(final 
TunableHandlerFactory<StringTunableHandler> factory) {
                super(factory);
        }
 
     public boolean execUI(Object... objs) {
                return validateAndWriteBackTunables(objs);
        }
+
+       public void setArgString(String args) {
+               this.args = args;
+       }
    
     public boolean validateAndWriteBackTunables(Object... objs) {
                for ( Object o : objs ) {
-                       Map<String,TunableHandler> handlers = getHandlers(o);
-                       for ( String s : handlers.keySet() ) {
-                               System.out.println("got handler for tunable 
param: " + s);
+                       Map<String,StringTunableHandler> handlers = 
getHandlers(o);
+                       for ( StringTunableHandler h : handlers.values() ) {
+                               h.setArgString(args);
+                               h.handle();
                        }
-               }       
+               }
                return true;
        }
 }

Modified: 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/DummyTunableHandler.java
===================================================================
--- 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/DummyTunableHandler.java
    2011-03-12 02:08:09 UTC (rev 24422)
+++ 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/DummyTunableHandler.java
    2011-03-14 01:26:37 UTC (rev 24423)
@@ -11,15 +11,12 @@
 import java.lang.reflect.Method;
 
 
-public class DummyTunableHandler extends AbstractTunableHandler {
+public class DummyTunableHandler extends AbstractTunableHandler implements 
StringTunableHandler {
 
-       public DummyTunableHandler(Field f, Object o, Tunable t) {
-               super(f,o,t);
-       }
-       public DummyTunableHandler(Method get, Method set, Object o, Tunable t) 
{
-               super(get,set,o,t);
-       }
+       public DummyTunableHandler(Field f, Object o, Tunable t) { 
super(f,o,t); }
+       public DummyTunableHandler(Method get, Method set, Object o, Tunable t) 
{ super(get,set,o,t); }
        public void handle() {
-               System.out.println("handling! " + getName());
+               System.out.println("Dummy handling! " + getName());
        }
+       public void setArgString(String s) { }
 }

Added: 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/FileTunableHandler.java
===================================================================
--- 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/FileTunableHandler.java
                             (rev 0)
+++ 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/FileTunableHandler.java
     2011-03-14 01:26:37 UTC (rev 24423)
@@ -0,0 +1,17 @@
+
+package org.cytoscape.command.internal.tunables;
+
+import java.io.File;
+import org.cytoscape.work.Tunable;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+public class FileTunableHandler extends AbstractStringTunableHandler {
+
+    public FileTunableHandler(Field f, Object o, Tunable t) { super(f,o,t); }
+    public FileTunableHandler(Method get, Method set, Object o, Tunable t) { 
super(get,set,o,t); }
+
+       public Object processArg(String arg) throws Exception {
+               return new File(arg); 
+       }
+}

Added: 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/IntTunableHandler.java
===================================================================
--- 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/IntTunableHandler.java
                              (rev 0)
+++ 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/IntTunableHandler.java
      2011-03-14 01:26:37 UTC (rev 24423)
@@ -0,0 +1,14 @@
+
+package org.cytoscape.command.internal.tunables;
+
+import org.cytoscape.work.Tunable;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+public class IntTunableHandler extends AbstractStringTunableHandler {
+    public IntTunableHandler(Field f, Object o, Tunable t) { super(f,o,t); }
+    public IntTunableHandler(Method get, Method set, Object o, Tunable t) { 
super(get,set,o,t); }
+       public Object processArg(String arg) throws Exception {
+               return Integer.parseInt(arg);
+       }
+}

Added: 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/StringTunableHandler.java
===================================================================
--- 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/StringTunableHandler.java
                           (rev 0)
+++ 
core3/command-executor-impl/trunk/src/main/java/org/cytoscape/command/internal/tunables/StringTunableHandler.java
   2011-03-14 01:26:37 UTC (rev 24423)
@@ -0,0 +1,11 @@
+
+
+package org.cytoscape.command.internal.tunables;
+
+
+import org.cytoscape.work.TunableHandler;
+
+public interface StringTunableHandler extends TunableHandler {
+
+       void setArgString(String s);
+}

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to