package ch.elexis.connector.medicosearch.commands; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ch.elexis.connector.medicosearch.MedicosearchUtil; public class SyncMedicosearchHandler extends AbstractHandler { private static final Logger log = LoggerFactory.getLogger(SyncMedicosearchHandler.class); private static final String JAVA_HOME = "java.home"; private static final String BIN = "bin"; private static final String JAVA = "java"; private static final String RUN_JAR = "-jar"; @Override public Object execute(ExecutionEvent event) throws ExecutionException{ MedicosearchUtil medicosearchUtil = MedicosearchUtil.getInstance(); // execute the jar String java = System.getProperty(JAVA_HOME) + File.separator + BIN + File.separator + JAVA; ProcessBuilder processCmd = new ProcessBuilder(java, RUN_JAR, medicosearchUtil.getMedicosearchJarPath()); processCmd.directory(medicosearchUtil.getBundleDirectory()); try { Process process = processCmd.start(); InputStream is = process.getInputStream(); InputStreamReader inStreamReader = new InputStreamReader(is); BufferedReader br = new BufferedReader(inStreamReader); log.debug(">>> Synchronize Medicosearch <<<"); String line; while ((line = br.readLine()) != null) { log.debug(line); } log.debug(">>> Medicosearch synchronization finished <<<"); } catch (IOException e) { log.error("Error executing medicosearch jar", e); } return null; } }