mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Add add/delete a group from traccar
This commit is contained in:
parent
1dd2e35f89
commit
53f4fd7ebc
@ -35,6 +35,7 @@
|
|||||||
|
|
||||||
package org.wso2.carbon.device.mgt.core.service;
|
package org.wso2.carbon.device.mgt.core.service;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
@ -64,6 +65,7 @@ import org.wso2.carbon.device.mgt.core.event.config.GroupAssignmentEventOperatio
|
|||||||
import org.wso2.carbon.device.mgt.core.geo.task.GeoFenceEventOperationManager;
|
import org.wso2.carbon.device.mgt.core.geo.task.GeoFenceEventOperationManager;
|
||||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||||
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMgtConstants;
|
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationMgtConstants;
|
||||||
|
import org.wso2.carbon.device.mgt.core.traccar.common.config.TraccarConfigurationException;
|
||||||
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
||||||
import org.wso2.carbon.user.api.UserRealm;
|
import org.wso2.carbon.user.api.UserRealm;
|
||||||
import org.wso2.carbon.user.api.UserStoreException;
|
import org.wso2.carbon.user.api.UserStoreException;
|
||||||
@ -131,7 +133,24 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
this.groupDAO.addGroupProperties(deviceGroup, updatedGroupID, tenantId);
|
this.groupDAO.addGroupProperties(deviceGroup, updatedGroupID, tenantId);
|
||||||
}
|
}
|
||||||
GroupManagementDAOFactory.commitTransaction();
|
GroupManagementDAOFactory.commitTransaction();
|
||||||
|
|
||||||
|
//add new group in traccar
|
||||||
|
try {
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceAPIClientService()
|
||||||
|
.addGroup(deviceGroup);
|
||||||
|
} catch (TraccarConfigurationException e) {
|
||||||
|
log.error("Error while disenrolling a device from Traccar " + e);
|
||||||
|
}
|
||||||
|
//add new group in traccar
|
||||||
} else {
|
} else {
|
||||||
|
//check if a group exist or not in traccar if not existing then add
|
||||||
|
/*try {
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceAPIClientService()
|
||||||
|
.addGroup(deviceGroup);
|
||||||
|
} catch (TraccarConfigurationException e) {
|
||||||
|
log.error("Error while disenrolling a device from Traccar " + e);
|
||||||
|
}*/
|
||||||
|
//check if a group exist or not in traccar
|
||||||
throw new GroupAlreadyExistException("Group exist with name " + deviceGroup.getName());
|
throw new GroupAlreadyExistException("Group exist with name " + deviceGroup.getName());
|
||||||
}
|
}
|
||||||
} catch (GroupManagementDAOException e) {
|
} catch (GroupManagementDAOException e) {
|
||||||
@ -283,6 +302,14 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("DeviceGroup " + deviceGroup.getName() + " removed.");
|
log.debug("DeviceGroup " + deviceGroup.getName() + " removed.");
|
||||||
}
|
}
|
||||||
|
//add new group in traccar
|
||||||
|
try {
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceAPIClientService()
|
||||||
|
.deleteGroup(deviceGroup);
|
||||||
|
} catch (TraccarConfigurationException e) {
|
||||||
|
log.error("Error while disenrolling a device from Traccar " + e);
|
||||||
|
}
|
||||||
|
//add new group in traccar
|
||||||
return true;
|
return true;
|
||||||
} catch (GroupManagementDAOException e) {
|
} catch (GroupManagementDAOException e) {
|
||||||
GroupManagementDAOFactory.rollbackTransaction();
|
GroupManagementDAOFactory.rollbackTransaction();
|
||||||
|
|||||||
@ -63,4 +63,12 @@ public interface DeviceAPIClientService {
|
|||||||
* @throws TraccarConfigurationException errors thrown while adding a group traccar configuration
|
* @throws TraccarConfigurationException errors thrown while adding a group traccar configuration
|
||||||
*/
|
*/
|
||||||
void addGroup(DeviceGroup group) throws TraccarConfigurationException;
|
void addGroup(DeviceGroup group) throws TraccarConfigurationException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a device Traccar configuration records
|
||||||
|
*
|
||||||
|
* @param group to be add a group
|
||||||
|
* @throws TraccarConfigurationException errors thrown while adding a group traccar configuration
|
||||||
|
*/
|
||||||
|
void deleteGroup(DeviceGroup group) throws TraccarConfigurationException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,6 +42,7 @@ import org.wso2.carbon.device.mgt.core.traccar.core.config.TraccarConfigurationM
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@ -123,7 +124,7 @@ public class TrackerClient implements TraccarClient {
|
|||||||
*/
|
*/
|
||||||
public void addDevice(TraccarDevice deviceInfo) throws TraccarConfigurationException {
|
public void addDevice(TraccarDevice deviceInfo) throws TraccarConfigurationException {
|
||||||
try{
|
try{
|
||||||
JSONObject payload = new JSONObject();
|
JSONObject payload = new JSONObject();
|
||||||
payload.put("name", deviceInfo.getDeviceName());
|
payload.put("name", deviceInfo.getDeviceName());
|
||||||
payload.put("uniqueId", deviceInfo.getUniqueId());
|
payload.put("uniqueId", deviceInfo.getUniqueId());
|
||||||
payload.put("status", deviceInfo.getStatus());
|
payload.put("status", deviceInfo.getStatus());
|
||||||
@ -205,11 +206,6 @@ public class TrackerClient implements TraccarClient {
|
|||||||
String result = getDeviceByDeviceIdentifier(deviceInfo.getDeviceIdentifier());
|
String result = getDeviceByDeviceIdentifier(deviceInfo.getDeviceIdentifier());
|
||||||
String jsonData ="{"+ "\"geodata\": "+ result+ "}";
|
String jsonData ="{"+ "\"geodata\": "+ result+ "}";
|
||||||
|
|
||||||
log.info("======================");
|
|
||||||
log.info("result");
|
|
||||||
log.info(result);
|
|
||||||
log.info(deviceInfo.getDeviceIdentifier());
|
|
||||||
log.info("===========================");
|
|
||||||
JSONObject obj = new JSONObject(jsonData);
|
JSONObject obj = new JSONObject(jsonData);
|
||||||
JSONArray geodata = obj.getJSONArray("geodata");
|
JSONArray geodata = obj.getJSONArray("geodata");
|
||||||
JSONObject jsonResponse = geodata.getJSONObject(0);
|
JSONObject jsonResponse = geodata.getJSONObject(0);
|
||||||
@ -219,11 +215,11 @@ public class TrackerClient implements TraccarClient {
|
|||||||
executor.execute(trackerExecutor);
|
executor.execute(trackerExecutor);
|
||||||
log.info("Device successfully dis-enrolled");
|
log.info("Device successfully dis-enrolled");
|
||||||
}catch (JSONException e){
|
}catch (JSONException e){
|
||||||
String msg = "Could not find the device infomation to dis-enroll the device";
|
String msg = "Could not find the device information to dis-enroll the device";
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
throw new TraccarConfigurationException(msg);
|
throw new TraccarConfigurationException(msg);
|
||||||
}catch (TraccarConfigurationException ex){
|
}catch (TraccarConfigurationException ex){
|
||||||
String msg = "Could not find the device infomation to dis-enroll the device";
|
String msg = "Could not find the device information to dis-enroll the device";
|
||||||
log.error(msg, ex);
|
log.error(msg, ex);
|
||||||
throw new TraccarConfigurationException(msg, ex);
|
throw new TraccarConfigurationException(msg, ex);
|
||||||
}
|
}
|
||||||
@ -243,7 +239,7 @@ public class TrackerClient implements TraccarClient {
|
|||||||
String context = defaultPort+"/api/groups";
|
String context = defaultPort+"/api/groups";
|
||||||
Runnable trackerExecutor = new TrackerExecutor(endpoint, context, payload, "post");
|
Runnable trackerExecutor = new TrackerExecutor(endpoint, context, payload, "post");
|
||||||
executor.execute(trackerExecutor);
|
executor.execute(trackerExecutor);
|
||||||
log.info("Group successfully on traccar");
|
log.info("Group successfully added on traccar");
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
String msg="Could not add a traccar group";
|
String msg="Could not add a traccar group";
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
@ -251,6 +247,67 @@ public class TrackerClient implements TraccarClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add Device GPS Location operation.
|
||||||
|
* @return all groups
|
||||||
|
* @throws TraccarConfigurationException Failed while add Traccar Device location operation
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getAllGroups() throws TraccarConfigurationException {
|
||||||
|
try {
|
||||||
|
String context = defaultPort+"/api/groups?all=true";
|
||||||
|
Runnable trackerExecutor = new TrackerExecutor(endpoint, context, null, "get");
|
||||||
|
executor.execute(trackerExecutor);
|
||||||
|
Request request = new Request.Builder()
|
||||||
|
.url(endpoint+context)
|
||||||
|
.addHeader(authorization, authorizationKey)
|
||||||
|
.build();
|
||||||
|
Response response = client.newCall(request).execute();
|
||||||
|
String result = response.body().string();
|
||||||
|
return result;
|
||||||
|
} catch (IOException e) {
|
||||||
|
String msg="Could not find device information";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new TraccarConfigurationException(msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add Traccar Device operation.
|
||||||
|
* @param groupInfo with groupName
|
||||||
|
* @throws TraccarConfigurationException Failed while add Traccar Device the operation
|
||||||
|
*/
|
||||||
|
public void deleteGroup(TraccarGroups groupInfo) throws TraccarConfigurationException {
|
||||||
|
try{
|
||||||
|
String result = getAllGroups();
|
||||||
|
String jsonData ="{"+ "\"groupdata\": "+ result+ "}";
|
||||||
|
|
||||||
|
JSONObject obj = new JSONObject(jsonData);
|
||||||
|
JSONArray geodata = obj.getJSONArray("groupdata");
|
||||||
|
|
||||||
|
for(int i=0; i<geodata.length();i++){
|
||||||
|
JSONObject jsonResponse = geodata.getJSONObject(i);
|
||||||
|
log.info(jsonResponse.getString("name"));
|
||||||
|
log.info(jsonResponse.getInt("id"));
|
||||||
|
if(Objects.equals(jsonResponse.getString("name"), groupInfo.getName())){
|
||||||
|
String context = defaultPort+"/api/groups/"+jsonResponse.getInt("id");
|
||||||
|
Runnable trackerExecutor = new TrackerExecutor(endpoint, context, null, "delete");
|
||||||
|
executor.execute(trackerExecutor);
|
||||||
|
log.info("Traccar group successfully deleted");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch (JSONException e){
|
||||||
|
String msg = "Could not find the device information to dis-enroll the device";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new TraccarConfigurationException(msg);
|
||||||
|
}catch (TraccarConfigurationException ex){
|
||||||
|
String msg = "Could not find the device information to dis-enroll the device";
|
||||||
|
log.error(msg, ex);
|
||||||
|
throw new TraccarConfigurationException(msg, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private TraccarGateway getTraccarGateway(){
|
private TraccarGateway getTraccarGateway(){
|
||||||
return TraccarConfigurationManager.getInstance().getTraccarConfig().getTraccarGateway(
|
return TraccarConfigurationManager.getInstance().getTraccarConfig().getTraccarGateway(
|
||||||
TraccarHandlerConstants.GATEWAY_NAME);
|
TraccarHandlerConstants.GATEWAY_NAME);
|
||||||
|
|||||||
@ -63,4 +63,10 @@ public class TraccarAPIClientServiceImpl implements DeviceAPIClientService {
|
|||||||
client.addGroup(traccarGroups);
|
client.addGroup(traccarGroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteGroup(DeviceGroup group) throws TraccarConfigurationException {
|
||||||
|
TrackerClient client = new TrackerClient();
|
||||||
|
TraccarGroups traccarGroups = new TraccarGroups(group.getName());
|
||||||
|
client.deleteGroup(traccarGroups);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,4 +35,8 @@ public interface TraccarClient {
|
|||||||
void disDevice(TraccarDevice deviceInfo) throws TraccarConfigurationException;
|
void disDevice(TraccarDevice deviceInfo) throws TraccarConfigurationException;
|
||||||
|
|
||||||
void addGroup(TraccarGroups groupInfo) throws TraccarConfigurationException;
|
void addGroup(TraccarGroups groupInfo) throws TraccarConfigurationException;
|
||||||
|
|
||||||
|
void deleteGroup(TraccarGroups groupInfo) throws TraccarConfigurationException;
|
||||||
|
|
||||||
|
String getAllGroups() throws TraccarConfigurationException;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user