]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.gis/src/main/java/org/argeo/slc/jts/PositionUpdater.java
Improve GIS
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.gis / src / main / java / org / argeo / slc / jts / PositionUpdater.java
1 package org.argeo.slc.jts;
2
3 import java.util.List;
4
5 import org.argeo.slc.geotools.map.OverlayLocationReceiver;
6 import org.argeo.slc.gis.model.FieldPosition;
7
8 public class PositionUpdater implements Runnable {
9 private PositionProvider positionProvider;
10 private List<OverlayLocationReceiver> positionReceivers;
11 /** in s */
12 private Integer positionRefreshPeriod = 1;
13
14 private Thread thread;
15 private Boolean running = false;
16
17 private FieldPosition currentPosition = null;
18
19 public void run() {
20 while (running) {
21 FieldPosition position = positionProvider.currentPosition();
22
23 for (OverlayLocationReceiver receiver : positionReceivers) {
24 if (position != null) {
25 currentPosition = position;
26 receiver.receiveOverlayLocation(
27 currentPosition.getLocation(), false);
28 } else {
29 receiver.receiveOverlayLocation(
30 currentPosition.getLocation(), true);
31 }
32 }
33
34 try {
35 Thread.sleep(positionRefreshPeriod * 1000);
36 } catch (InterruptedException e) {
37 e.printStackTrace();
38 }
39 }
40 }
41
42 public void start() {
43 running = true;
44 thread = new Thread(this, "Position Updater");
45 thread.start();
46 }
47
48 public void stop() {
49 running = false;
50 try {
51 thread.join();
52 } catch (InterruptedException e) {
53 e.printStackTrace();
54 }
55 }
56
57 public void setPositionProvider(PositionProvider positionProvider) {
58 this.positionProvider = positionProvider;
59 }
60
61 public void setPositionRefreshPeriod(Integer positionRefreshPeriod) {
62 this.positionRefreshPeriod = positionRefreshPeriod;
63 }
64
65 }