1 package org.simantics.maps.server.ui;
3 import java.util.Optional;
5 import org.eclipse.core.runtime.IProgressMonitor;
6 import org.eclipse.core.runtime.IStatus;
7 import org.eclipse.core.runtime.Status;
8 import org.eclipse.core.runtime.jobs.Job;
9 import org.simantics.district.maps.server.TileserverMapnik.TileserverStartListener;
10 import org.simantics.district.maps.server.TileserverMapnikInstance;
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
14 public class TileserverMapnikStartJob extends Job {
16 private static final Logger LOGGER = LoggerFactory.getLogger(TileserverMapnikStartJob.class);
18 public TileserverMapnikStartJob() {
19 super("Tileserver start job");
23 protected IStatus run(IProgressMonitor monitor) {
24 monitor.beginTask("Starting tileserver", 100);
26 StartListener startListener = new StartListener(monitor);
27 TileserverMapnikInstance.get().start(Optional.of(startListener));
28 if (startListener.module != null || startListener.returnValue != 0)
29 return new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Could not install " + String.valueOf(startListener.module) + " with returnValue " + startListener.returnValue);
30 return Status.OK_STATUS;
31 } catch (Exception e) {
32 LOGGER.error("Could not start tileserver-mapnik", e);
33 return new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Could not start tileserver-mapnik: " + e.getMessage());
37 private class StartListener implements TileserverStartListener {
39 private IProgressMonitor monitor;
40 private String module;
41 private int returnValue;
43 public StartListener(IProgressMonitor monitor) {
44 this.monitor = monitor;
48 public void installing(String module) {
49 StringBuilder sb = new StringBuilder();
50 sb.append("Installing module ");
52 module = "tileserver-mapnik";
54 monitor.subTask(sb.toString());
59 public void installationFailed(String module, int returnValue) {
62 this.returnValue = returnValue;
63 LOGGER.warn("Installation of module {} failed with returnValue ", String.valueOf(module), returnValue);
67 public void started() {
68 monitor.subTask("Finished");
71 if (LOGGER.isDebugEnabled())
72 LOGGER.debug("Tileserver started succesfully");