List of usage examples for java.lang Runtime exec
public Process exec(String cmdarray[]) throws IOException
From source file:com.netxforge.oss2.core.utilsII.ExecRunner.java
/** * The <code>exec(String, PrintWriter, PrintWriter)</code> method runs a * process inside of a watched thread. It returns the client's exit code and * feeds its STDOUT and STDERR to the passed-in streams. * * @return The command's return code/*w w w . j a va 2 s . c o m*/ * @param command * The program or command to run * @param stdoutWriter * java.io.PrintWriter * @param stderrWriter * java.io.PrintWriter * @throws java.io.IOException * thrown if a problem occurs * @throws java.lang.InterruptedException * thrown if a problem occurs */ public int exec(final String command, final PrintWriter stdoutWriter, final PrintWriter stderrWriter) throws IOException, InterruptedException { // Default exit value is non-zero to indicate a problem. int exitVal = 1; // ////////////////////////////////////////////////////////////// final Runtime rt = Runtime.getRuntime(); Process proc; String[] cmd = null; // First get the start time & calculate comparison numbers final Date startTime = new Date(); final long startTimeMs = startTime.getTime(); final long maxTimeMs = startTimeMs + (maxRunTimeSecs * 1000); // ////////////////////////////////////////////////////////////// // First determine the OS to build the right command string final String osName = System.getProperty("os.name"); if (osName.equals("Windows 95") || osName.equals("Windows 98") || osName.equals("Windows ME")) { cmd = new String[3]; cmd[0] = WINDOWS_9X_ME_COMMAND_1; cmd[1] = WINDOWS_9X_ME_COMMAND_2; cmd[2] = command; } else if (osName.contains("Windows")) { // "Windows NT", "Windows 2000", etc. cmd = new String[3]; cmd[0] = WINDOWS_NT_2000_COMMAND_1; cmd[1] = WINDOWS_NT_2000_COMMAND_2; cmd[2] = command; } else { // Linux (and probably other *nixes) prefers to be called // with each argument supplied separately, so we first // Tokenize it across spaces as the boundary. final StringTokenizer st = new StringTokenizer(command, " "); cmd = new String[st.countTokens()]; int token = 0; while (st.hasMoreTokens()) { String tokenString = st.nextToken(); cmd[token++] = tokenString; } } // Execute the command and start the two output gobblers if (cmd != null && cmd.length > 0) { proc = rt.exec(cmd); } else { throw new IOException("Insufficient commands!"); } final StreamGobbler outputGobbler = new StreamGobbler(proc.getInputStream(), stdoutWriter); final StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(), stderrWriter); outputGobbler.start(); errorGobbler.start(); // Wait for the program to finish running and return the // exit value obtained from the executable while (true) { try { exitVal = proc.exitValue(); break; } catch (final IllegalThreadStateException e) { // If we get this exception, then the process isn't // done executing and we determine if our time is up. if (maxRunTimeSecs > 0) { final Date endTime = new Date(); final long endTimeMs = endTime.getTime(); if (endTimeMs > maxTimeMs) { // Time's up - kill the process and the gobblers and // return proc.destroy(); maxRunTimeExceeded = true; stderrWriter.println(MAX_RUN_TIME_EXCEEDED_STRING); outputGobbler.quit(); errorGobbler.quit(); return exitVal; } else { // Time is not up yet so wait 100 ms before testing // again Thread.sleep(POLL_DELAY_MS); } } } } // ////////////////////////////////////////////////////////////// // Wait for output gobblers to finish forwarding the output while (outputGobbler.isAlive() || errorGobbler.isAlive()) { } // ////////////////////////////////////////////////////////////// // All done, flush the streams and return the exit value stdoutWriter.flush(); stderrWriter.flush(); return exitVal; }
From source file:edu.harvard.iq.dvn.ingest.dsb.impl.DvnRDataAnalysisServiceImpl.java
public void setupWorkingDirectories(RConnection c) { try {// www .j a va 2 s . c o m // set up the working directory // (we only need one; there used to be a separate temp directory, // webtempdir, for files that we served over a direct http // connection - but that has been eliminated many releases ago). // The chmod lines are almost certainly not needed anymore. Again, // this is a legacy leftover from the times when the results were // served by httpd; which was running as a separate process, and // usually under a different PID - hence it was necessary to ensure // that it had read (and write?) access to the directory. // wrkdir String checkWrkDr = "if (file_test('-d', '" + wrkdir + "')) {Sys.chmod('" + wrkdir + "', mode = '0777'); } else {dir.create('" + wrkdir + "', showWarnings = FALSE, recursive = TRUE);Sys.chmod('" + wrkdir + "', mode = '0777');}"; dbgLog.fine("w permission:wrkdir=" + checkWrkDr); c.voidEval(checkWrkDr); } catch (RserveException rse) { rse.printStackTrace(); } // Now test for the temporary directory on the application side: try { File tempDir = new File(TEMP_DIR, "DVN"); if (!tempDir.exists()) { tempDir.mkdir(); } } catch (Exception ex) { ex.printStackTrace(); } // and the link to it from the docroot directory: Properties p = System.getProperties(); String domainRoot = p.getProperty("com.sun.aas.instanceRoot"); dbgLog.fine("PROPERTY: com.sun.aas.instanceRoot=" + domainRoot); String tempLocName = domainRoot + "/docroot/temp"; File tempLoc = new File(tempLocName); if (!tempLoc.exists()) { String createSymLink = "/bin/ln -s " + TEMP_DIR + "/DVN " + tempLocName; dbgLog.info("attempting to execute " + createSymLink); try { Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(createSymLink); int exitValue = process.waitFor(); } catch (Exception e) { dbgLog.info("failed to create symlink!"); e.printStackTrace(); } } else { dbgLog.fine("link " + tempLoc + " exists"); } }
From source file:edu.harvard.hul.ois.pds.ws.PDSWebService.java
/** * Process HTTP GET request.//from w w w. j a v a2 s .c o m */ public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, FileNotFoundException { HttpServletRequestWrapper wrapper = new HttpServletRequestWrapper(req); //Get parameters from the URL String sOp = req.getParameter("op"); char op = 'f'; if (sOp != null) { op = sOp.charAt(0); } String uri = req.getRequestURI(); uri = uri.substring(1); String[] uriElements = uri.split("/"); Integer id = null; String action = null; if (uriElements.length > 2) { action = uriElements[1]; if (action.equalsIgnoreCase(API_SEARCH)) //go straight to fts { String docParam; if ((uriElements[2]).equalsIgnoreCase("global")) { docParam = ""; } else { try { id = new Integer(uriElements[2]); } catch (Exception e) { printError(req, res, "Invalid DRS ID", null); return; } docParam = "G=" + id + "&"; } String format = ""; format = req.getParameter("F"); if (format != null) { format = "&F=" + format; } else { format = "&F=M"; } String range = ""; String advparams = ""; range = req.getParameter("B"); if (range != null) { range = "&B=" + range; } else { range = ""; } String dataQualification = ""; dataQualification = req.getParameter("D"); if (dataQualification != null) { dataQualification = "&D=" + dataQualification; } else { dataQualification = ""; } String contextScope = ""; contextScope = req.getParameter("C"); if (contextScope != null) { contextScope = "&C=" + contextScope; } else { contextScope = ""; } String jumplistRefs = ""; jumplistRefs = req.getParameter("J"); if (jumplistRefs != null) { jumplistRefs = "&J=" + jumplistRefs; } else { jumplistRefs = ""; } String lowerDate = ""; lowerDate = req.getParameter("L"); if (lowerDate != null) { lowerDate = "&L=" + lowerDate; } else { lowerDate = ""; } String upperDate = ""; upperDate = req.getParameter("U"); if (upperDate != null) { upperDate = "&U=" + upperDate; } else { upperDate = ""; } String resultsize = ""; resultsize = req.getParameter("P"); if (resultsize != null) { resultsize = "&P=" + resultsize; } else { resultsize = ""; } advparams = resultsize + range + dataQualification + contextScope + jumplistRefs + lowerDate + upperDate; //Log the search page request WebAppLogMessage message = new WebAppLogMessage(req, true); message.setContext("search"); message.setMessage("Search Request: " + id); logger.info(message); String Query = req.getParameter("Q"); if (Query == null) { Query = ""; } try { String queryString = new String("?" + docParam + "Q=" + Query + format + advparams); wrapper.setAttribute("searchurl", ftsUrl + queryString); RequestDispatcher rd = req.getRequestDispatcher("/api-search.jsp?"); rd.forward(req, res); //res.sendRedirect(ftsUrl+queryString); return; } catch (Exception e) { message = new WebAppLogMessage(req, true); message.setContext("main"); Throwable root = e; if (e instanceof ServletException) { ServletException se = (ServletException) e; Throwable t = se.getRootCause(); if (t != null) { logger.error(message, t); root = t; } else { logger.error(message, se); } } else { logger.error(message, e); } printError(req, res, "PDS-WS Error", root); } } try { id = new Integer(uriElements[2]); } catch (Exception e) { } } if (id == null) { printError(req, res, "Invalid DRS ID", null); return; } String n = req.getParameter("n"); if (n == null) { n = "1"; } else if (n.equals("")) { printError(req, res, "Page not found", null); return; } //Set scaling factors. s overrides imagesize. Image size select //boxes are based on S. String scale = req.getParameter("s"); String imagesize = req.getParameter("imagesize"); if (scale == null || !(scale.equals("2") || scale.equals("4") || scale.equals("6") || scale.equals("8"))) { if (imagesize != null && imagesize.equals("300")) { scale = "8"; } else if (imagesize != null && imagesize.equals("600")) { scale = "6"; } else if (imagesize != null && imagesize.equals("1200")) { scale = "4"; } else if (imagesize != null && imagesize.equals("2400")) { scale = "2"; } else { scale = "4"; } } if (imagesize == null || !(imagesize.equals("300") || imagesize.equals("600") || imagesize.equals("1200") || imagesize.equals("2400"))) { if (scale.equals("2")) { imagesize = "2400"; } else if (scale.equals("4")) { imagesize = "1200"; } else if (scale.equals("6")) { imagesize = "600"; } else if (scale.equals("8")) { imagesize = "300"; } } String jp2Rotate = req.getParameter("rotation"); if (jp2Rotate == null || jp2Rotate.equals("360") || jp2Rotate.equals("-360")) { jp2Rotate = "0"; } else if (jp2Rotate.equals("-90")) { jp2Rotate = "270"; } String jp2x = req.getParameter("jp2x"); if (jp2x == null) { jp2x = "0"; } String jp2y = req.getParameter("jp2y"); if (jp2y == null) { jp2y = "0"; } String jp2Res = req.getParameter("jp2Res"); String bbx1 = req.getParameter("bbx1"); if (bbx1 == null) { bbx1 = "0"; } String bby1 = req.getParameter("bby1"); if (bby1 == null) { bby1 = "0"; } String bbx2 = req.getParameter("bbx2"); if (bbx2 == null) { bbx2 = "0"; } String bby2 = req.getParameter("bby2"); if (bby2 == null) { bby2 = "0"; } String printThumbnails = req.getParameter("printThumbnails"); if (printThumbnails == null) { printThumbnails = "no"; } wrapper.setAttribute("printThumbnails", printThumbnails); //cg debug System.out.println("debug1- imagesize: " + imagesize + " jp2Res: " + jp2Res + " scale: " + scale); String clickX = req.getParameter("thumbnail.x"); if (clickX != null) { wrapper.setAttribute("clickX", clickX); } else { clickX = (String) wrapper.getAttribute("clickX"); } String clickY = req.getParameter("thumbnail.y"); if (clickX != null) { wrapper.setAttribute("clickY", clickY); } else { clickY = (String) wrapper.getAttribute("clickY"); } //cg debug System.out.println("debug1- thumbnail.x: " + clickX); System.out.println("debug1- X: " + req.getParameter("x")); System.out.println("debug1- thumbnail.y: " + clickY); System.out.println("debug1- Y: " + req.getParameter("y")); /********************************************************** * Create new, or use existing Session **********************************************************/ HttpSession session = req.getSession(true); PdsUserState pdsUser = (PdsUserState) session.getAttribute("PdsUser"); CacheItem item = memcache.getObject(pdsUser.getMeta()); InternalMets mets = item.getMets(); //compare request header if-modified-since with METS DRS last modified //TODO This is temporarily disabled to allow crawlers access to updated // content that they may have already indexed /* Date metsLastModified = item.getLastModifiedDate(); try { long header = req.getDateHeader("If-Modified-Since"); if (header > 0) { Date headerDate = new Date(header); if (metsLastModified.before(headerDate)) { res.setStatus(HttpServletResponse.SC_NOT_MODIFIED); return; } } } catch (Exception e) { e.printStackTrace(); // we just ignore this } */ //Set the last modified response value //TODO Warning - this causes browsers to have problems refreshing the // navigation tree html. Possibly this can be set for the content and // citation frames? //res.setDateHeader("Last-Modified", metsLastModified.getTime()); /****************************************************************************** * Get the flags for if doing a page number (p) or sequence number(s) page find * If p is null, look up sequence, if it is not null, look up with page number. * if getContentPage returns null, the page does not exist or an invalid number was * entered. ******************************************************************************/ PageDiv pdiv = null; try { String pageMode = req.getParameter("P"); if (pageMode == null || !pageMode.equals("p")) { pageMode = "s"; } //if a page number search trim n if (pageMode.equals("p")) { n = n.replace(']', ' '); n = n.replace('[', ' '); n = n.trim(); } pdiv = mets.getContentPage(n, pageMode); //if pdiv is a jpeg2000 and res is null then calculate default res value //SET DEFAULT SIZE IF RES NOT SET if (jp2Res == null && pdiv.getDefaultImageMimeType().equals("image/jp2")) { //judaica fix int maxJP2sz = getMaxJP2DisplaySize(pdiv.getDefaultImageID()); if ((maxJP2sz > 300) && (maxJP2sz < 600)) { maxJP2sz = 300; scale = "8"; } else if ((maxJP2sz > 600) && (maxJP2sz < 1200)) { maxJP2sz = 600; scale = "6"; } else if ((maxJP2sz > 1200) && (maxJP2sz < 2400)) { maxJP2sz = 1200; scale = "4"; } else if (maxJP2sz > 2400) { maxJP2sz = 2400; scale = "2"; } String origImagesize = imagesize; if (Integer.parseInt(imagesize) > maxJP2sz) { imagesize = Integer.toString(maxJP2sz); } String filepath = getFilePath(pdiv.getDefaultImageID()); Jpeg2000 jp2 = new Jpeg2000(new File(filepath)); int newRes = jp2.findResolutionLevelContainedBy(Integer.parseInt(origImagesize), Integer.parseInt(origImagesize)); //convert Res to a scaling decimal if (newRes == 1) jp2Res = "1"; else if (newRes == 2) jp2Res = ".5"; else if (newRes == 3) jp2Res = ".25"; else if (newRes == 4) jp2Res = ".125"; else if (newRes == 5) jp2Res = ".0625"; else if (newRes > 5) { jp2Res = "0.625"; } //recalculate newRes if judaica maxres has changed //the actual imagesize if (!imagesize.equals(origImagesize)) { int oldImgsize = Integer.parseInt(origImagesize); int newImgsize = Integer.parseInt(imagesize); float factor = (oldImgsize / newImgsize) / 2; System.out.println("new factor: " + Double.toString(factor)); jp2Res = Double.toString(Double.parseDouble(jp2Res) / factor); } //cg debug //System.out.println("debug2- newRes: " + newRes + " jp2Res is now: " + jp2Res + " scale: " + scale ); } if (pdiv != null && pageMode.equals("p")) { n = String.valueOf(pdiv.getOrder()); //to keep n in the address bar current, redirect to new URL with equivalent n value of page number res.sendRedirect(pdsUrl + "/view/" + id + "?n=" + n + "&s=" + scale + (imagesize != null ? "&imagesize=" + imagesize : "") + (jp2Res != null ? "&jp2Res=" + jp2Res : "") + (jp2Rotate != null ? "&rotation=" + jp2Rotate : "")); return; } } catch (Exception e) { WebAppLogMessage message = new WebAppLogMessage(); message.setContext("find page"); message.setMessage("invalid page number"); message.processSessionRequest(req); logger.error(message, e); } if (pdiv == null) { printError(req, res, "Page not found", null); return; } /********************************************************** * Process appropriately based on the op variable. **********************************************************/ try { /************************* * If image is a JP2 and this is not a frame request, figure * out x,y to create bounding box on thumbnail ***********************/ if (pdiv.getDefaultImageMimeType().equals("image/jp2") && (op != OP_CITATION && op != OP_CONTENT && op != OP_NAVIGATION)) { //judaica fix int maxJP2size = getMaxJP2DisplaySize(pdiv.getDefaultImageID()); if ((maxJP2size > 300) && (maxJP2size < 600)) { maxJP2size = 300; scale = "8"; } else if ((maxJP2size > 600) && (maxJP2size < 1200)) { maxJP2size = 600; scale = "6"; } else if ((maxJP2size > 1200) && (maxJP2size < 2400)) { maxJP2size = 1200; scale = "4"; } else if (maxJP2size > 2400) { maxJP2size = 2400; scale = "2"; } if (Integer.parseInt(imagesize) > maxJP2size) { imagesize = Integer.toString(maxJP2size); } String jp2Action = req.getParameter("action"); if (jp2Action == null) { jp2Action = "noaction"; } int vHeight = Integer.parseInt(imagesize); int vWidth = Integer.parseInt(imagesize); double imgres = Double.parseDouble(jp2Res); //int tWidth = Integer.parseInt(req.getParameter("thumbwidth")); //int tHeight = Integer.parseInt(req.getParameter("thumbheight")); String filepath = getFilePath(pdiv.getDefaultImageID()); Coordinate dimension = new Coordinate(); int x = Integer.parseInt(jp2x); int y = Integer.parseInt(jp2y); Jpeg2000 jp2 = new Jpeg2000(new File(filepath)); //String clickX = req.getParameter("thumbnail.x"); //String clickY = req.getParameter("thumbnail.y"); int thumbX = -1; int thumbY = -1; if (clickX != null && clickY != null) { thumbX = Integer.parseInt(clickX); thumbY = Integer.parseInt(clickY); } if (jp2Action.equals("noaction")) { thumbX = 0; thumbY = 0; } else if (jp2Action.equals("jp2pan")) { x = thumbX; y = thumbY; //panThumbnail is passed thumbnail scale coordinates. It returns //thumbnail scale coordinates so the new X and Y do not need to be //extracted from the method return object dimension = UIUtil.panThumbnail(vHeight, vWidth, x, y, imgres, jp2, jp2Rotate); } else if (jp2Action.equals("jp2zoomin")) { dimension = UIUtil.zoom(vHeight, vWidth, x, y, imgres, jp2, true, jp2Rotate); Coordinate c = UIUtil.convertFullSizeCoordate(jp2, dimension.getX(), dimension.getY(), vWidth, vHeight, imgres, jp2Rotate); thumbX = c.getX(); thumbY = c.getY(); } else if (jp2Action.equals("jp2zoomout")) { dimension = UIUtil.zoom(vHeight, vWidth, x, y, imgres, jp2, false, jp2Rotate); Coordinate c = UIUtil.convertFullSizeCoordate(jp2, dimension.getX(), dimension.getY(), vWidth, vHeight, imgres, jp2Rotate); thumbX = c.getX(); thumbY = c.getY(); } else if (jp2Action.equals("jp2resize")) { String pres = req.getParameter("pres"); double pvRes = Double.valueOf(pres); String previousWidth = req.getParameter("pvWidth"); String previousHeight = req.getParameter("pvHeight"); int pvWidth = Integer.parseInt(previousWidth); int pvHeight = Integer.parseInt(previousHeight); dimension = UIUtil.centerOnResize(vHeight, vWidth, pvHeight, pvWidth, pvRes, x, y, imgres, jp2, jp2Rotate); Coordinate c = UIUtil.convertFullSizeCoordate(jp2, dimension.getX(), dimension.getY(), vWidth, vHeight, imgres, jp2Rotate); thumbX = c.getX(); thumbY = c.getY(); } else if (jp2Action.equals("jp2rotate")) { dimension = UIUtil.panThumbnail(vHeight, vWidth, 0, 0, imgres, jp2, jp2Rotate); thumbX = 0; thumbY = 0; } jp2x = String.valueOf(dimension.getX()); jp2y = String.valueOf(dimension.getY()); req.setAttribute("jp2x", jp2x); req.setAttribute("jp2y", jp2y); //set up coordinates to draw bounding box on thumbnail CoordinatePair bbCoors = UIUtil.getBoundingBoxDimensions(jp2, imgres, vWidth, vHeight, thumbX, thumbY, jp2Rotate); bbx1 = Integer.toString(bbCoors.getPoint1().getX()); bby1 = Integer.toString(bbCoors.getPoint1().getY()); bbx2 = Integer.toString(bbCoors.getPoint2().getX()); bby2 = Integer.toString(bbCoors.getPoint2().getY()); } wrapper.setAttribute("cite", mets.getCitationDiv()); wrapper.setAttribute("pdiv", pdiv); /*if(action.equalsIgnoreCase(ACTION_VIEW) || action.equalsIgnoreCase(ACTION_VIEW_TEXT)) { int imageId = pdiv.getDefaultImageID(); wrapper.setAttribute("lastPage",String.valueOf(mets.getCitationDiv().getLastPageNumber())); wrapper.setAttribute("imageId",String.valueOf(imageId)); wrapper.setAttribute("id",id); wrapper.setAttribute("n",n); wrapper.setAttribute("s",scale); wrapper.setAttribute("mime",pdiv.getDefaultImageMimeType()); wrapper.setAttribute("filepath",getFilePath(imageId)); wrapper.setAttribute("idsUrl",idsUrl); wrapper.setAttribute("cache",cache); wrapper.setAttribute("cacheUrl",pdsUrl+cacheUrl); wrapper.setAttribute("jp2Rotate",jp2Rotate); wrapper.setAttribute("jp2Res",jp2Res); wrapper.setAttribute("jp2x",jp2x); wrapper.setAttribute("jp2y",jp2y); wrapper.setAttribute("imagesize",imagesize); wrapper.setAttribute("bbx1",bbx1); wrapper.setAttribute("bby1",bby1); wrapper.setAttribute("bbx2",bbx2); wrapper.setAttribute("bby2",bby2); wrapper.setAttribute("pdsUrl",pdsUrl); wrapper.setAttribute("ids",idsUrl); wrapper.setAttribute("action",action); if (op == OP_CITATION) { if( pdiv.getDefaultImageMimeType().equals("image/jp2") ) { //get max res for biling code wrapper.setAttribute("maxjp2res", Integer.toString(getMaxJP2DisplaySize(pdiv.getDefaultImageID())) ); } RequestDispatcher rd = req.getRequestDispatcher("/citation.jsp?"); rd.forward(req,res); } else if (op == OP_CONTENT) { //get paths of the ocr files ArrayList<String> ocrPaths = new ArrayList<String>(); for(int i=0;i<pdiv.getOcrID().size();i++) { Integer ocr = (Integer) pdiv.getOcrID().get(i); ocrPaths.add(getFilePath(ocr.intValue())); } wrapper.setAttribute("ocrList",ocrPaths); //if image is a tiff, convert to gif if(pdiv.getDefaultImageMimeType().equals("image/tiff")) { String delv = cache + "/" + imageId + "-" + scale + ".gif"; File file = new File (delv); if (!file.exists ()) { Runtime rt = Runtime.getRuntime(); String tiffpath = getFilePath(imageId); String exec = giffy + " id=" + imageId + " path=" + tiffpath.substring(0,tiffpath.lastIndexOf("/")) + " scale=" + scale + " cache=" + cache; Process child = rt.exec (exec); child.waitFor(); child.destroy(); } } wrapper.setAttribute("caption",item.getImageCaption()); RequestDispatcher rd = req.getRequestDispatcher("/content.jsp?"); rd.forward(req,res); } else if (op == OP_NAVIGATION) { String treeIndex = req.getParameter("index"); String treeAction = req.getParameter("treeaction"); if (treeAction != null) { if (treeAction.equalsIgnoreCase("expand")) { pdsUser.setExpandedNodes(id,item.getAllNodesIndices()); } else if (treeAction.equalsIgnoreCase("collapse")) { pdsUser.setExpandedNodes(id,new ArrayList<String>()); } } if(treeIndex != null) { pdsUser.toggleNode(id,treeIndex); } wrapper.setAttribute("pdsUser",pdsUser); wrapper.setAttribute("maxThumbnails", maxThumbnails); //wrapper.setAttribute("toggleIndex",toggleIndex); //wrapper.setAttribute("treeaction",treeAction); RequestDispatcher rd = req.getRequestDispatcher("/navigation.jsp?"); rd.forward(req,res); } else { //Log the frameset request WebAppLogMessage message = new WebAppLogMessage(req, true); message.setContext("frameset"); message.setMessage("Frameset Request: " + id); logger.info(message); RequestDispatcher rd = req.getRequestDispatcher("/frameset.jsp?"); rd.forward(req,res); } } else if (action.equalsIgnoreCase(ACTION_CITE_INFO)) { WebAppLogMessage message = new WebAppLogMessage(req, true); message.setContext("fullcitation"); message.setMessage("Full Citation: " + id + " Seq: " + n); logger.info(message); wrapper.setAttribute("cite",mets.getCitationDiv()); wrapper.setAttribute("pdsUrl",pdsUrl); wrapper.setAttribute("id",id); wrapper.setAttribute("nStr", n+""); String repos = pdsUser.getMeta().getOwner(); if (repos == null || repos.equals("")) repos = "Harvard University Library"; String mainUrn = pdsUser.getMeta().getUrn(); String pageUrn = pdsUser.getMeta().getUrnFromList("?n=" +n); SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy"); String accDate = sdf.format(new Date()); wrapper.setAttribute("accDate", accDate); wrapper.setAttribute("repos", repos); wrapper.setAttribute("mainUrn", nrsUrl + "/" +mainUrn); wrapper.setAttribute("pageUrn", nrsUrl + "/" + pageUrn); StringBuffer sb = new StringBuffer(""); getAllSectionLabels(mets.getCitationDiv(), Integer.parseInt(n), sb); sb.delete(0,2); wrapper.setAttribute("sectLabels", sb.toString()); RequestDispatcher rd = req.getRequestDispatcher("/fullcitation.jsp?"); rd.forward(req,res); } else if (action.equalsIgnoreCase(ACTION_SEARCH)) { //Log the search page request WebAppLogMessage message = new WebAppLogMessage(req, true); message.setContext("search"); message.setMessage("Search Request: " + id); logger.info(message); wrapper.setAttribute("cite",mets.getCitationDiv()); wrapper.setAttribute("ftsUrl",ftsUrl); wrapper.setAttribute("pdsUrl",pdsUrl); wrapper.setAttribute("id",id); RequestDispatcher rd = req.getRequestDispatcher("/search.jsp?"); rd.forward(req,res); } else if (action.equalsIgnoreCase(ACTION_PRINTOPS)) { WebAppLogMessage message = new WebAppLogMessage(req, true); message.setContext("printops"); message.setMessage("print options: " + id); logger.info(message); wrapper.setAttribute("pdsUrl",pdsUrl); wrapper.setAttribute("id",id); wrapper.setAttribute("n",n); RequestDispatcher rd = req.getRequestDispatcher("/printoptions.jsp?"); rd.forward(req,res); } else if (action.equalsIgnoreCase(ACTION_PRINT)) { } else if (action.equalsIgnoreCase(ACTION_LINKS)) { WebAppLogMessage message = new WebAppLogMessage(req, true); message.setContext("links"); message.setMessage("display links: " + id); logger.info(message); wrapper.setAttribute("cite",mets.getCitationDiv()); wrapper.setAttribute("id",id); wrapper.setAttribute("pdsUrl",pdsUrl); RequestDispatcher rd = req.getRequestDispatcher("/links.jsp?"); rd.forward(req,res); }*/ //START API CALLS if (action.equalsIgnoreCase(API_VIEW) || action.equalsIgnoreCase(API_VIEW_TEXT)) { //main api function. shows ocr'd pages int imageId = pdiv.getDefaultImageID(); wrapper.setAttribute("lastPage", String.valueOf(mets.getCitationDiv().getLastPageNumber())); wrapper.setAttribute("imageId", String.valueOf(imageId)); wrapper.setAttribute("id", id); wrapper.setAttribute("n", n); wrapper.setAttribute("s", scale); wrapper.setAttribute("mime", pdiv.getDefaultImageMimeType()); wrapper.setAttribute("filepath", getFilePath(imageId)); wrapper.setAttribute("idsUrl", idsUrl); wrapper.setAttribute("cache", cache); wrapper.setAttribute("cacheUrl", pdsUrl + cacheUrl); wrapper.setAttribute("jp2Rotate", jp2Rotate); wrapper.setAttribute("jp2Res", jp2Res); wrapper.setAttribute("jp2x", jp2x); wrapper.setAttribute("jp2y", jp2y); wrapper.setAttribute("imagesize", imagesize); wrapper.setAttribute("bbx1", bbx1); wrapper.setAttribute("bby1", bby1); wrapper.setAttribute("bbx2", bbx2); wrapper.setAttribute("bby2", bby2); wrapper.setAttribute("pdsUrl", pdsUrl); wrapper.setAttribute("ids", idsUrl); wrapper.setAttribute("action", action); //get paths of the ocr files ArrayList<String> ocrPaths = new ArrayList<String>(); for (int i = 0; i < pdiv.getOcrID().size(); i++) { Integer ocr = (Integer) pdiv.getOcrID().get(i); ocrPaths.add(getFilePath(ocr.intValue())); } wrapper.setAttribute("ocrList", ocrPaths); //if image is a tiff, convert to gif if (pdiv.getDefaultImageMimeType().equals("image/tiff")) { String delv = cache + "/" + imageId + "-" + scale + ".gif"; File file = new File(delv); if (!file.exists()) { Runtime rt = Runtime.getRuntime(); String tiffpath = getFilePath(imageId); String exec = giffy + " id=" + imageId + " path=" + tiffpath.substring(0, tiffpath.lastIndexOf("/")) + " scale=" + scale + " cache=" + cache; Process child = rt.exec(exec); child.waitFor(); child.destroy(); } } wrapper.setAttribute("caption", item.getImageCaption()); RequestDispatcher rd = req.getRequestDispatcher("/api-content.jsp?"); rd.forward(req, res); } else if (action.equalsIgnoreCase(API_LINKS)) { WebAppLogMessage message = new WebAppLogMessage(req, true); message.setContext("links"); message.setMessage("display links: " + id); logger.info(message); wrapper.setAttribute("cite", mets.getCitationDiv()); wrapper.setAttribute("id", id); wrapper.setAttribute("pdsUrl", pdsUrl); wrapper.setAttribute("n", n); RequestDispatcher rd = req.getRequestDispatcher("/api-links.jsp?"); rd.forward(req, res); } else if (action.equalsIgnoreCase(API_CITE_INFO)) { WebAppLogMessage message = new WebAppLogMessage(req, true); message.setContext("fullcitation"); message.setMessage("Full Citation: " + id + " Seq: " + n); logger.info(message); wrapper.setAttribute("cite", mets.getCitationDiv()); wrapper.setAttribute("pdsUrl", pdsUrl); wrapper.setAttribute("id", id); wrapper.setAttribute("nStr", n + ""); String repos = pdsUser.getMeta().getOwner(); if (repos == null || repos.equals("")) repos = "Harvard University Library"; String mainUrn = pdsUser.getMeta().getUrn(); String pageUrn = pdsUser.getMeta().getUrnFromList("?n=" + n); SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy"); String accDate = sdf.format(new Date()); wrapper.setAttribute("accDate", accDate); wrapper.setAttribute("repos", repos); wrapper.setAttribute("mainUrn", nrsUrl + "/" + mainUrn); wrapper.setAttribute("pageUrn", nrsUrl + "/" + pageUrn); StringBuffer sb = new StringBuffer(""); getAllSectionLabels(mets.getCitationDiv(), Integer.parseInt(n), sb); sb.delete(0, 2); wrapper.setAttribute("sectLabels", sb.toString()); RequestDispatcher rd = req.getRequestDispatcher("/api-fullcitation.jsp?"); rd.forward(req, res); } else if (action.equalsIgnoreCase(API_DOC_TREE)) { String treeIndex = req.getParameter("index"); String treeAction = req.getParameter("treeaction"); /*if (treeAction != null) { if (treeAction.equalsIgnoreCase("expand")) { pdsUser.setExpandedNodes(id,item.getAllNodesIndices()); } else if (treeAction.equalsIgnoreCase("collapse")) { pdsUser.setExpandedNodes(id,new ArrayList<String>()); } } if(treeIndex != null) { pdsUser.toggleNode(id,treeIndex); }*/ //expand the tree pdsUser.setExpandedNodes(id, item.getAllNodesIndices()); wrapper.setAttribute("pdsUser", pdsUser); wrapper.setAttribute("pdsUrl", pdsUrl); wrapper.setAttribute("cacheUrl", pdsUrl + cacheUrl); wrapper.setAttribute("cache", cache); wrapper.setAttribute("id", id); wrapper.setAttribute("n", n); wrapper.setAttribute("s", scale); wrapper.setAttribute("action", "get"); wrapper.setAttribute("idsUrl", idsUrl); wrapper.setAttribute("maxThumbnails", maxThumbnails); wrapper.setAttribute("jp2Rotate", jp2Rotate); wrapper.setAttribute("jp2x", jp2x); wrapper.setAttribute("jp2y", jp2y); wrapper.setAttribute("caption", item.getImageCaption()); //wrapper.setAttribute("toggleIndex",toggleIndex); //wrapper.setAttribute("treeaction",treeAction); RequestDispatcher rd = req.getRequestDispatcher("/api-navigation.jsp?"); rd.forward(req, res); } //todo? else if (action.equalsIgnoreCase(API_MAX_SECTIONS)) { } else if (action.equalsIgnoreCase(API_MAX_PAGES)) { } else if (action.equalsIgnoreCase(API_MAX_CHAPTERS)) { } } //END MAIN catch (Exception e) { WebAppLogMessage message = new WebAppLogMessage(req, true); message.setContext("main"); Throwable root = e; if (e instanceof ServletException) { ServletException se = (ServletException) e; Throwable t = se.getRootCause(); if (t != null) { logger.error(message, t); root = t; } else { logger.error(message, se); } } else { logger.error(message, e); } printError(req, res, "PDS-WS Error", root); } }
From source file:gui.GW2EventerGui.java
/** * Creates new form GW2EventerGui//from ww w.j a va2 s.c om */ public GW2EventerGui() { this.guiIcon = new ImageIcon(ClassLoader.getSystemResource("media/icon.png")).getImage(); if (System.getProperty("os.name").startsWith("Windows")) { this.OS = "Windows"; this.isWindows = true; } else { this.OS = "Other"; this.isWindows = false; } if (this.isWindows == true) { this.checkIniDir(); } initComponents(); this.speakQueue = new LinkedList(); this.speakRunnable = new Runnable() { @Override public void run() { String path = System.getProperty("user.home") + "\\.gw2eventer"; File f; String sentence; while (!speakQueue.isEmpty()) { f = new File(path + "\\tts.vbs"); if (!f.exists() && !f.isDirectory()) { sentence = (String) speakQueue.poll(); try { Writer writer = new OutputStreamWriter( new FileOutputStream( System.getProperty("user.home") + "\\.gw2eventer\\tts.vbs"), "ISO-8859-15"); BufferedWriter fout = new BufferedWriter(writer); fout.write("Dim Speak"); fout.newLine(); fout.write("Set Speak=CreateObject(\"sapi.spvoice\")"); fout.newLine(); fout.write("Speak.Speak \"" + sentence + "\""); fout.close(); Runtime rt = Runtime.getRuntime(); try { if (sentence.length() > 0) { Process p = rt.exec(System.getProperty("user.home") + "\\.gw2eventer\\tts.bat"); } } catch (IOException ex) { Logger.getLogger(GW2EventerGui.class.getName()).log(Level.SEVERE, null, ex); } } catch (FileNotFoundException ex) { Logger.getLogger(GW2EventerGui.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(GW2EventerGui.class.getName()).log(Level.SEVERE, null, ex); } try { Thread.sleep(3000); } catch (InterruptedException ex) { Logger.getLogger(GW2EventerGui.class.getName()).log(Level.SEVERE, null, ex); } } else { try { Thread.sleep(1000); } catch (InterruptedException ex) { Logger.getLogger(GW2EventerGui.class.getName()).log(Level.SEVERE, null, ex); } } } } }; this.matchIds = new HashMap(); this.matchId = "2-6"; this.matchIdColor = "green"; this.jLabelNewVersion.setVisible(false); this.updateInformed = false; Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation(screenSize.width / 2 - this.getSize().width / 2, (screenSize.height / 2 - this.getSize().height / 2) - 20); double width = screenSize.getWidth(); double height = screenSize.getHeight(); if ((width == 1280) && (height == 720 || height == 768 || height == 800)) { this.setExtendedState(this.MAXIMIZED_BOTH); //this.setLocation(0, 0); } JSpinner.NumberEditor jsEditor = (JSpinner.NumberEditor) this.jSpinnerRefreshTime.getEditor(); DefaultFormatter formatter = (DefaultFormatter) jsEditor.getTextField().getFormatter(); formatter.setAllowsInvalid(false); /* jsEditor = (JSpinner.NumberEditor)this.jSpinnerOverlayX.getEditor(); formatter = (DefaultFormatter) jsEditor.getTextField().getFormatter(); formatter.setAllowsInvalid(false); jsEditor = (JSpinner.NumberEditor)this.jSpinnerOverlayY.getEditor(); formatter = (DefaultFormatter) jsEditor.getTextField().getFormatter(); formatter.setAllowsInvalid(false); */ this.workingButton = this.jButtonRefresh; this.refreshSelector = this.jCheckBoxAutoRefresh; this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { apiManager.saveSettingstoFile(); System.exit(0); } }); this.pushGui = new PushGui(this, true, "", ""); this.pushGui.setIconImage(guiIcon); this.donateGui = new DonateGui(this, true); this.donateGui.setIconImage(guiIcon); this.infoGui = new InfoGui(this, true); this.infoGui.setIconImage(guiIcon); this.feedbackGui = new FeedbackGui(this, true); this.feedbackGui.setIconImage(guiIcon); this.overlayGui = new OverlayGui(this); this.initOverlayGui(); this.settingsOverlayGui = new SettingsOverlayGui(this); this.initSettingsOverlayGui(); this.wvwOverlayGui = new WvWOverlayGui(this); this.initWvwOverlayGui(); this.language = "en"; this.worldID = "2206"; //Millersund [DE] this.setTranslations(); this.eventLabels = new ArrayList(); this.eventLabelsTimer = new ArrayList(); this.homeWorlds = new HashMap(); this.preventSystemSleep = true; for (int i = 1; i <= EVENT_COUNT; i++) { try { Field f = getClass().getDeclaredField("labelEvent" + i); JLabel l = (JLabel) f.get(this); l.setPreferredSize(new Dimension(70, 28)); //l.setToolTipText(""); //int width2 = l.getX(); //int height2 = l.getY(); //System.out.println("$coords .= \"{\\\"x\\\": \\\""+ width2 + "\\\", \\\"y\\\": \\\""+ height2 + "\\\"},\\n\";"); this.eventLabels.add(l); final int ii = i; l.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mousePressed(java.awt.event.MouseEvent evt) { showSoundSelector(ii); } }); f = getClass().getDeclaredField("labelTimer" + i); l = (JLabel) f.get(this); l.setEnabled(true); l.setVisible(false); l.setForeground(Color.green); //int width2 = l.getX(); //int height2 = l.getY(); //System.out.println("$coords2 .= \"{\\\"x\\\": \\\""+ width2 + "\\\", \\\"y\\\": \\\""+ height2 + "\\\"},\\n\";"); this.eventLabelsTimer.add(l); } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException ex) { Logger.getLogger(GW2EventerGui.class.getName()).log(Level.SEVERE, null, ex); } } int[] disabledEvents = { 6, 8, 11, 12, 17, 18, 19, 20, 21, 22 }; for (int i = 0; i < disabledEvents.length; i++) { Field f; JLabel l; try { f = getClass().getDeclaredField("labelEvent" + disabledEvents[i]); l = (JLabel) f.get(this); l.setEnabled(false); l.setVisible(false); f = getClass().getDeclaredField("labelTimer" + disabledEvents[i]); l = (JLabel) f.get(this); l.setEnabled(false); l.setVisible(false); } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException ex) { Logger.getLogger(GW2EventerGui.class.getName()).log(Level.SEVERE, null, ex); } } this.lastPush = new Date(); if (this.apiManager == null) { this.apiManager = new ApiManager(this, this.jSpinnerRefreshTime, this.jCheckBoxAutoRefresh.isSelected(), this.eventLabels, this.language, this.worldID, this.homeWorlds, this.jComboBoxHomeWorld, this.jLabelServer, this.jLabelWorking, this.jCheckBoxPlaySounds.isSelected(), this.workingButton, this.refreshSelector, this.eventLabelsTimer, this.jComboBoxLanguage, this.overlayGui, this.jCheckBoxWvWOverlay); } //this.wvwMatchReader = new WvWMatchReader(this.matchIds, this.jCheckBoxWvW); //this.wvwMatchReader.start(); this.preventSleepMode(); this.runUpdateService(); this.runPushService(); this.runTips(); //this.runTest(); }
From source file:com.sec.ose.osi.ui.frm.main.identification.codematch.JPanCodeMatchMain.java
/** * This method initializes jButton //from ww w . jav a 2 s. c o m * * @return javax.swing.JButton */ private JButton getJButtonView() { if (jButtonView == null) { jButtonView = new JButton(); jButtonView.setText("View"); jButtonView.setFocusPainted(false); jButtonView.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { log.debug("View Button Click ~~~"); try { String osName = System.getProperty("os.name"); String projectName = IdentifyMediator.getInstance().getSelectedProjectName(); DCCodeMatch xCodeMatchDiscoveryController = (DCCodeMatch) ProjectDiscoveryControllerMap .getDiscoveryController(projectName, IdentificationConstantValue.CODE_MATCH_TYPE); String selectedPath = IdentifyMediator.getInstance().getSelectedFilePathInfo() .getSelectedPath(); String codeMatchUrl = xCodeMatchDiscoveryController.getCodeMatchedURL(selectedPath); Runtime rt = Runtime.getRuntime(); if (osName.startsWith("Windows")) { // windows try { String[] b = { WEB_BROWSER_PATH, codeMatchUrl }; Runtime.getRuntime().exec(b); } catch (Exception e1) { log.warn(e1); } } else if (osName.startsWith("Linux")) { String[] browsers = { "epiphany", "firefox", "mozilla", "konqueror", "netscape", "opera", "links", "lynx" }; StringBuffer cmd = new StringBuffer(); for (int i = 0; i < browsers.length; i++) { cmd.append((i == 0 ? "" : " || ") + browsers[i] + " \"" + codeMatchUrl + "\" "); } System.out.println("code view button : " + cmd.toString()); rt.exec(new String[] { "sh", "-c", cmd.toString() }); } } catch (IOException e1) { log.warn(e1.getMessage()); } } }); } return jButtonView; }
From source file:de.huxhorn.lilith.swing.MainFrame.java
private static void executeCommand(String[] cmdArray) { final Logger logger = LoggerFactory.getLogger(MainFrame.class); if (cmdArray == null) { return;//from w w w . ja v a 2 s . c o m } Runtime runtime = Runtime.getRuntime(); String commandString = Arrays.asList(cmdArray).toString(); try { Process process = runtime.exec(cmdArray); ProcessConsumerRunnable consumer = new ProcessConsumerRunnable(process); Thread t = new Thread(consumer, "Consuming command: " + commandString); t.setDaemon(true); t.start(); } catch (IOException e) { if (logger.isWarnEnabled()) logger.warn("Exception while trying to execute command {}!", commandString, e); } }
From source file:com.ucuenca.pentaho.plugin.step.EldaPDIStepDialog.java
private void openUrlInBrowser(String url) { // open in mac Runtime runtime = Runtime.getRuntime(); String[] args = { "osascript", "-e", "open location \"" + url + "\"" }; try {//from w w w. j av a 2 s . com Process process = runtime.exec(args); } catch (IOException e) { logBasic(e.getMessage()); } }
From source file:marytts.tools.voiceimport.HTKLabeler.java
/** * Feature Extraction for HTK Training //from w ww . j av a2 s .c o m * @throws Exception */ private void featureExtraction() throws Exception { String hcopy = getProp(HTKDIR) + File.separator + "HCopy"; File htkFile = new File(hcopy); if (!htkFile.exists()) { throw new RuntimeException("File " + htkFile.getAbsolutePath() + " does not exist"); } String configFile = getProp(HTDIR) + File.separator + "config" + File.separator + "featEx.conf"; String listFile = getProp(HTDIR) + File.separator + "etc" + File.separator + "featEx.list"; Runtime rtime = Runtime.getRuntime(); //get a shell Process process = rtime.exec("/bin/bash"); //get an output stream to write to the shell PrintWriter pw = new PrintWriter(new OutputStreamWriter(process.getOutputStream())); System.out.println("( cd " + getProp(HTDIR) + "; " + hcopy + " -T 1 -C " + configFile + " -S " + listFile + " > log_featureExtraction.txt" + "; exit )\n"); pw.print("( cd " + getProp(HTDIR) + "; " + hcopy + " -T 1 -C " + configFile + " -S " + listFile + " > log_featureExtraction.txt" + "; exit )\n"); pw.flush(); //shut down pw.close(); process.waitFor(); // check exit value if (process.exitValue() != 0) { BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream())); throw new MaryConfigurationException(errorReader.readLine()); } }
From source file:marytts.tools.voiceimport.HTKLabeler.java
/** * create phone master label file (Not used?) * @throws Exception// w w w . j av a 2 s . com */ private void createPhoneMLFile() throws Exception { String hled = getProp(HTKDIR) + File.separator + "HLEd"; File htkFile = new File(hled); if (!htkFile.exists()) { throw new RuntimeException("File " + htkFile.getAbsolutePath() + " does not exist"); } String dict = getProp(HTDIR) + File.separator + "etc" + File.separator + "htk.dict"; String phoneMLF = getProp(HTDIR) + File.separator + "etc" + File.separator + "htk.phones.mlf"; String wordsMLF = getProp(HTDIR) + File.separator + "etc" + File.separator + "htk.words.mlf"; String mkphoneLED = getProp(HTDIR) + File.separator + "config" + File.separator + "mkphone0.led"; Runtime rtime = Runtime.getRuntime(); //get a shell Process process = rtime.exec("/bin/bash"); //get an output stream to write to the shell PrintWriter pw = new PrintWriter(new OutputStreamWriter(process.getOutputStream())); System.out.println("( " + hled + " -l '*' -d " + dict + " -i " + phoneMLF + " " + mkphoneLED + " " + wordsMLF + "; exit )\n"); pw.print("( " + hled + " -l '*' -d " + dict + " -i " + phoneMLF + " " + mkphoneLED + " " + wordsMLF //+"; " + "; exit )\n"); pw.flush(); //shut down pw.close(); process.waitFor(); // check exit value if (process.exitValue() != 0) { BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream())); throw new MaryConfigurationException(errorReader.readLine()); } }
From source file:marytts.tools.voiceimport.HTKLabeler.java
/** * delete sp repetition on htk.phones3.mlf * @throws Exception/*from w ww. j a v a2s. c o m*/ */ private void delete_multiple_sp_in_PhoneMLFile(String filein, String fileout) throws Exception { String hled = getProp(HTKDIR) + File.separator + "HLEd"; File htkFile = new File(hled); if (!htkFile.exists()) { throw new RuntimeException("File " + htkFile.getAbsolutePath() + " does not exist"); } //String phoneMLF3 = getProp(HTDIR)+File.separator // +"etc"+File.separator+"htk.phones3.mlf"; // String phoneMLFtmpin = getProp(HTDIR)+File.separator // +"etc"+File.separator+"htk.phones3_tmp_in.mlf"; //String phoneMLFtmpout = getProp(HTDIR)+File.separator // +"etc"+File.separator+"htk.phones3_tmp_out.mlf"; String mkphoneLED = getProp(HTDIR) + File.separator + "config" + File.separator + "mkphone1.led"; Runtime rtime = Runtime.getRuntime(); //get a shell Process process = rtime.exec("/bin/bash"); //get an output stream to write to the shell PrintWriter pw = new PrintWriter(new OutputStreamWriter(process.getOutputStream())); System.out.println("( " + hled + " -l '*' -i " + fileout + " " + mkphoneLED + " " + filein + "; exit )\n"); pw.print("( " + hled + " -l '*' -i " + fileout + " " + mkphoneLED + " " + filein //+"; " + "; exit )\n"); pw.flush(); //shut down pw.close(); process.waitFor(); process.exitValue(); }