diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2017-07-27 17:00:45 +1200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-27 17:00:45 +1200 |
commit | 495b2aa2d2b17bd1a5803ea0bd7dcc64bc81c598 (patch) | |
tree | 4b65fbe2d6081f31762a0d8aa790b9fcf81e81f7 /src/org/traccar/api | |
parent | 194263a9dc8040ebcbf62c80733aca5097eb3e36 (diff) | |
parent | 49fa4893269b1732806f7176c279742291e02edf (diff) | |
download | traccar-server-495b2aa2d2b17bd1a5803ea0bd7dcc64bc81c598.tar.gz traccar-server-495b2aa2d2b17bd1a5803ea0bd7dcc64bc81c598.tar.bz2 traccar-server-495b2aa2d2b17bd1a5803ea0bd7dcc64bc81c598.zip |
Merge pull request #3391 from Abyss777/refactor_drivers_groups
Split Drivers and Groups management
Diffstat (limited to 'src/org/traccar/api')
-rw-r--r-- | src/org/traccar/api/resource/AttributeResource.java | 2 | ||||
-rw-r--r-- | src/org/traccar/api/resource/CalendarResource.java | 9 | ||||
-rw-r--r-- | src/org/traccar/api/resource/DeviceResource.java | 52 | ||||
-rw-r--r-- | src/org/traccar/api/resource/DriverResource.java | 2 | ||||
-rw-r--r-- | src/org/traccar/api/resource/GeofenceResource.java | 2 | ||||
-rw-r--r-- | src/org/traccar/api/resource/GroupResource.java | 22 | ||||
-rw-r--r-- | src/org/traccar/api/resource/PositionResource.java | 2 | ||||
-rw-r--r-- | src/org/traccar/api/resource/UserResource.java | 13 |
8 files changed, 55 insertions, 49 deletions
diff --git a/src/org/traccar/api/resource/AttributeResource.java b/src/org/traccar/api/resource/AttributeResource.java index 7b81d3ffb..c12fcd9e6 100644 --- a/src/org/traccar/api/resource/AttributeResource.java +++ b/src/org/traccar/api/resource/AttributeResource.java @@ -81,7 +81,7 @@ public class AttributeResource extends BaseResource { Context.getPermissionsManager().checkDevice(getUserId(), deviceId); result.retainAll(attributesManager.getDeviceItems(deviceId)); } - return attributesManager.getItems(Attribute.class, result); + return attributesManager.getItems(result); } diff --git a/src/org/traccar/api/resource/CalendarResource.java b/src/org/traccar/api/resource/CalendarResource.java index a0f8656af..f8d78a847 100644 --- a/src/org/traccar/api/resource/CalendarResource.java +++ b/src/org/traccar/api/resource/CalendarResource.java @@ -18,6 +18,7 @@ package org.traccar.api.resource; import java.sql.SQLException; import java.util.Collection; +import java.util.Set; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; @@ -47,20 +48,22 @@ public class CalendarResource extends BaseResource { @QueryParam("all") boolean all, @QueryParam("userId") long userId) throws SQLException { CalendarManager calendarManager = Context.getCalendarManager(); + Set<Long> result = null; if (all) { if (Context.getPermissionsManager().isAdmin(getUserId())) { - return calendarManager.getItems(Calendar.class, calendarManager.getAllItems()); + result = calendarManager.getAllItems(); } else { Context.getPermissionsManager().checkManager(getUserId()); - return calendarManager.getItems(Calendar.class, calendarManager.getManagedItems(getUserId())); + result = calendarManager.getManagedItems(getUserId()); } } else { if (userId == 0) { userId = getUserId(); } Context.getPermissionsManager().checkUser(getUserId(), userId); - return calendarManager.getItems(Calendar.class, calendarManager.getUserItems(userId)); + result = calendarManager.getUserItems(userId); } + return calendarManager.getItems(result); } @POST diff --git a/src/org/traccar/api/resource/DeviceResource.java b/src/org/traccar/api/resource/DeviceResource.java index 6cf7a6219..a473b7bde 100644 --- a/src/org/traccar/api/resource/DeviceResource.java +++ b/src/org/traccar/api/resource/DeviceResource.java @@ -17,6 +17,7 @@ package org.traccar.api.resource; import org.traccar.Context; import org.traccar.api.BaseResource; +import org.traccar.database.DeviceManager; import org.traccar.model.Device; import org.traccar.model.DeviceTotalDistance; import org.traccar.model.User; @@ -34,9 +35,10 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.sql.SQLException; -import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.List; +import java.util.Set; @Path("devices") @Produces(MediaType.APPLICATION_JSON) @@ -48,34 +50,34 @@ public class DeviceResource extends BaseResource { @QueryParam("all") boolean all, @QueryParam("userId") long userId, @QueryParam("uniqueId") List<String> uniqueIds, @QueryParam("id") List<Long> deviceIds) throws SQLException { + DeviceManager deviceManager = Context.getDeviceManager(); + Set<Long> result = null; if (all) { if (Context.getPermissionsManager().isAdmin(getUserId())) { - return Context.getDeviceManager().getAllDevices(); + result = deviceManager.getAllItems(); } else { Context.getPermissionsManager().checkManager(getUserId()); - return Context.getDeviceManager().getManagedDevices(getUserId()); + result = deviceManager.getManagedItems(getUserId()); } - } - if (uniqueIds.isEmpty() && deviceIds.isEmpty()) { + } else if (uniqueIds.isEmpty() && deviceIds.isEmpty()) { if (userId == 0) { userId = getUserId(); } Context.getPermissionsManager().checkUser(getUserId(), userId); - return Context.getDeviceManager().getDevices(userId); - } - - ArrayList<Device> devices = new ArrayList<>(); - - for (String uniqueId : uniqueIds) { - Device device = Context.getDeviceManager().getDeviceByUniqueId(uniqueId); - Context.getPermissionsManager().checkDevice(getUserId(), device.getId()); - devices.add(device); - } - for (Long deviceId : deviceIds) { - Context.getPermissionsManager().checkDevice(getUserId(), deviceId); - devices.add(Context.getDeviceManager().getDeviceById(deviceId)); + result = deviceManager.getUserItems(userId); + } else { + result = new HashSet<Long>(); + for (String uniqueId : uniqueIds) { + Device device = deviceManager.getByUniqueId(uniqueId); + Context.getPermissionsManager().checkDevice(getUserId(), device.getId()); + result.add(device.getId()); + } + for (Long deviceId : deviceIds) { + Context.getPermissionsManager().checkDevice(getUserId(), deviceId); + result.add(deviceId); + } } - return devices; + return deviceManager.getItems(result); } @POST @@ -83,9 +85,9 @@ public class DeviceResource extends BaseResource { Context.getPermissionsManager().checkReadonly(getUserId()); Context.getPermissionsManager().checkDeviceReadonly(getUserId()); Context.getPermissionsManager().checkDeviceLimit(getUserId()); - Context.getDeviceManager().addDevice(entity); + Context.getDeviceManager().addItem(entity); Context.getDataManager().linkObject(User.class, getUserId(), entity.getClass(), entity.getId(), true); - Context.getPermissionsManager().refreshPermissions(); + Context.getPermissionsManager().refreshDeviceAndGroupPermissions(); Context.getPermissionsManager().refreshAllExtendedPermissions(); return Response.ok(entity).build(); } @@ -96,8 +98,8 @@ public class DeviceResource extends BaseResource { Context.getPermissionsManager().checkReadonly(getUserId()); Context.getPermissionsManager().checkDeviceReadonly(getUserId()); Context.getPermissionsManager().checkDevice(getUserId(), entity.getId()); - Context.getDeviceManager().updateDevice(entity); - Context.getPermissionsManager().refreshPermissions(); + Context.getDeviceManager().updateItem(entity); + Context.getPermissionsManager().refreshDeviceAndGroupPermissions(); Context.getPermissionsManager().refreshAllExtendedPermissions(); return Response.ok(entity).build(); } @@ -108,8 +110,8 @@ public class DeviceResource extends BaseResource { Context.getPermissionsManager().checkReadonly(getUserId()); Context.getPermissionsManager().checkDeviceReadonly(getUserId()); Context.getPermissionsManager().checkDevice(getUserId(), id); - Context.getDeviceManager().removeDevice(id); - Context.getPermissionsManager().refreshPermissions(); + Context.getDeviceManager().removeItem(id); + Context.getPermissionsManager().refreshDeviceAndGroupPermissions(); Context.getPermissionsManager().refreshAllExtendedPermissions(); Context.getAliasesManager().removeDevice(id); return Response.noContent().build(); diff --git a/src/org/traccar/api/resource/DriverResource.java b/src/org/traccar/api/resource/DriverResource.java index 72eadb711..d44979998 100644 --- a/src/org/traccar/api/resource/DriverResource.java +++ b/src/org/traccar/api/resource/DriverResource.java @@ -79,7 +79,7 @@ public class DriverResource extends BaseResource { Context.getPermissionsManager().checkDevice(getUserId(), deviceId); result.retainAll(driversManager.getDeviceItems(deviceId)); } - return driversManager.getItems(Driver.class, result); + return driversManager.getItems(result); } diff --git a/src/org/traccar/api/resource/GeofenceResource.java b/src/org/traccar/api/resource/GeofenceResource.java index 47f889e9c..9a110fbcf 100644 --- a/src/org/traccar/api/resource/GeofenceResource.java +++ b/src/org/traccar/api/resource/GeofenceResource.java @@ -78,7 +78,7 @@ public class GeofenceResource extends BaseResource { Context.getPermissionsManager().checkDevice(getUserId(), deviceId); result.retainAll(geofenceManager.getDeviceItems(deviceId)); } - return geofenceManager.getItems(Geofence.class, result); + return geofenceManager.getItems(result); } diff --git a/src/org/traccar/api/resource/GroupResource.java b/src/org/traccar/api/resource/GroupResource.java index f20c95327..4482f06c0 100644 --- a/src/org/traccar/api/resource/GroupResource.java +++ b/src/org/traccar/api/resource/GroupResource.java @@ -17,6 +17,7 @@ package org.traccar.api.resource; import org.traccar.Context; import org.traccar.api.BaseResource; +import org.traccar.database.GroupsManager; import org.traccar.model.Group; import org.traccar.model.User; @@ -33,6 +34,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.sql.SQLException; import java.util.Collection; +import java.util.Set; @Path("groups") @Produces(MediaType.APPLICATION_JSON) @@ -42,28 +44,31 @@ public class GroupResource extends BaseResource { @GET public Collection<Group> get( @QueryParam("all") boolean all, @QueryParam("userId") long userId) throws SQLException { + GroupsManager groupsManager = Context.getGroupsManager(); + Set<Long> result = null; if (all) { if (Context.getPermissionsManager().isAdmin(getUserId())) { - return Context.getDeviceManager().getAllGroups(); + result = groupsManager.getAllItems(); } else { Context.getPermissionsManager().checkManager(getUserId()); - return Context.getDeviceManager().getManagedGroups(getUserId()); + result = groupsManager.getManagedItems(getUserId()); } } else { if (userId == 0) { userId = getUserId(); } Context.getPermissionsManager().checkUser(getUserId(), userId); - return Context.getDeviceManager().getGroups(userId); + result = groupsManager.getUserItems(userId); } + return groupsManager.getItems(result); } @POST public Response add(Group entity) throws SQLException { Context.getPermissionsManager().checkReadonly(getUserId()); - Context.getDeviceManager().addGroup(entity); + Context.getGroupsManager().addItem(entity); Context.getDataManager().linkObject(User.class, getUserId(), entity.getClass(), entity.getId(), true); - Context.getPermissionsManager().refreshPermissions(); + Context.getPermissionsManager().refreshDeviceAndGroupPermissions(); Context.getPermissionsManager().refreshAllExtendedPermissions(); return Response.ok(entity).build(); } @@ -73,7 +78,8 @@ public class GroupResource extends BaseResource { public Response update(Group entity) throws SQLException { Context.getPermissionsManager().checkReadonly(getUserId()); Context.getPermissionsManager().checkGroup(getUserId(), entity.getId()); - Context.getDeviceManager().updateGroup(entity); + Context.getGroupsManager().updateItem(entity); + Context.getPermissionsManager().refreshDeviceAndGroupPermissions(); Context.getPermissionsManager().refreshAllExtendedPermissions(); return Response.ok(entity).build(); } @@ -83,8 +89,8 @@ public class GroupResource extends BaseResource { public Response remove(@PathParam("id") long id) throws SQLException { Context.getPermissionsManager().checkReadonly(getUserId()); Context.getPermissionsManager().checkGroup(getUserId(), id); - Context.getDeviceManager().removeGroup(id); - Context.getPermissionsManager().refreshPermissions(); + Context.getGroupsManager().removeItem(id); + Context.getPermissionsManager().refreshDeviceAndGroupPermissions(); Context.getPermissionsManager().refreshAllExtendedPermissions(); return Response.noContent().build(); } diff --git a/src/org/traccar/api/resource/PositionResource.java b/src/org/traccar/api/resource/PositionResource.java index 9d3cd9ae6..6dab51744 100644 --- a/src/org/traccar/api/resource/PositionResource.java +++ b/src/org/traccar/api/resource/PositionResource.java @@ -87,7 +87,7 @@ public class PositionResource extends BaseResource { @QueryParam("deviceId") long deviceId, @QueryParam("from") String from, @QueryParam("to") String to) throws SQLException { Context.getPermissionsManager().checkDevice(getUserId(), deviceId); - GpxBuilder gpx = new GpxBuilder(Context.getIdentityManager().getDeviceById(deviceId).getName()); + GpxBuilder gpx = new GpxBuilder(Context.getIdentityManager().getById(deviceId).getName()); gpx.addPositions(Context.getDataManager().getPositions( deviceId, DateUtil.parseDate(from), DateUtil.parseDate(to))); return Response.ok(gpx.build()).header(HttpHeaders.CONTENT_DISPOSITION, CONTENT_DISPOSITION_VALUE_GPX).build(); diff --git a/src/org/traccar/api/resource/UserResource.java b/src/org/traccar/api/resource/UserResource.java index d3d82f99d..deb2dd2b4 100644 --- a/src/org/traccar/api/resource/UserResource.java +++ b/src/org/traccar/api/resource/UserResource.java @@ -49,17 +49,16 @@ public class UserResource extends BaseResource { Set<Long> result = null; if (Context.getPermissionsManager().isAdmin(getUserId())) { if (userId != 0) { - result = usersManager.getManagedItems(userId); + result = usersManager.getUserItems(userId); } else { result = usersManager.getAllItems(); } } else if (Context.getPermissionsManager().isManager(getUserId())) { result = usersManager.getManagedItems(getUserId()); - result.add(getUserId()); } else { throw new SecurityException("Admin or manager access required"); } - return usersManager.getItems(User.class, result); + return usersManager.getItems(result); } @PermitAll @@ -110,12 +109,8 @@ public class UserResource extends BaseResource { Context.getPermissionsManager().checkReadonly(getUserId()); Context.getPermissionsManager().checkUser(getUserId(), id); Context.getUsersManager().removeItem(id); - if (Context.getGeofenceManager() != null) { - Context.getGeofenceManager().refreshUserItems(); - } - if (Context.getNotificationManager() != null) { - Context.getNotificationManager().refresh(); - } + Context.getPermissionsManager().refreshDeviceAndGroupPermissions(); + Context.getPermissionsManager().refreshAllUsersPermissions(); return Response.noContent().build(); } |