diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2016-06-18 11:56:59 +1200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-18 11:56:59 +1200 |
commit | b3b0cd9d6f2d26cef2e64ef38e23203f1f3fa51a (patch) | |
tree | 2e8deb61d372095aebb8270f740501c8124ea8c4 /src/org/traccar/model | |
parent | d801cba474cd05bb088348f04e8557ca638cd74f (diff) | |
parent | 82a78ff77a076231a8429f0dd84678d61c31d44a (diff) | |
download | traccar-server-b3b0cd9d6f2d26cef2e64ef38e23203f1f3fa51a.tar.gz traccar-server-b3b0cd9d6f2d26cef2e64ef38e23203f1f3fa51a.tar.bz2 traccar-server-b3b0cd9d6f2d26cef2e64ef38e23203f1f3fa51a.zip |
Merge pull request #2012 from Abyss777/master
Implement Geofences on server side
Diffstat (limited to 'src/org/traccar/model')
-rw-r--r-- | src/org/traccar/model/Device.java | 10 | ||||
-rw-r--r-- | src/org/traccar/model/DeviceGeofence.java | 40 | ||||
-rw-r--r-- | src/org/traccar/model/Event.java | 35 | ||||
-rw-r--r-- | src/org/traccar/model/Extensible.java | 71 | ||||
-rw-r--r-- | src/org/traccar/model/Geofence.java | 82 | ||||
-rw-r--r-- | src/org/traccar/model/GeofencePermission.java | 40 | ||||
-rw-r--r-- | src/org/traccar/model/GroupGeofence.java | 40 | ||||
-rw-r--r-- | src/org/traccar/model/Message.java | 45 | ||||
-rw-r--r-- | src/org/traccar/model/Position.java | 12 |
9 files changed, 311 insertions, 64 deletions
diff --git a/src/org/traccar/model/Device.java b/src/org/traccar/model/Device.java index d32f9f851..c42eb3718 100644 --- a/src/org/traccar/model/Device.java +++ b/src/org/traccar/model/Device.java @@ -16,6 +16,7 @@ package org.traccar.model; import java.util.Date; +import java.util.List; public class Device { @@ -114,4 +115,13 @@ public class Device { this.motion = motion; } + private List<Long> geofenceIds; + + public List<Long> getGeofenceIds() { + return geofenceIds; + } + + public void setGeofenceIds(List<Long> geofenceIds) { + this.geofenceIds = geofenceIds; + } } diff --git a/src/org/traccar/model/DeviceGeofence.java b/src/org/traccar/model/DeviceGeofence.java new file mode 100644 index 000000000..05f06bb3d --- /dev/null +++ b/src/org/traccar/model/DeviceGeofence.java @@ -0,0 +1,40 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.traccar.model; + +public class DeviceGeofence { + + private long deviceId; + + public long getDeviceId() { + return deviceId; + } + + public void setDeviceId(long deviceId) { + this.deviceId = deviceId; + } + + private long geofenceId; + + public long getGeofenceId() { + return geofenceId; + } + + public void setGeofenceId(long geofenceId) { + this.geofenceId = geofenceId; + } + +} diff --git a/src/org/traccar/model/Event.java b/src/org/traccar/model/Event.java index 6de885c70..235a39f9a 100644 --- a/src/org/traccar/model/Event.java +++ b/src/org/traccar/model/Event.java @@ -1,3 +1,18 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.traccar.model; import java.util.Date; @@ -20,16 +35,6 @@ public class Event extends Message { public Event() { } - private long id; - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - public static final String TYPE_COMMAND_RESULT = "commandResult"; public static final String TYPE_DEVICE_ONLINE = "deviceOnline"; @@ -71,4 +76,14 @@ public class Event extends Message { this.positionId = positionId; } + private long geofenceId = 0; + + public long getGeofenceId() { + return geofenceId; + } + + public void setGeofenceId(long geofenceId) { + this.geofenceId = geofenceId; + } + } diff --git a/src/org/traccar/model/Extensible.java b/src/org/traccar/model/Extensible.java new file mode 100644 index 000000000..eceeccadf --- /dev/null +++ b/src/org/traccar/model/Extensible.java @@ -0,0 +1,71 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.traccar.model; + +import java.util.LinkedHashMap; +import java.util.Map; + +public class Extensible { + + private long id; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + private Map<String, Object> attributes = new LinkedHashMap<>(); + + public Map<String, Object> getAttributes() { + return attributes; + } + + public void setAttributes(Map<String, Object> attributes) { + this.attributes = attributes; + } + + public void set(String key, boolean value) { + attributes.put(key, value); + } + + public void set(String key, int value) { + attributes.put(key, value); + } + + public void set(String key, long value) { + attributes.put(key, value); + } + + public void set(String key, double value) { + attributes.put(key, value); + } + + public void set(String key, String value) { + if (value != null && !value.isEmpty()) { + attributes.put(key, value); + } + } + + public void add(Map.Entry<String, Object> entry) { + if (entry != null && entry.getValue() != null) { + attributes.put(entry.getKey(), entry.getValue()); + } + } + +} diff --git a/src/org/traccar/model/Geofence.java b/src/org/traccar/model/Geofence.java new file mode 100644 index 000000000..9a60f784f --- /dev/null +++ b/src/org/traccar/model/Geofence.java @@ -0,0 +1,82 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.traccar.model; + +import java.text.ParseException; + +import org.traccar.geofence.GeofenceCircle; +import org.traccar.geofence.GeofenceGeometry; +import org.traccar.geofence.GeofencePolygon; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class Geofence extends Extensible { + + public static final String TYPE_GEOFENCE_CILCLE = "geofenceCircle"; + public static final String TYPE_GEOFENCE_POLYGON = "geofencePolygon"; + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + private String description; + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + private String area; + + public String getArea() { + return area; + } + + public void setArea(String area) throws ParseException { + + if (area.startsWith("CIRCLE")) { + geometry = new GeofenceCircle(area); + } else if (area.startsWith("POLYGON")) { + geometry = new GeofencePolygon(area); + } else { + throw new ParseException("Unknown geometry type", 0); + } + + this.area = area; + } + + private GeofenceGeometry geometry; + + @JsonIgnore + public GeofenceGeometry getGeometry() { + return geometry; + } + + public void setGeometry(GeofenceGeometry geometry) { + area = geometry.toWkt(); + this.geometry = geometry; + } + +} diff --git a/src/org/traccar/model/GeofencePermission.java b/src/org/traccar/model/GeofencePermission.java new file mode 100644 index 000000000..269918d66 --- /dev/null +++ b/src/org/traccar/model/GeofencePermission.java @@ -0,0 +1,40 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.traccar.model; + +public class GeofencePermission { + + private long userId; + + public long getUserId() { + return userId; + } + + public void setUserId(long userId) { + this.userId = userId; + } + + private long geofenceId; + + public long getGeofenceId() { + return geofenceId; + } + + public void setGeofenceId(long geofenceId) { + this.geofenceId = geofenceId; + } + +} diff --git a/src/org/traccar/model/GroupGeofence.java b/src/org/traccar/model/GroupGeofence.java new file mode 100644 index 000000000..0e261fd54 --- /dev/null +++ b/src/org/traccar/model/GroupGeofence.java @@ -0,0 +1,40 @@ +/* + * Copyright 2016 Anton Tananaev (anton.tananaev@gmail.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.traccar.model; + +public class GroupGeofence { + + private long groupId; + + public long getGroupId() { + return groupId; + } + + public void setGroupId(long groupId) { + this.groupId = groupId; + } + + private long geofenceId; + + public long getGeofenceId() { + return geofenceId; + } + + public void setGeofenceId(long geofenceId) { + this.geofenceId = geofenceId; + } + +} diff --git a/src/org/traccar/model/Message.java b/src/org/traccar/model/Message.java index 8722acc16..55d9fd0c7 100644 --- a/src/org/traccar/model/Message.java +++ b/src/org/traccar/model/Message.java @@ -1,5 +1,5 @@ /* - * Copyright 2013 - 2015 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2013 - 2016 Anton Tananaev (anton.tananaev@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,10 +15,7 @@ */ package org.traccar.model; -import java.util.LinkedHashMap; -import java.util.Map; - -public class Message { +public class Message extends Extensible { private long deviceId; @@ -40,42 +37,4 @@ public class Message { this.type = type; } - private Map<String, Object> attributes = new LinkedHashMap<>(); - - public Map<String, Object> getAttributes() { - return attributes; - } - - public void setAttributes(Map<String, Object> attributes) { - this.attributes = attributes; - } - - public void set(String key, boolean value) { - attributes.put(key, value); - } - - public void set(String key, int value) { - attributes.put(key, value); - } - - public void set(String key, long value) { - attributes.put(key, value); - } - - public void set(String key, double value) { - attributes.put(key, value); - } - - public void set(String key, String value) { - if (value != null && !value.isEmpty()) { - attributes.put(key, value); - } - } - - public void add(Map.Entry<String, Object> entry) { - if (entry != null && entry.getValue() != null) { - attributes.put(entry.getKey(), entry.getValue()); - } - } - } diff --git a/src/org/traccar/model/Position.java b/src/org/traccar/model/Position.java index 22d1be846..4e03b2097 100644 --- a/src/org/traccar/model/Position.java +++ b/src/org/traccar/model/Position.java @@ -1,5 +1,5 @@ /* - * Copyright 2012 - 2015 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2012 - 2016 Anton Tananaev (anton.tananaev@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -66,16 +66,6 @@ public class Position extends Message { public static final String PREFIX_IO = "io"; public static final String PREFIX_COUNT = "count"; - private long id; - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - private String protocol; public String getProtocol() { |