diff options
Diffstat (limited to 'src/org/traccar/api/resource/AttributeResource.java')
-rw-r--r-- | src/org/traccar/api/resource/AttributeResource.java | 93 |
1 files changed, 9 insertions, 84 deletions
diff --git a/src/org/traccar/api/resource/AttributeResource.java b/src/org/traccar/api/resource/AttributeResource.java index 4d326779b..26a1f6931 100644 --- a/src/org/traccar/api/resource/AttributeResource.java +++ b/src/org/traccar/api/resource/AttributeResource.java @@ -17,25 +17,17 @@ package org.traccar.api.resource; import java.sql.SQLException; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; import javax.ws.rs.POST; -import javax.ws.rs.PUT; import javax.ws.rs.Path; -import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.traccar.Context; -import org.traccar.api.BaseResource; -import org.traccar.database.AttributesManager; +import org.traccar.api.ExtendedObjectResource; import org.traccar.model.Attribute; import org.traccar.model.Position; import org.traccar.processing.ComputedAttributesHandler; @@ -43,55 +35,17 @@ import org.traccar.processing.ComputedAttributesHandler; @Path("attributes/computed") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) -public class AttributeResource extends BaseResource { +public class AttributeResource extends ExtendedObjectResource<Attribute> { - @GET - public Collection<Attribute> get( - @QueryParam("all") boolean all, @QueryParam("userId") long userId, @QueryParam("groupId") long groupId, - @QueryParam("deviceId") long deviceId, @QueryParam("refresh") boolean refresh) throws SQLException { - - AttributesManager attributesManager = Context.getAttributesManager(); - if (refresh) { - attributesManager.refreshAttributes(); - } - - Set<Long> result = new HashSet<>(); - if (all) { - if (Context.getPermissionsManager().isAdmin(getUserId())) { - result.addAll(attributesManager.getAllAttributes()); - } else { - Context.getPermissionsManager().checkManager(getUserId()); - result.addAll(attributesManager.getManagedAttributes(getUserId())); - } - } else { - if (userId == 0) { - userId = getUserId(); - } - Context.getPermissionsManager().checkUser(getUserId(), userId); - result.addAll(attributesManager.getUserAttributes(userId)); - } - - if (groupId != 0) { - Context.getPermissionsManager().checkGroup(getUserId(), groupId); - result.retainAll(attributesManager.getGroupAttributes(groupId)); - } - - if (deviceId != 0) { - Context.getPermissionsManager().checkDevice(getUserId(), deviceId); - result.retainAll(attributesManager.getDeviceAttributes(deviceId)); - } - return attributesManager.getAttributes(result); - - } - - private Response add(Attribute entity) throws SQLException { - Context.getAttributesManager().addAttribute(entity); - Context.getDataManager().linkAttribute(getUserId(), entity.getId()); - Context.getAttributesManager().refreshUserAttributes(); - return Response.ok(entity).build(); + public AttributeResource() { + super(Attribute.class); } - private Response test(long deviceId, Attribute entity) { + @POST + @Path("test") + public Response test(@QueryParam("deviceId") long deviceId, Attribute entity) throws SQLException { + Context.getPermissionsManager().checkReadonly(getUserId()); + Context.getPermissionsManager().checkDevice(getUserId(), deviceId); Position last = Context.getIdentityManager().getLastPosition(deviceId); if (last != null) { Object result = new ComputedAttributesHandler().computeAttribute(entity, last); @@ -112,33 +66,4 @@ public class AttributeResource extends BaseResource { } } - @POST - public Response post(@QueryParam("deviceId") long deviceId, Attribute entity) throws SQLException { - Context.getPermissionsManager().checkReadonly(getUserId()); - if (deviceId != 0) { - Context.getPermissionsManager().checkDevice(getUserId(), deviceId); - return test(deviceId, entity); - } else { - return add(entity); - } - } - - @Path("{id}") - @PUT - public Response update(Attribute entity) throws SQLException { - Context.getPermissionsManager().checkReadonly(getUserId()); - Context.getPermissionsManager().checkAttribute(getUserId(), entity.getId()); - Context.getAttributesManager().updateAttribute(entity); - return Response.ok(entity).build(); - } - - @Path("{id}") - @DELETE - public Response remove(@PathParam("id") long id) throws SQLException { - Context.getPermissionsManager().checkReadonly(getUserId()); - Context.getPermissionsManager().checkAttribute(getUserId(), id); - Context.getAttributesManager().removeAttribute(id); - return Response.noContent().build(); - } - } |