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.