aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/org/traccar/ServerManager.java3
-rw-r--r--src/org/traccar/api/resource/DeviceResource.java7
-rw-r--r--src/org/traccar/api/resource/SupportedCommandResource.java45
-rw-r--r--src/org/traccar/web/WebServer.java13
-rw-r--r--web/app/store/SupportedCommands.js16
5 files changed, 64 insertions, 20 deletions
diff --git a/src/org/traccar/ServerManager.java b/src/org/traccar/ServerManager.java
index dae693080..4f8e66130 100644
--- a/src/org/traccar/ServerManager.java
+++ b/src/org/traccar/ServerManager.java
@@ -100,7 +100,8 @@ public class ServerManager {
for (String commandKey : baseProtocol.getSupportedCommands()) {
SupportedCommand supportedCommand = new SupportedCommand();
supportedCommand.setKey(commandKey);
- supportedCommand.setName(commandKey);
+ String commandName = "command" + commandKey.substring(0, 1).toUpperCase() + commandKey.substring(1);
+ supportedCommand.setName(commandName);
result.add(supportedCommand);
}
}
diff --git a/src/org/traccar/api/resource/DeviceResource.java b/src/org/traccar/api/resource/DeviceResource.java
index 90d3ef675..f7494aa6a 100644
--- a/src/org/traccar/api/resource/DeviceResource.java
+++ b/src/org/traccar/api/resource/DeviceResource.java
@@ -87,11 +87,4 @@ public class DeviceResource extends BaseResource {
return Response.noContent().build();
}
- @Path("{id}/supportedcommands")
- @GET
- public Collection<SupportedCommand> get(@PathParam("id") long id) throws SQLException {
- Context.getPermissionsManager().checkDevice(getUserId(), id);
- Position latestPosition = Context.getDataManager().getLatestPosition(id);
- return Context.getServerManager().getProtocolSuppportedCommands(latestPosition.getProtocol());
- }
}
diff --git a/src/org/traccar/api/resource/SupportedCommandResource.java b/src/org/traccar/api/resource/SupportedCommandResource.java
new file mode 100644
index 000000000..849447060
--- /dev/null
+++ b/src/org/traccar/api/resource/SupportedCommandResource.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2016 Gabor Somogyi (gabor.g.somogyi@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.api.resource;
+
+import org.traccar.Context;
+import org.traccar.api.BaseResource;
+import org.traccar.model.Position;
+import org.traccar.model.SupportedCommand;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.Collections;
+
+@Path("supportedcommands")
+@Produces(MediaType.APPLICATION_JSON)
+@Consumes(MediaType.APPLICATION_JSON)
+public class SupportedCommandResource extends BaseResource {
+
+ @GET
+ public Collection<SupportedCommand> get(@QueryParam("deviceId") long deviceId) throws SQLException {
+ Context.getPermissionsManager().checkDevice(getUserId(), deviceId);
+ Position latestPosition = Context.getDataManager().getLatestPosition(deviceId);
+ if (latestPosition != null) {
+ return Context.getServerManager().getProtocolSuppportedCommands(latestPosition.getProtocol());
+ } else {
+ return Collections.EMPTY_LIST;
+ }
+ }
+
+}
diff --git a/src/org/traccar/web/WebServer.java b/src/org/traccar/web/WebServer.java
index dc933aa00..3862d1384 100644
--- a/src/org/traccar/web/WebServer.java
+++ b/src/org/traccar/web/WebServer.java
@@ -41,16 +41,9 @@ import org.traccar.api.CorsResponseFilter;
import org.traccar.api.ObjectMapperProvider;
import org.traccar.api.ResourceErrorHandler;
import org.traccar.api.SecurityRequestFilter;
-import org.traccar.api.resource.CommandResource;
-import org.traccar.api.resource.DeviceResource;
-import org.traccar.api.resource.DevicePermissionResource;
-import org.traccar.api.resource.GroupPermissionResource;
-import org.traccar.api.resource.GroupResource;
-import org.traccar.api.resource.PositionResource;
-import org.traccar.api.resource.ServerResource;
-import org.traccar.api.resource.SessionResource;
-import org.traccar.api.resource.UserResource;
+import org.traccar.api.resource.*;
import org.traccar.helper.Log;
+import org.traccar.model.SupportedCommand;
public class WebServer {
@@ -147,7 +140,7 @@ public class WebServer {
resourceConfig.register(CorsResponseFilter.class);
resourceConfig.registerClasses(ServerResource.class, SessionResource.class, CommandResource.class,
GroupPermissionResource.class, DevicePermissionResource.class, UserResource.class,
- GroupResource.class, DeviceResource.class, PositionResource.class);
+ GroupResource.class, DeviceResource.class, PositionResource.class, SupportedCommandResource.class);
servletHandler.addServlet(new ServletHolder(new ServletContainer(resourceConfig)), "/*");
handlers.addHandler(servletHandler);
diff --git a/web/app/store/SupportedCommands.js b/web/app/store/SupportedCommands.js
index 2b052b902..64e4af88d 100644
--- a/web/app/store/SupportedCommands.js
+++ b/web/app/store/SupportedCommands.js
@@ -19,10 +19,22 @@ Ext.define('Traccar.store.SupportedCommands', {
model: 'Traccar.model.SupportedCommand',
listeners: {
- 'beforeload' : function(store, options) {
+ 'beforeload' : function(store, eOpts) {
var proxy;
proxy = store.getProxy();
- proxy.setUrl('/api/devices/' + proxy.extraParams.deviceId + '/supportedcommands');
+ proxy.setUrl('/api/supportedcommands?deviceId' + proxy.extraParams.deviceId);
+ },
+ 'load' : function(store, records, successful, eOpts) {
+ if (typeof records !== "undefined") {
+ records.forEach(function(entry) {
+ if (typeof entry !== "undefined" && typeof entry.data.name !== "undefined") {
+ var translatedName = Strings[entry.data.name];
+ if (typeof translatedName !== "undefined") {
+ entry.data.name = translatedName;
+ }
+ }
+ }, this);
+ }
}
},