]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.maps.server.ui/src/org/simantics/maps/server/ui/TileserverMapnikStartJob.java
a729bfc135498560ba7b2cc1ad3f65acb7ef561b
[simantics/district.git] / org.simantics.maps.server.ui / src / org / simantics / maps / server / ui / TileserverMapnikStartJob.java
1 package org.simantics.maps.server.ui;
2
3 import java.util.Optional;
4
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;
13
14 public class TileserverMapnikStartJob extends Job {
15
16     private static final Logger LOGGER = LoggerFactory.getLogger(TileserverMapnikStartJob.class);
17     
18     public TileserverMapnikStartJob() {
19         super("Tileserver start job");
20     }
21
22     @Override
23     protected IStatus run(IProgressMonitor monitor) {
24         monitor.beginTask("Starting tileserver", 100);
25         try {
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());
34         }
35     }
36
37     private class StartListener implements TileserverStartListener {
38
39         private IProgressMonitor monitor;
40         private String module;
41         private int returnValue;
42
43         public StartListener(IProgressMonitor monitor) {
44             this.monitor = monitor;
45         }
46
47         @Override
48         public void installing(String module) {
49             StringBuilder sb = new StringBuilder();
50             sb.append("Installing module ");
51             if (module == null)
52                 module = "tileserver-mapnik";
53             sb.append(module);
54             monitor.subTask(sb.toString());
55             monitor.worked(30);
56         }
57
58         @Override
59         public void installationFailed(String module, int returnValue) {
60             // set as failed
61             this.module = module;
62             this.returnValue = returnValue;
63             LOGGER.warn("Installation of module {} failed with returnValue ", String.valueOf(module), returnValue);
64         }
65
66         @Override
67         public void started() {
68             monitor.subTask("Finished");
69             monitor.worked(10);
70             monitor.done();
71             if (LOGGER.isDebugEnabled())
72                 LOGGER.debug("Tileserver started succesfully");
73         }
74     }
75 }