Author: mkirby
Date: 2012-05-10 23:52:50 -0700 (Thu, 10 May 2012)
New Revision: 29222

Added:
   core3/impl/trunk/headless-cmdline-parser-impl/pom.xml
   core3/impl/trunk/headless-cmdline-parser-impl/src/
   core3/impl/trunk/headless-cmdline-parser-impl/src/main/
   core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/
   core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/
   core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/
   
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/
   
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/
   
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/
   
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/CyActivator.java
   
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/Parser.java
   
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/StartupConfig.java
Modified:
   core3/impl/trunk/headless-cmdline-parser-impl/
Log:
mkirby: Initial commit of headless-cmdline-parser-impl.


Property changes on: core3/impl/trunk/headless-cmdline-parser-impl
___________________________________________________________________
Added: svn:ignore
   + .settings
.classpath
.project
target


Added: core3/impl/trunk/headless-cmdline-parser-impl/pom.xml
===================================================================
--- core3/impl/trunk/headless-cmdline-parser-impl/pom.xml                       
        (rev 0)
+++ core3/impl/trunk/headless-cmdline-parser-impl/pom.xml       2012-05-11 
06:52:50 UTC (rev 29222)
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+
+       <parent>
+               <artifactId>impl-parent</artifactId>
+               <groupId>org.cytoscape</groupId>
+               <version>3.0.0-alpha9-SNAPSHOT</version>
+       </parent>
+
+       <properties>
+               
<bundle.symbolicName>org.cytoscape.headless-cmdline-parser-impl</bundle.symbolicName>
+               
<bundle.namespace>org.cytoscape.cmdline.headless.internal</bundle.namespace>
+       </properties>
+
+       <modelVersion>4.0.0</modelVersion>
+       <artifactId>headless-cmdline-parser-impl</artifactId>
+
+       <name>Cytoscape Headless Command Line Parser Impl 
(${project.artifactId})</name>
+
+       <packaging>bundle</packaging>
+
+
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-jar-plugin</artifactId>
+                               <version>${maven-jar-plugin.version}</version>
+                               <executions>
+                                       <execution>
+                                               <goals>
+                                                       <goal>test-jar</goal>
+                                               </goals>
+                                       </execution>
+                               </executions>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.felix</groupId>
+                               <artifactId>maven-bundle-plugin</artifactId>
+                               
<version>${maven-bundle-plugin.version}</version>
+                               <extensions>true</extensions>
+                               <configuration>
+                                       <instructions>
+                                               
<Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
+                                               
<Bundle-Version>${project.version}</Bundle-Version>
+                                               
<Export-Package>!${bundle.namespace}.*</Export-Package>
+                                               
<Private-Package>${bundle.namespace}.*</Private-Package>
+                                               
<Bundle-Activator>${bundle.namespace}.CyActivator</Bundle-Activator>
+                                       </instructions>
+                               </configuration>
+                       </plugin>
+               </plugins>
+       </build>
+
+       <repositories>
+               <repository>
+                       <id>cytoscape_snapshots</id>
+                       <snapshots>
+                               <enabled>true</enabled>
+                       </snapshots>
+                       <releases>
+                               <enabled>false</enabled>
+                       </releases>
+                       <name>Cytoscape Snapshots</name>
+                       
<url>http://code.cytoscape.org/nexus/content/repositories/snapshots/</url>
+               </repository>
+               <repository>
+                       <id>cytoscape_releases</id>
+                       <snapshots>
+                               <enabled>false</enabled>
+                       </snapshots>
+                       <releases>
+                               <enabled>true</enabled>
+                       </releases>
+                       <name>Cytoscape Releases</name>
+                       
<url>http://code.cytoscape.org/nexus/content/repositories/releases/</url>
+               </repository>
+       </repositories>
+       <dependencies>
+
+           <dependency>
+                       <groupId>org.cytoscape</groupId>
+                       <artifactId>work-api</artifactId>
+               </dependency>
+               
+               <dependency>
+                       <groupId>org.cytoscape</groupId>
+                       <artifactId>io-api</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.cytoscape</groupId>
+                       <artifactId>cy-commons-cli</artifactId>
+                       <version>${cytoscape.support.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.cytoscape</groupId>
+                       <artifactId>cmdline</artifactId>
+                       <version>${cytoscape.support.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.cytoscape</groupId>
+                       <artifactId>application-api</artifactId>
+               </dependency>
+       </dependencies>
+
+</project>

Added: 
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/CyActivator.java
                                (rev 0)
+++ 
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/CyActivator.java
        2012-05-11 06:52:50 UTC (rev 29222)
@@ -0,0 +1,48 @@
+package org.cytoscape.cmdline.headless.internal;
+
+import org.cytoscape.application.CyShutdown;
+import org.cytoscape.application.CyVersion;
+import org.cytoscape.cmdline.CommandLineArgs;
+//import org.cytoscape.command.internal.CommandExecutorTaskFactory;
+import org.cytoscape.io.util.StreamUtil;
+import org.cytoscape.service.util.AbstractCyActivator;
+import org.cytoscape.work.TaskFactory;
+import org.cytoscape.work.TaskManager;
+import org.cytoscape.work.TunableSetter;
+import org.osgi.framework.BundleContext;
+
+public class CyActivator extends AbstractCyActivator {
+       public CyActivator() {
+               super();
+       }
+
+       public void start(BundleContext bc) {
+               
+               TaskFactory cmdExec = getService(bc, TaskFactory.class, 
"(title=Run Commands...)");
+               
+               CommandLineArgs args = getService(bc,CommandLineArgs.class);
+               
+               CyVersion cyVersion = getService(bc,CyVersion.class);
+               CyShutdown cyShutdown = getService(bc,CyShutdown.class); 
+               StreamUtil streamUtil = getService(bc,StreamUtil.class); /*
+               OpenSessionTaskFactory loadSession = getService(bc, 
OpenSessionTaskFactory.class);
+               LoadNetworkFileTaskFactory networkFileLoader = getService(bc, 
LoadNetworkFileTaskFactory.class);
+               LoadNetworkURLTaskFactory networkURLLoader = getService(bc, 
LoadNetworkURLTaskFactory.class);
+               LoadVizmapFileTaskFactory visualStylesLoader = getService(bc, 
LoadVizmapFileTaskFactory.class);
+               */TaskManager <?,?> taskManager = getService(bc, 
TaskManager.class); /*
+
+               CyProperty<Properties> props = 
(CyProperty<Properties>)getService(bc, CyProperty.class, 
"(cyPropertyName=cytoscape3.props)");
+
+               StartupConfig sc = new 
StartupConfig(props.getProperties(),streamUtil, loadSession, networkFileLoader, 
networkURLLoader, visualStylesLoader, taskManager);
+
+               */
+               //CMDExecTaskFactory cmdTF = new 
CMDExecTaskFactory((CommandExecutorTaskFactory)cmdExec);
+               
+               TunableSetter setter = getService(bc,TunableSetter.class);
+               
+               StartupConfig sc = new StartupConfig(streamUtil, cmdExec, 
taskManager, setter);
+               Parser p = new Parser(args.getArgs(), cyShutdown, cyVersion, 
sc,null);
+               sc.start();
+               //*/
+       }
+}

Added: 
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/Parser.java
===================================================================
--- 
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/Parser.java
                             (rev 0)
+++ 
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/Parser.java
     2012-05-11 06:52:50 UTC (rev 29222)
@@ -0,0 +1,109 @@
+package org.cytoscape.cmdline.headless.internal;
+
+import org.cytoscape.application.CyShutdown;
+import org.cytoscape.application.CyVersion;
+
+import java.util.Properties;
+
+import java.awt.Dimension;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+import org.apache.commons.cli.PosixParser;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Parser {
+       private static final Logger logger = 
LoggerFactory.getLogger(Parser.class);
+
+       private final String[] args;
+       private final Options options;
+       private final CyShutdown shutdown; 
+       private final CyVersion version; 
+       private final StartupConfig startupConfig; 
+       private final Properties props; 
+
+       public Parser(String[] args, CyShutdown shutdown, CyVersion version, 
StartupConfig startupConfig, Properties props) {
+               this.args = args;
+               this.shutdown = shutdown;
+               this.version = version;
+               this.startupConfig = startupConfig;
+               this.props = props;
+               options = initOptions(); 
+               parseCommandLine(args);
+       }
+
+       private Options initOptions() {
+               Options opt = new Options();
+
+               opt.addOption("h", "help", false, "Print this message.");
+               opt.addOption("v", "version", false, "Print the version 
number.");
+
+
+               opt.addOption(OptionBuilder
+                             .withLongOpt("command")
+                             .withDescription("Load a cytoscape command file.")
+                             
.withValueSeparator('\0').withArgName("file").hasArgs()
+                             .create("c"));
+
+               return opt;
+       }
+
+       private void parseCommandLine(String[] args) {
+
+               // try to parse the cmd line
+               CommandLineParser parser = new PosixParser();
+               CommandLine line = null;
+
+               // first load the simple exit options
+               try {
+                       line = parser.parse(options, args);
+               } catch (ParseException e) {
+                       logger.error("Parsing command line failed: " + 
e.getMessage());
+                       printHelp();
+                       props.setProperty("tempHideWelcomeScreen","true");
+                       shutdown.exit(1);
+                       return;
+               }
+               
+               if (line.hasOption("h")) {
+                       printHelp();
+                       shutdown.exit(0);
+                       props.setProperty("tempHideWelcomeScreen","true");
+                       return;
+               }
+
+               if (line.hasOption("v")) {
+                       logger.info("Cytoscape version: " + 
version.getVersion());
+                       System.out.println("Cytoscape version: " + 
version.getVersion());
+                       props.setProperty("tempHideWelcomeScreen","true");
+                       shutdown.exit(0);
+                       return;
+               }
+
+               // Either load the session ...
+               if (line.hasOption("c")) {
+                       //startupConfig.setSession(line.getOptionValue("s"));
+                       startupConfig.setCommandFile(line.getOptionValue("c"));
+
+               // ... or all the rest.
+               }
+       }
+
+       private void printHelp() {
+               HelpFormatter formatter = new HelpFormatter();
+               formatter.printHelp("cytoscape.{sh|bat} [OPTIONS]", options);
+       }
+}

Added: 
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/StartupConfig.java
===================================================================
--- 
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/StartupConfig.java
                              (rev 0)
+++ 
core3/impl/trunk/headless-cmdline-parser-impl/src/main/java/org/cytoscape/cmdline/headless/internal/StartupConfig.java
      2012-05-11 06:52:50 UTC (rev 29222)
@@ -0,0 +1,82 @@
+package org.cytoscape.cmdline.headless.internal;
+
+import org.cytoscape.io.util.StreamUtil;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.Task;
+import org.cytoscape.work.TaskFactory;
+import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.TaskManager;
+import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.TunableSetter;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import java.io.File;
+import java.util.ArrayList;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class StartupConfig {
+       private static final Logger logger = 
LoggerFactory.getLogger(StartupConfig.class);
+
+       private boolean taskStart = false;
+       private final TaskManager taskManager;
+       
+       private TaskFactory commandFactory;
+       private File commandFile;
+       private TunableSetter setter;
+       
+
+       public StartupConfig(StreamUtil streamUtil, TaskFactory commandFactory, 
TaskManager taskManager, TunableSetter setter)  {
+               this.commandFactory = commandFactory;
+               this.taskManager = taskManager;
+               this.setter = setter;
+       }
+
+       public void setCommandFile(String args) {
+               try{
+                       commandFile = new File(args);
+               } catch(Exception e) {
+                       logger.error(e.toString());
+               }
+               taskStart = true;
+       }
+
+       public void start() {
+
+               // Only proceed if we've specified tasks for execution
+               // on the command line.
+               if ( !taskStart )
+                       return;
+
+               ArrayList<TaskIterator> taskIteratorList = new 
ArrayList<TaskIterator>();
+                               
+               if ( commandFile != null )      {
+                       final Map<String, Object> temp = new HashMap<String, 
Object>();
+                       temp.put("file", commandFile);
+                       
taskIteratorList.add(setter.createTaskIterator(commandFactory.createTaskIterator(),temp));
+               }
+
+               Task initTask = new DummyTaks();
+               TaskIterator taskIterator = new 
TaskIterator(taskIteratorList.size(), initTask);
+               for (int i= taskIteratorList.size()-1; i>= 0 ; i--){
+                       TaskIterator ti = taskIteratorList.get(i);
+                       taskIterator.insertTasksAfter(initTask, ti);
+               }
+               
+               taskManager.execute(taskIterator);
+               
+       }
+       
+       private class DummyTaks extends AbstractTask{
+
+               @Override
+               public void run(TaskMonitor taskMonitor) throws Exception {
+                       //DO nothing it is a dummy tas just to initiate the 
iterator
+               }
+               
+       }
+}
+

-- 
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