package cc.abstra.trantor.pdfconverter.services;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;
public class OpenOfficeService {
private static OfficeManager officeManager = null; //Couldn't make NullObject b/c of poor OfficeManager declaration
public static void initialize(List<Long> listenAtPorts) {
if(null == officeManager) {
OpenOfficeConfig.setPorts(listenAtPorts);
int[] ports = OpenOfficeConfig.getPorts();
Logger.getLogger(OpenOfficeService.class.getName()).log(Level.INFO,
"Initializing OfficeManager in ports: "+Arrays.toString(ports));
//OS X: cd /Applications/LibreOffice.app/Contents/MacOS/
// sudo ln -s ./soffice soffice.bin
// FIXED in master:
// https://github.com/nuxeo/jodconverter/commit/30eb0644a217081ce936a866ac6be411c62c6f49
officeManager = new DefaultOfficeManagerConfiguration().
setPortNumbers(ports).
buildOfficeManager();
} else {
Logger.getLogger(OpenOfficeService.class.getName()).log(Level.WARNING,
"OfficeManager is already initialized!");
}
}
public static void start() {
long startTime = System.currentTimeMillis();
officeManager.start();
logElapsedTime(startTime, "Started");
}
public static void stop() {
long startTime = System.currentTimeMillis();
officeManager.stop();
logElapsedTime(startTime, "Stopped");
}
public static OfficeManager getOfficeManager(){
return officeManager;
}
public static void logElapsedTime(long startTime, String prefix) {
long elapsedTime = System.currentTimeMillis() - startTime;
Logger.getLogger(OpenOfficeService.class.getName()).log(Level.INFO,
String.format(prefix + " in %dms", elapsedTime));
}
}