List of usage examples for org.apache.commons.exec CommandLine addArgument
public CommandLine addArgument(final String argument)
From source file:it.drwolf.ridire.index.cwb.CWBPatternSearcher.java
@SuppressWarnings("unchecked") public void test() { String query = "set AutoShow off;\nset ProgressBar off;\nset PrettyPrint off;\nset Context 5 words;\nset LeftKWICDelim '--%%%--';\nset RightKWICDelim '--%%%--';\nshow -cpos;\nA=\"e\";\ncat A 0 9 > \"/home/drwolf/ridirecleaner_tmp/res.tbl\";"; File temp = null;/*from w w w . j a v a 2s .c om*/ try { temp = File.createTempFile("ridireQ", ".query"); FileUtils.writeStringToFile(temp, query); Executor executor = new DefaultExecutor(); CommandLine commandLine = new CommandLine("/usr/local/cwb-3.4.3/bin/cqp"); commandLine.addArgument("-f").addArgument(temp.getAbsolutePath()).addArgument("-D") .addArgument("RIDIRE2").addArgument("-r").addArgument("/usr/local/share/cwb/registry/"); executor.execute(commandLine); File resFile = new File("/home/drwolf/ridirecleaner_tmp/res.tbl"); List<String> lines = FileUtils.readLines(resFile); this.resultsSimple = new ArrayList<CWBResult>(); for (String l : lines) { String[] res = l.split("--%%%--"); CWBResult item = new CWBResult(res[0], res[1], res[2], "", null, null); this.resultsSimple.add(item); } this.entityManager.createNativeQuery("drop table if exists pippo").executeUpdate(); this.entityManager.createNativeQuery( "CREATE TABLE `pippo` (`text_id` varchar(40) DEFAULT NULL,`beginPosition` int(11) DEFAULT NULL,`endPosition` int(11) DEFAULT NULL,`refnumber` bigint(20) NOT NULL,`dist` smallint(6) NOT NULL,`word` varchar(40) NOT NULL,`lemma` varchar(40) NOT NULL, `pos` varchar(40) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8") .executeUpdate(); File tmpAwk = File.createTempFile("ridireAWK", ".awk"); String awk = "BEGIN{ OFS = FS = \"\t\" } { print $3, $1, $2, NR-1, -5, $4 } { print $3, $1, $2, NR-1, -4, $5 } { print $3, $1, $2, NR-1, -3, $6 } { print $3, $1, $2, NR-1, -2, $7 } { print $3, $1, $2, NR-1, -1, $8 } { print $3, $1, $2, NR-1, 1, $9 } { print $3, $1, $2, NR-1, 2, $10 } { print $3, $1, $2, NR-1, 3, $11 } { print $3, $1, $2, NR-1, 4, $12 } { print $3, $1, $2, NR-1, 5, $13 } "; FileUtils.writeStringToFile(tmpAwk, awk); File tmpTabulate = File.createTempFile("ridireTAB", ".tab"); String tabulate = "set AutoShow off;\nset ProgressBar off;\nset PrettyPrint off;\nset Context 5 words;\nset LeftKWICDelim '--%%%--';\nset RightKWICDelim '--%%%--';\nshow -cpos;\nA=\"e\";\ntabulate A match, matchend, match text_id, match[-5] word, match[-4] word, match[-3] word, match[-2] word, match[-1] word, matchend[1] word, matchend[2] word, matchend[3] word, matchend[4] word, matchend[5] word " + "> \"| awk -f '" + tmpAwk.getAbsolutePath() + "' > '" + tmpTabulate.getAbsolutePath() + "'\";"; File tempSh = File.createTempFile("ridireSH", ".sh"); FileUtils.writeStringToFile(tempSh, tabulate); tempSh.setExecutable(true); executor = new DefaultExecutor(); executor.setExitValue(0); ExecuteWatchdog watchdog = new ExecuteWatchdog(CWBPatternSearcher.TIMEOUT); executor.setWatchdog(watchdog); commandLine = new CommandLine("/usr/local/cwb-3.4.3/bin/cqp"); commandLine.addArgument("-f").addArgument(tempSh.getAbsolutePath()).addArgument("-D") .addArgument("RIDIRE2").addArgument("-r").addArgument("/usr/local/share/cwb/registry/"); executor.execute(commandLine); FileUtils.deleteQuietly(tempSh); this.entityManager .createNativeQuery( "LOAD DATA LOCAL INFILE '" + tmpTabulate.getAbsolutePath() + "' INTO TABLE " + "pippo") .executeUpdate(); long n = ((Number) this.entityManager.createNativeQuery("select sum(freq) as somma from freq_forma_all") .getSingleResult()).longValue(); long r1 = ((Number) this.entityManager .createNativeQuery("select count(*) from pippo where dist between -3 and 3").getSingleResult()) .longValue(); String nativeQuery = "select pippo.word, count(pippo.word) as observed," + " (" + r1 + " * (freq_forma_all.freq) / " + n + ") as expected, sign(COUNT(pippo.word) - (" + r1 + " * (freq_forma_all.freq) / " + n + ")) * 2 * ( IF(COUNT(pippo.word) > 0, COUNT(pippo.word) * log(COUNT(pippo.word) / (" + r1 + " * (freq_forma_all.freq) / " + n + ")), 0) + IF((" + r1 + " - COUNT(pippo.word)) > 0, (" + r1 + " - COUNT(pippo.word)) * log((" + r1 + " - COUNT(pippo.word)) / (" + r1 + " * (" + n + " - (freq_forma_all.freq)) / " + n + ")), 0) + IF(((freq_forma_all.freq) - COUNT(pippo.word)) > 0, ((freq_forma_all.freq) - COUNT(pippo.word)) * log(((freq_forma_all.freq) - COUNT(pippo.word)) / (" + (n - r1) + " * (freq_forma_all.freq) / " + n + ")), 0) + IF((" + (n - r1) + " - ((freq_forma_all.freq) - COUNT(pippo.word))) > 0, (" + (n - r1) + " - ((freq_forma_all.freq) - COUNT(pippo.word))) * log((" + (n - r1) + " - ((freq_forma_all.freq) - COUNT(pippo.word))) / (" + (n - r1) + " * (" + n + " - (freq_forma_all.freq)) / " + n + ")), 0) ) as significance, freq_forma_all.freq, count(distinct(text_id)) as text_id_count from pippo, freq_forma_all where pippo.word = freq_forma_all.item and dist between -3 and 3 and freq_forma_all.freq >= 1 group by pippo.word having observed >= 1 order by significance desc LIMIT 0, 50 "; List<Object[]> res = this.entityManager.createNativeQuery(nativeQuery).getResultList(); for (Object[] r : res) { System.out.println(r[0] + "\t" + r[3]); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
From source file:fr.fastconnect.factory.tibco.bw.maven.AbstractBWMojo.java
/** * This calls a TIBCO binary.//from www. j a v a 2 s.c o m * * @param binary, the TIBCO binary file to execute * @param tras, the TRA files associated with the TIBCO binary * @param arguments, command-line arguments * @param workingDir, working directory from where the binary is launched * @param errorMsg, error message to display in case of a failure * @param fork, if true the chiild process will be detached from the caller * * @throws IOException * @throws MojoExecutionException */ protected int launchTIBCOBinary(File binary, List<File> tras, ArrayList<String> arguments, File workingDir, String errorMsg, boolean fork, boolean synchronous) throws IOException, MojoExecutionException { Integer result = 0; if (tras == null) { // no value specified as Mojo parameter, we use the .tra in the same directory as the binary String traPathFileName = binary.getAbsolutePath(); traPathFileName = FilenameUtils.removeExtension(traPathFileName); traPathFileName += ".tra"; tras = new ArrayList<File>(); tras.add(new File(traPathFileName)); } HashMap<File, File> trasMap = new HashMap<File, File>(); for (File tra : tras) { // copy of ".tra" file in the working directory File tmpTRAFile = new File(directory, tra.getName()); trasMap.put(tra, tmpTRAFile); copyFile(tra, tmpTRAFile); } for (File tra : trasMap.keySet()) { if (trasMap.containsKey(tibcoDesignerTRAPath) && ((tibcoBuildEARUseDesignerTRA && tra == tibcoBuildEARTRAPath) || (tibcoBuildLibraryUseDesignerTRA && tra == tibcoBuildLibraryTRAPath))) { if (tras.size() > 1) { ReplaceRegExp replaceRegExp = new ReplaceRegExp(); replaceRegExp.setFile(trasMap.get(tra)); replaceRegExp.setMatch("tibco.include.tra (.*/designer.tra)"); replaceRegExp.setReplace( "tibco.include.tra " + trasMap.get(tibcoDesignerTRAPath).toString().replace('\\', '/')); replaceRegExp.setByLine(true); replaceRegExp.execute(); } } if (tra == tibcoBuildEARTRAPath || tra == tibcoDesignerTRAPath || tra == tibcoBWEngineTRAPath) { // FIXME: should check more properly // append user.home at the end to force the use of custom Designer5.prefs PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(trasMap.get(tra), true))); out.println(""); out.println("java.property.user.home=" + directory.getAbsolutePath().replace("\\", "/")); out.close(); } } CommandLine cmdLine = new CommandLine(binary); for (String argument : arguments) { cmdLine.addArgument(argument); } getLog().debug("launchTIBCOBinary command line : " + cmdLine.toString()); getLog().debug("working dir : " + workingDir); DefaultExecutor executor = new DefaultExecutor(); executor.setWorkingDirectory(workingDir); if (timeOut > 0) { ExecuteWatchdog watchdog = new ExecuteWatchdog(timeOut * 1000); executor.setWatchdog(watchdog); } executor.setProcessDestroyer(new ShutdownHookProcessDestroyer()); ByteArrayOutputStream stdOutAndErr = new ByteArrayOutputStream(); executor.setStreamHandler(new PumpStreamHandler(stdOutAndErr)); if (fork) { CommandLauncher commandLauncher = CommandLauncherFactory.createVMLauncher(); commandLauncher.exec(cmdLine, null, workingDir); } else { try { if (synchronous) { result = executor.execute(cmdLine); } else { executor.execute(cmdLine, new DefaultExecuteResultHandler()); } } catch (ExecuteException e) { // TODO : grer erreurs des excutables (ventuellement parser les erreurs classiques) getLog().info(cmdLine.toString()); getLog().info(stdOutAndErr.toString()); getLog().info(result.toString()); throw new MojoExecutionException(errorMsg, e); } catch (IOException e) { throw new MojoExecutionException(e.getMessage(), e); } } return result; }
From source file:it.drwolf.ridire.index.cwb.CWBConcordancer.java
@SuppressWarnings("unchecked") public void test() { String query = "set AutoShow off;\nset ProgressBar off;\nset PrettyPrint off;\nset Context 5 words;\nset LeftKWICDelim '--%%%--';\nset RightKWICDelim '--%%%--';\nshow -cpos;\nA=\"e\";\ncat A 0 9 > \"/home/drwolf/ridirecleaner_tmp/res.tbl\";"; File temp = null;//from w ww. ja va 2 s . c om try { temp = File.createTempFile("ridireQ", ".query"); FileUtils.writeStringToFile(temp, query); Executor executor = new DefaultExecutor(); CommandLine commandLine = new CommandLine("/usr/local/cwb-3.4.3/bin/cqp"); commandLine.addArgument("-f").addArgument(temp.getAbsolutePath()).addArgument("-D") .addArgument("RIDIRE2").addArgument("-r").addArgument("/usr/local/share/cwb/registry/"); executor.execute(commandLine); File resFile = new File("/home/drwolf/ridirecleaner_tmp/res.tbl"); List<String> lines = FileUtils.readLines(resFile); this.resultsSimple = new ArrayList<CWBResult>(); for (String l : lines) { String[] res = l.split("--%%%--"); CWBResult item = new CWBResult(res[0], res[1], res[2], "", null, null); this.resultsSimple.add(item); } this.entityManager.createNativeQuery("drop table if exists pippo").executeUpdate(); this.entityManager.createNativeQuery( "CREATE TABLE `pippo` (`text_id` varchar(40) DEFAULT NULL,`beginPosition` int(11) DEFAULT NULL,`endPosition` int(11) DEFAULT NULL,`refnumber` bigint(20) NOT NULL,`dist` smallint(6) NOT NULL,`word` varchar(40) NOT NULL,`lemma` varchar(40) NOT NULL, `pos` varchar(40) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8") .executeUpdate(); File tmpAwk = File.createTempFile("ridireAWK", ".awk"); String awk = "BEGIN{ OFS = FS = \"\t\" } { print $3, $1, $2, NR-1, -5, $4 } { print $3, $1, $2, NR-1, -4, $5 } { print $3, $1, $2, NR-1, -3, $6 } { print $3, $1, $2, NR-1, -2, $7 } { print $3, $1, $2, NR-1, -1, $8 } { print $3, $1, $2, NR-1, 1, $9 } { print $3, $1, $2, NR-1, 2, $10 } { print $3, $1, $2, NR-1, 3, $11 } { print $3, $1, $2, NR-1, 4, $12 } { print $3, $1, $2, NR-1, 5, $13 } "; FileUtils.writeStringToFile(tmpAwk, awk); File tmpTabulate = File.createTempFile("ridireTAB", ".tab"); String tabulate = "set AutoShow off;\nset ProgressBar off;\nset PrettyPrint off;\nset Context 5 words;\nset LeftKWICDelim '--%%%--';\nset RightKWICDelim '--%%%--';\nshow -cpos;\nA=\"e\";\ntabulate A match, matchend, match text_id, match[-5] word, match[-4] word, match[-3] word, match[-2] word, match[-1] word, matchend[1] word, matchend[2] word, matchend[3] word, matchend[4] word, matchend[5] word " + "> \"| awk -f '" + tmpAwk.getAbsolutePath() + "' > '" + tmpTabulate.getAbsolutePath() + "'\";"; File tempSh = File.createTempFile("ridireSH", ".sh"); FileUtils.writeStringToFile(tempSh, tabulate); tempSh.setExecutable(true); executor = new DefaultExecutor(); executor.setExitValue(0); ExecuteWatchdog watchdog = new ExecuteWatchdog(CWBConcordancer.TIMEOUT); executor.setWatchdog(watchdog); commandLine = new CommandLine("/usr/local/cwb-3.4.3/bin/cqp"); commandLine.addArgument("-f").addArgument(tempSh.getAbsolutePath()).addArgument("-D") .addArgument("RIDIRE2").addArgument("-r").addArgument("/usr/local/share/cwb/registry/"); executor.execute(commandLine); FileUtils.deleteQuietly(tempSh); this.entityManager .createNativeQuery( "LOAD DATA LOCAL INFILE '" + tmpTabulate.getAbsolutePath() + "' INTO TABLE " + "pippo") .executeUpdate(); long n = ((Number) this.entityManager.createNativeQuery("select sum(freq) as somma from freq_forma_all") .getSingleResult()).longValue(); long r1 = ((Number) this.entityManager .createNativeQuery("select count(*) from pippo where dist between -3 and 3").getSingleResult()) .longValue(); String nativeQuery = "select pippo.word, count(pippo.word) as observed," + " (" + r1 + " * (freq_forma_all.freq) / " + n + ") as expected, sign(COUNT(pippo.word) - (" + r1 + " * (freq_forma_all.freq) / " + n + ")) * 2 * ( IF(COUNT(pippo.word) > 0, COUNT(pippo.word) * log(COUNT(pippo.word) / (" + r1 + " * (freq_forma_all.freq) / " + n + ")), 0) + IF((" + r1 + " - COUNT(pippo.word)) > 0, (" + r1 + " - COUNT(pippo.word)) * log((" + r1 + " - COUNT(pippo.word)) / (" + r1 + " * (" + n + " - (freq_forma_all.freq)) / " + n + ")), 0) + IF(((freq_forma_all.freq) - COUNT(pippo.word)) > 0, ((freq_forma_all.freq) - COUNT(pippo.word)) * log(((freq_forma_all.freq) - COUNT(pippo.word)) / (" + (n - r1) + " * (freq_forma_all.freq) / " + n + ")), 0) + IF((" + (n - r1) + " - ((freq_forma_all.freq) - COUNT(pippo.word))) > 0, (" + (n - r1) + " - ((freq_forma_all.freq) - COUNT(pippo.word))) * log((" + (n - r1) + " - ((freq_forma_all.freq) - COUNT(pippo.word))) / (" + (n - r1) + " * (" + n + " - (freq_forma_all.freq)) / " + n + ")), 0) ) as significance, freq_forma_all.freq, count(distinct(text_id)) as text_id_count from pippo, freq_forma_all where pippo.word = freq_forma_all.item and dist between -3 and 3 and freq_forma_all.freq >= 1 group by pippo.word having observed >= 1 order by significance desc LIMIT 0, 50 "; List<Object[]> res = this.entityManager.createNativeQuery(nativeQuery).getResultList(); for (Object[] r : res) { System.out.println(r[0] + "\t" + r[3]); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
From source file:com.github.stephenc.mongodb.maven.StartMongoMojo.java
public void execute() throws MojoExecutionException, MojoFailureException { if (skip) {// w ww . j a v a 2 s. co m getLog().info("Skipping mongodb: mongodb.skip==true"); return; } if (installation == null) { getLog().info("Using mongod from PATH"); } else { getLog().info("Using mongod installed in " + installation); } getLog().info("Using database root of " + databaseRoot); final Logger mongoLogger = Logger.getLogger("com.mongodb"); Level mongoLevel = mongoLogger.getLevel(); try { mongoLogger.setLevel(Level.SEVERE); MongoOptions opts = new MongoOptions(); opts.autoConnectRetry = false; opts.connectionsPerHost = 1; opts.connectTimeout = 50; opts.socketTimeout = 50; Mongo instance; try { instance = new Mongo(new ServerAddress("localhost", port), opts); List<String> databaseNames = instance.getDatabaseNames(); throw new MojoExecutionException("Port " + port + " is already running a MongoDb instance with the following databases " + databaseNames); } catch (MongoException.Network e) { // fine... no instance running } catch (MongoException e) { throw new MojoExecutionException("Port " + port + " is already running a MongoDb instance"); } catch (UnknownHostException e) { // ignore... localhost is always known! } } finally { mongoLogger.setLevel(mongoLevel); } CommandLine commandLine = null; if (installation != null && installation.isDirectory()) { File bin = new File(installation, "bin"); File exe = new File(bin, Os.isFamily(Os.FAMILY_WINDOWS) ? "mongod.exe" : "mongod"); if (exe.isFile()) { commandLine = new CommandLine(exe); } else { throw new MojoExecutionException("Could not find mongo executables in specified installation: " + installation + " expected to find " + exe + " but it does not exist."); } } if (commandLine == null) { commandLine = new CommandLine(Os.isFamily(Os.FAMILY_WINDOWS) ? "mongod.exe" : "mongod"); } if (databaseRoot.isFile()) { throw new MojoExecutionException("Database root " + databaseRoot + " is a file and not a directory"); } if (databaseRoot.isDirectory() && cleanDatabaseRoot) { getLog().info("Cleaning database root directory: " + databaseRoot); try { FileUtils.deleteDirectory(databaseRoot); } catch (IOException e) { throw new MojoExecutionException("Could not clean database root directory " + databaseRoot, e); } } if (!databaseRoot.isDirectory()) { getLog().debug("Creating database root directory: " + databaseRoot); if (!databaseRoot.mkdirs()) { throw new MojoExecutionException("Could not create database root directory " + databaseRoot); } } if (!verbose) { commandLine.addArgument("--quiet"); } commandLine.addArgument("--logpath"); commandLine.addArgument(logPath.getAbsolutePath()); if (logAppend) { commandLine.addArgument("--logappend"); } commandLine.addArgument(auth ? "--auth" : "--noauth"); commandLine.addArgument("--port"); commandLine.addArgument(Integer.toString(port)); commandLine.addArgument("--dbpath"); commandLine.addArgument(databaseRoot.getAbsolutePath()); if (additionalArguments != null) { for (String aa : additionalArguments) { commandLine.addArgument(aa); } } Executor exec = new DefaultExecutor(); DefaultExecuteResultHandler execHandler = new DefaultExecuteResultHandler(); exec.setWorkingDirectory(databaseRoot); ProcessObserver processObserver = new ProcessObserver(new ShutdownHookProcessDestroyer()); exec.setProcessDestroyer(processObserver); LogOutputStream stdout = new MavenLogOutputStream(getLog()); LogOutputStream stderr = new MavenLogOutputStream(getLog()); getLog().info("Executing command line: " + commandLine); exec.setStreamHandler(new PumpStreamHandler(stdout, stderr)); try { exec.execute(commandLine, execHandler); getLog().info("Waiting for MongoDB to start..."); long timeout = System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(120); mongoLevel = mongoLogger.getLevel(); try { mongoLogger.setLevel(Level.SEVERE); while (System.currentTimeMillis() < timeout && !execHandler.hasResult()) { MongoOptions opts = new MongoOptions(); opts.autoConnectRetry = false; opts.connectionsPerHost = 1; opts.connectTimeout = 250; opts.socketTimeout = 250; Mongo instance; try { instance = new Mongo(new ServerAddress("localhost", port), opts); List<String> databaseNames = instance.getDatabaseNames(); getLog().info("MongoDb started."); getLog().info("Databases: " + databaseNames); } catch (MongoException.Network e) { // ignore, wait and try again try { Thread.sleep(50); } catch (InterruptedException e1) { // ignore } continue; } catch (MongoException e) { getLog().info("MongoDb started."); getLog().info("Unable to list databases due to " + e.getMessage()); } break; } } finally { mongoLogger.setLevel(mongoLevel); } if (execHandler.hasResult()) { ExecuteException exception = execHandler.getException(); if (exception != null) { throw new MojoFailureException(exception.getMessage(), exception); } throw new MojoFailureException( "Command " + commandLine + " exited with exit code " + execHandler.getExitValue()); } Map pluginContext = session.getPluginContext(getPluginDescriptor(), project); pluginContext.put(ProcessObserver.class.getName() + ":" + Integer.toString(port), processObserver); } catch (IOException e) { throw new MojoExecutionException(e.getMessage(), e); } }
From source file:gov.nasa.jpl.magicdraw.projectUsageIntegrity.graph.SSCAEProjectUsageGraph.java
public BufferedImageFile convertDOTFile(@Nonnull File pugDOT, @Nonnull DOTImageFormat dotImageFormat) throws IIOException, IOException, InterruptedException { String dotCommand = ProjectUsageIntegrityPlugin.getInstance().getDOTexecutablePath(); if (null == dotCommand) return null; File pugTemp = pugDOT.getParentFile(); File pugImage = new File(pugTemp.getAbsoluteFile() + File.separator + project.getID() + "." + DOTImageFormatName.get(dotImageFormat)); if (pugImage.exists()) { pluginLog.info(String.format("%s - convertDOTFile - deleting previous image for '%s' : '%s'", pluginName, project.getName(), pugImage.getName())); pugImage.delete();//from ww w . jav a2 s . c o m } CommandLine cmdLine = new CommandLine(dotCommand); cmdLine.addArgument("-Tpng"); cmdLine.addArgument("-o"); cmdLine.addArgument(pugImage.getName()); cmdLine.addArgument(pugDOT.getName()); pluginLog.info(String.format("%s - convertDOTgraph - converting gv to image for '%s'", pluginName, project.getName())); DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler(); ExecuteWatchdog watchdog = new ExecuteWatchdog(60 * 1000); // consider '0' exit value as success. Executor executor = new DefaultExecutor(); executor.setExitValue(0); executor.setWatchdog(watchdog); executor.setWorkingDirectory(pugTemp); executor.execute(cmdLine, resultHandler); resultHandler.waitFor(); if (!executor.isFailure(resultHandler.getExitValue())) { pluginLog.info(String.format("%s - convertDOTgraph - reading image for '%s' from: '%s'", pluginName, project.getName(), pugImage.getName())); BufferedImageFile imageFile = new BufferedImageFile(pugImage); pluginLog.info( String.format("%s - convertDOTgraph - got image for '%s'", pluginName, project.getName())); return imageFile; } return null; }
From source file:gov.nasa.jpl.magicdraw.projectUsageIntegrity.graph.SSCAEProjectUsageGraph.java
/** * @param pugDOT gv file/*w w w. j a v a2 s . c om*/ * @return true if the graphviz application was opened successfully for the gv file. * @throws IIOException * @throws IOException * @throws InterruptedException */ public boolean openDOTFileWithGraphViz(@Nonnull File pugDOT) throws IIOException, IOException, InterruptedException { String graphvizApp = ProjectUsageIntegrityPlugin.getInstance().getGraphvizApplicationPath(); if (null == graphvizApp) return false; File pugTemp = pugDOT.getParentFile(); CommandLine cmdLine; switch (SSCAEProjectUsageIntegrityOptions.getCurrentPlatform()) { case LINUX: cmdLine = new CommandLine(graphvizApp); break; case MACOSX: cmdLine = new CommandLine("/usr/bin/open"); cmdLine.addArgument("-a"); cmdLine.addArgument(graphvizApp); break; case WINDOWS: cmdLine = new CommandLine("cmd"); cmdLine.addArgument("/c"); cmdLine.addArgument("start"); cmdLine.addArgument(graphvizApp); break; default: return false; } cmdLine.addArgument(pugDOT.getName()); pluginLog.info(String.format("%s - openDOTFileWithGraphViz - opening DOT file for project: '%s'", pluginName, project.getName())); DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler(); ExecuteWatchdog watchdog = new ExecuteWatchdog(60 * 1000); // consider '0' exit value as success. Executor executor = new DefaultExecutor(); executor.setExitValue(0); executor.setWatchdog(watchdog); executor.setWorkingDirectory(pugTemp); executor.execute(cmdLine, resultHandler); resultHandler.waitFor(); if (executor.isFailure(resultHandler.getExitValue())) { pluginLog.error(String.format( "%s - openDOTFileWithGraphViz - error while opening DOT file for project '%s' from: '%s'", pluginName, project.getName(), pugDOT.getAbsolutePath()), resultHandler.getException()); return false; } pluginLog.info(String.format("%s - openDOTFileWithGraphViz - opened DOT file for project '%s' from: '%s'", pluginName, project.getName(), pugDOT.getAbsolutePath())); return true; }
From source file:net.sourceforge.vulcan.git.ProcessInvoker.java
public InvocationResult invoke(String command, File workDir, String... args) throws IOException { CommandLine cmdLine = new CommandLine(executable); cmdLine.addArgument(command); cmdLine.addArgument("--noninteractive"); cmdLine.addArguments(args, false);/*from w w w . j a v a 2s . c om*/ err = new ByteArrayOutputStream(); executor.setExitValues(new int[] { 0, 1 }); executor.setWorkingDirectory(workDir); executor.setStreamHandler(new MyPumpStreamHandler(out, err)); LOG.debug("Executing " + cmdLine); try { exitCode = executor.execute(cmdLine); return new InvocationResult(isOutputRedirected() ? null : out.toString(), err.toString(), exitCode == 0); } catch (ExecuteException e) { exitCode = e.getExitValue(); throw e; } }
From source file:net.sourceforge.vulcan.git.ProcessInvokerTest.java
private InvocationResult doInvokeTest() throws ExecuteException, IOException { CommandLine commandLine = new CommandLine(executable); commandLine.addArgument("help"); commandLine.addArgument("--noninteractive"); commandLine.addArgument("arg 1", false); commandLine.addArgument("arg 2", false); executor.setExitValues(reflectionEq(new int[] { 0, 1 })); executor.setWorkingDirectory(new File(".")); executor.setStreamHandler((ExecuteStreamHandler) notNull()); expectLastCall().andAnswer(captureStreamHandler); expect(executor.execute(stringEq(commandLine))).andAnswer(executeAnswer); replay();// ww w . j a v a2 s. co m if (outputStream != null) { invoker.setOutputStream(outputStream); } invoker.setExecutable(executable); result = invoker.invoke("help", new File("."), "arg 1", "arg 2"); verify(); return result; }
From source file:nl.tudelft.graphalytics.graphlab.AlgorithmTest.java
protected boolean executeTestScript(File scriptFile, String graphFile, String outputFile) { if (!scriptFile.exists()) { throw new IllegalArgumentException("Cannot find GraphLab Test script: " + scriptFile.getAbsolutePath()); }//w w w . j av a2s . c o m CommandLine commandLine = new CommandLine("python2"); commandLine.addArgument(scriptFile.getAbsolutePath()); commandLine.addArgument(graphFile); commandLine.addArgument(outputFile); // Set the executor of the command, if desired this can be changed to a custom implementation DefaultExecutor executor = new DefaultExecutor(); // Set the OutputStream to enable printing the output of the algorithm ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); executor.setStreamHandler(new PumpStreamHandler(outputStream)); try { // Execute the actual command and store the return code executor.execute(commandLine); // Print the command output System.out.println(outputStream.toString()); return true; } catch (IOException e) { // Catch the exception thrown when the process exits with result != 0 or another IOException occurs System.out.println(outputStream.toString()); return false; } }
From source file:nl.tudelft.graphalytics.graphlab.GraphLabPlatform.java
/** * Execute the python script belonging to a given AlgorithmType with the given graph location and extra arguments * and return the Process created by the Java Runtime. * @param job The GraphLab job to execute * @return The exit code of the python subprocess * @throws IOException When an I/O error occurs *//*from w ww . ja va2 s . co m*/ private int executePythonJob(GraphLabJob job) throws IOException { LOG.entry(job); if (job == null) { LOG.warn("GraphLab job set to execute is null, skipping execution."); return LOG.exit(-1); } // Extract the script resource file File scriptFile = extractFile(job.getPythonFile()); if (scriptFile == null) { return LOG.exit(-1); } // Construct the commandline execution pattern starting with the python executable CommandLine commandLine = new CommandLine("python2"); // Add the arguments that are the same for all jobs commandLine.addArgument(scriptFile.getAbsolutePath()); commandLine.addArgument("--target"); commandLine.addArgument(TARGET); if (USE_HADOOP) { commandLine.addArgument("--virtual-cores"); commandLine.addArgument(VIRTUAL_CORES, false); commandLine.addArgument("--heap-size"); commandLine.addArgument(HEAP_SIZE, false); } // Add the save_graph_result parameter is true (default false, but can be set to true for automated testing) if (saveGraphResult) { commandLine.addArgument("--save-result"); } // Let the job format it's arguments and add it to the commandline commandLine.addArguments(job.formatParametersAsStrings(), false); // Set the executor of the command, if desired this can be changed to a custom implementation DefaultExecutor executor = new DefaultExecutor(); // Set the OutputStream to enable printing the output of the algorithm ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); executor.setStreamHandler(new PumpStreamHandler(outputStream)); int result; try { // Execute the actual command and store the return code result = executor.execute(commandLine); // Print the command output System.out.println(outputStream.toString()); } catch (ExecuteException e) { // Catch the exception thrown when the process exits with result != 0 System.out.println(outputStream.toString()); LOG.catching(Level.ERROR, e); return LOG.exit(e.getExitValue()); } return LOG.exit(result); }