Removing DeviceWrapper and all its associated usage, as it appeared to be a redundant element in the precense of 'Device'

revert-70aa11f8
prabathabey 9 years ago
parent 3813856be8
commit 9a7286a84b

@ -24,7 +24,6 @@ import org.wso2.carbon.apimgt.annotations.api.Permission;
import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.Feature; import org.wso2.carbon.device.mgt.common.Feature;
import org.wso2.carbon.device.mgt.common.app.mgt.Application; import org.wso2.carbon.device.mgt.common.app.mgt.Application;
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper;
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
import org.wso2.carbon.device.mgt.common.search.SearchContext; import org.wso2.carbon.device.mgt.common.search.SearchContext;
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceList; import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceList;
@ -298,8 +297,7 @@ public interface DeviceManagementService {
code = 200, code = 200,
message = "OK. \n Device list searched for has successfully been retrieved. Location header " + message = "OK. \n Device list searched for has successfully been retrieved. Location header " +
"contains URL of newly enrolled device", "contains URL of newly enrolled device",
response = DeviceWrapper.class, response = DeviceList.class,
responseContainer = "List",
responseHeaders = { responseHeaders = {
@ResponseHeader( @ResponseHeader(
name = "Content-Type", name = "Content-Type",

@ -23,7 +23,6 @@ import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.*; import org.wso2.carbon.device.mgt.common.*;
import org.wso2.carbon.device.mgt.common.app.mgt.Application; import org.wso2.carbon.device.mgt.common.app.mgt.Application;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException; import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper;
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException; import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
import org.wso2.carbon.device.mgt.common.search.SearchContext; import org.wso2.carbon.device.mgt.common.search.SearchContext;
@ -77,6 +76,7 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
DeviceManagementProviderService dms = DeviceMgtAPIUtils.getDeviceManagementService(); DeviceManagementProviderService dms = DeviceMgtAPIUtils.getDeviceManagementService();
PaginationRequest request = new PaginationRequest(offset, limit); PaginationRequest request = new PaginationRequest(offset, limit);
PaginationResult result; PaginationResult result;
DeviceList devices = new DeviceList();
if (type != null) { if (type != null) {
request.setDeviceType(type); request.setDeviceType(type);
@ -129,13 +129,10 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
result = dms.getAllDevices(request); result = dms.getAllDevices(request);
int resultCount = result.getRecordsTotal(); int resultCount = result.getRecordsTotal();
if (resultCount == 0) { if (resultCount == 0) {
throw new NotFoundException( Response.status(Response.Status.OK).entity(devices).build();
new ErrorResponse.ErrorResponseBuilder().setCode(404l).setMessage("No device is currently" +
" enrolled with the server").build());
} }
} }
DeviceList devices = new DeviceList();
devices.setList((List<Device>) result.getData()); devices.setList((List<Device>) result.getData());
devices.setCount(result.getRecordsTotal()); devices.setCount(result.getRecordsTotal());
return Response.status(Response.Status.OK).entity(devices).build(); return Response.status(Response.Status.OK).entity(devices).build();
@ -210,7 +207,8 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
public Response searchDevices(@QueryParam("offset") int offset, public Response searchDevices(@QueryParam("offset") int offset,
@QueryParam("limit") int limit, SearchContext searchContext) { @QueryParam("limit") int limit, SearchContext searchContext) {
SearchManagerService searchManagerService; SearchManagerService searchManagerService;
List<DeviceWrapper> devices; List<Device> devices;
DeviceList deviceList = new DeviceList();
try { try {
searchManagerService = DeviceMgtAPIUtils.getSearchManagerService(); searchManagerService = DeviceMgtAPIUtils.getSearchManagerService();
devices = searchManagerService.search(searchContext); devices = searchManagerService.search(searchContext);
@ -221,11 +219,11 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(msg).build()); new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(msg).build());
} }
if (devices == null || devices.size() == 0) { if (devices == null || devices.size() == 0) {
throw new NotFoundException( Response.status(Response.Status.OK).entity(deviceList);
new ErrorResponse.ErrorResponseBuilder().setCode(404l).setMessage("It is likely that no device is found upon " +
"the provided search filters").build());
} }
return Response.status(Response.Status.OK).entity(devices).build();
deviceList.setList(devices);
return Response.status(Response.Status.OK).entity(deviceList).build();
} }
@GET @GET

@ -19,15 +19,15 @@
package org.wso2.carbon.device.mgt.core.search.mgt; package org.wso2.carbon.device.mgt.core.search.mgt;
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper; import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.search.Condition;
import org.wso2.carbon.device.mgt.common.search.SearchContext; import org.wso2.carbon.device.mgt.common.search.SearchContext;
import java.util.List; import java.util.List;
public interface Processor { public interface Processor {
List<DeviceWrapper> execute(SearchContext searchContext) throws SearchMgtException; List<Device> execute(SearchContext searchContext) throws SearchMgtException;
List<Device> getUpdatedDevices(long epochTime) throws SearchMgtException;
List<DeviceWrapper> getUpdatedDevices(long epochTime) throws SearchMgtException;
} }

@ -19,13 +19,13 @@
package org.wso2.carbon.device.mgt.core.search.mgt; package org.wso2.carbon.device.mgt.core.search.mgt;
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper; import org.wso2.carbon.device.mgt.common.Device;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
public interface ResultSetAggregator { public interface ResultSetAggregator {
List<DeviceWrapper> aggregate(Map<String, List<DeviceWrapper>> deviceWrappers); List<Device> aggregate(Map<String, List<Device>> devices);
} }

@ -19,15 +19,15 @@
package org.wso2.carbon.device.mgt.core.search.mgt; package org.wso2.carbon.device.mgt.core.search.mgt;
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper; import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.search.SearchContext; import org.wso2.carbon.device.mgt.common.search.SearchContext;
import java.util.List; import java.util.List;
public interface SearchManagerService { public interface SearchManagerService {
List<DeviceWrapper> search(SearchContext searchContext) throws SearchMgtException; List<Device> search(SearchContext searchContext) throws SearchMgtException;
List<DeviceWrapper> getUpdated(long epochTime) throws SearchMgtException; List<Device> getUpdated(long epochTime) throws SearchMgtException;
} }

@ -19,13 +19,14 @@
package org.wso2.carbon.device.mgt.core.search.mgt.dao; package org.wso2.carbon.device.mgt.core.search.mgt.dao;
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper; import org.wso2.carbon.device.mgt.common.Device;
import java.util.List; import java.util.List;
public interface SearchDAO { public interface SearchDAO {
List<DeviceWrapper> searchDeviceDetailsTable(String query) throws SearchDAOException; List<Device> searchDeviceDetailsTable(String query) throws SearchDAOException;
List<Device> searchDevicePropertyTable(String query) throws SearchDAOException;
List<DeviceWrapper> searchDevicePropertyTable(String query) throws SearchDAOException;
} }

@ -25,7 +25,6 @@ import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo; import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo;
import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation; import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation;
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory; import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil; import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
import org.wso2.carbon.device.mgt.core.search.mgt.dao.SearchDAO; import org.wso2.carbon.device.mgt.core.search.mgt.dao.SearchDAO;
@ -38,22 +37,19 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
public class SearchDAOImpl implements SearchDAO { public class SearchDAOImpl implements SearchDAO {
private static final Log log = LogFactory.getLog(SearchDAOImpl.class); private static final Log log = LogFactory.getLog(SearchDAOImpl.class);
@Override @Override
public List<DeviceWrapper> searchDeviceDetailsTable(String query) throws SearchDAOException { public List<Device> searchDeviceDetailsTable(String query) throws SearchDAOException {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Query : " + query); log.debug("Query : " + query);
} }
Connection conn; Connection conn;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs; ResultSet rs;
List<DeviceWrapper> devices = new ArrayList<>(); List<Device> devices = new ArrayList<>();
Map<Integer, Integer> devs = new HashMap<>(); Map<Integer, Integer> devs = new HashMap<>();
try { try {
conn = this.getConnection(); conn = this.getConnection();
@ -101,15 +97,11 @@ public class SearchDAOImpl implements SearchDAO {
deviceLocation.setDeviceId(rs.getInt("ID")); deviceLocation.setDeviceId(rs.getInt("ID"));
deviceLocation.setUpdatedTime(new java.util.Date(rs.getLong("DL_UPDATED_TIMESTAMP"))); deviceLocation.setUpdatedTime(new java.util.Date(rs.getLong("DL_UPDATED_TIMESTAMP")));
DeviceWrapper wrapper = new DeviceWrapper(); deviceInfo.setLocation(deviceLocation);
wrapper.setDevice(device); device.setDeviceInfo(deviceInfo);
wrapper.setDeviceInfo(deviceInfo); devices.add(device);
wrapper.setDeviceLocation(deviceLocation);
wrapper.setDeviceIdentifier(identifier);
devices.add(wrapper);
devs.put(device.getId(), device.getId()); devs.put(device.getId(), device.getId());
} }
} }
} catch (SQLException e) { } catch (SQLException e) {
throw new SearchDAOException("Error occurred while acquiring the device details.", e); throw new SearchDAOException("Error occurred while acquiring the device details.", e);
@ -126,8 +118,7 @@ public class SearchDAOImpl implements SearchDAO {
} }
@Override @Override
public List<DeviceWrapper> searchDevicePropertyTable(String query) throws SearchDAOException { public List<Device> searchDevicePropertyTable(String query) throws SearchDAOException {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Query : " + query); log.debug("Query : " + query);
} }
@ -135,7 +126,7 @@ public class SearchDAOImpl implements SearchDAO {
Connection conn; Connection conn;
PreparedStatement stmt = null; PreparedStatement stmt = null;
ResultSet rs; ResultSet rs;
List<DeviceWrapper> devices = new ArrayList<>(); List<Device> devices = new ArrayList<>();
Map<Integer, Integer> devs = new HashMap<>(); Map<Integer, Integer> devs = new HashMap<>();
try { try {
conn = this.getConnection(); conn = this.getConnection();
@ -183,13 +174,9 @@ public class SearchDAOImpl implements SearchDAO {
deviceLocation.setDeviceId(rs.getInt("ID")); deviceLocation.setDeviceId(rs.getInt("ID"));
deviceLocation.setUpdatedTime(new java.util.Date(rs.getLong("DL_UPDATED_TIMESTAMP"))); deviceLocation.setUpdatedTime(new java.util.Date(rs.getLong("DL_UPDATED_TIMESTAMP")));
DeviceWrapper wrapper = new DeviceWrapper(); deviceInfo.setLocation(deviceLocation);
wrapper.setDevice(device); device.setDeviceInfo(deviceInfo);
wrapper.setDeviceInfo(deviceInfo); devices.add(device);
wrapper.setDeviceLocation(deviceLocation);
wrapper.setDeviceIdentifier(identifier);
devices.add(wrapper);
devs.put(device.getId(), device.getId()); devs.put(device.getId(), device.getId());
} }
@ -214,8 +201,7 @@ public class SearchDAOImpl implements SearchDAO {
return DeviceManagementDAOFactory.getConnection(); return DeviceManagementDAOFactory.getConnection();
} }
private List<DeviceWrapper> fillPropertiesOfDevices(List<DeviceWrapper> devices) throws SearchDAOException { private List<Device> fillPropertiesOfDevices(List<Device> devices) throws SearchDAOException {
if (devices.isEmpty()) { if (devices.isEmpty()) {
return null; return null;
} }
@ -249,14 +235,13 @@ public class SearchDAOImpl implements SearchDAO {
return devices; return devices;
} }
private DeviceInfo getDeviceInfo(List<DeviceWrapper> devices, int deviceId) { private DeviceInfo getDeviceInfo(List<Device> devices, int deviceId) {
for (Device device : devices) {
for (DeviceWrapper dw : devices) { if (device.getId() == deviceId) {
if (dw.getDevice().getId() == deviceId) { if (device.getDeviceInfo() == null) {
if (dw.getDeviceInfo() == null) { device.setDeviceInfo(new DeviceInfo());
dw.setDeviceInfo(new DeviceInfo());
} }
return dw.getDeviceInfo(); return device.getDeviceInfo();
} }
} }
return null; return null;

@ -19,10 +19,7 @@
package org.wso2.carbon.device.mgt.core.search.mgt.impl; package org.wso2.carbon.device.mgt.core.search.mgt.impl;
import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper;
import org.wso2.carbon.device.mgt.common.search.SearchContext; import org.wso2.carbon.device.mgt.common.search.SearchContext;
import org.wso2.carbon.device.mgt.core.dao.ApplicationDAO; import org.wso2.carbon.device.mgt.core.dao.ApplicationDAO;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException; import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
@ -48,13 +45,13 @@ public class ProcessorImpl implements Processor {
} }
@Override @Override
public List<DeviceWrapper> execute(SearchContext searchContext) throws SearchMgtException { public List<Device> execute(SearchContext searchContext) throws SearchMgtException {
QueryBuilder queryBuilder = new QueryBuilderImpl(); QueryBuilder queryBuilder = new QueryBuilderImpl();
List<DeviceWrapper> generalDevices = new ArrayList<>(); List<Device> generalDevices = new ArrayList<>();
List<List<DeviceWrapper>> allANDDevices = new ArrayList<>(); List<List<Device>> allANDDevices = new ArrayList<>();
List<List<DeviceWrapper>> allORDevices = new ArrayList<>(); List<List<Device>> allORDevices = new ArrayList<>();
List<DeviceWrapper> locationDevices = new ArrayList<>(); List<Device> locationDevices = new ArrayList<>();
try { try {
Map<String, List<String>> queries = queryBuilder.buildQueries(searchContext.getConditions()); Map<String, List<String>> queries = queryBuilder.buildQueries(searchContext.getConditions());
DeviceManagementDAOFactory.openConnection(); DeviceManagementDAOFactory.openConnection();
@ -64,13 +61,13 @@ public class ProcessorImpl implements Processor {
} }
if (queries.containsKey(Constants.PROP_AND)) { if (queries.containsKey(Constants.PROP_AND)) {
for (String query : queries.get(Constants.PROP_AND)) { for (String query : queries.get(Constants.PROP_AND)) {
List<DeviceWrapper> andDevices = searchDAO.searchDevicePropertyTable(query); List<Device> andDevices = searchDAO.searchDevicePropertyTable(query);
allANDDevices.add(andDevices); allANDDevices.add(andDevices);
} }
} }
if (queries.containsKey(Constants.PROP_OR)) { if (queries.containsKey(Constants.PROP_OR)) {
for (String query : queries.get(Constants.PROP_OR)) { for (String query : queries.get(Constants.PROP_OR)) {
List<DeviceWrapper> orDevices = searchDAO.searchDevicePropertyTable(query); List<Device> orDevices = searchDAO.searchDevicePropertyTable(query);
allORDevices.add(orDevices); allORDevices.add(orDevices);
} }
} }
@ -88,23 +85,22 @@ public class ProcessorImpl implements Processor {
DeviceManagementDAOFactory.closeConnection(); DeviceManagementDAOFactory.closeConnection();
} }
ResultSetAggregator aggregator = new ResultSetAggregatorImpl(); ResultSetAggregator aggregator = new ResultSetAggregatorImpl();
Map<String, List<DeviceWrapper>> deviceWrappers = new HashMap<>(); Map<String, List<Device>> devices = new HashMap<>();
deviceWrappers.put(Constants.GENERAL, generalDevices); devices.put(Constants.GENERAL, generalDevices);
deviceWrappers.put(Constants.PROP_AND, this.processANDSearch(allANDDevices)); devices.put(Constants.PROP_AND, this.processANDSearch(allANDDevices));
deviceWrappers.put(Constants.PROP_OR, this.processORSearch(allORDevices)); devices.put(Constants.PROP_OR, this.processORSearch(allORDevices));
deviceWrappers.put(Constants.LOCATION, locationDevices); devices.put(Constants.LOCATION, locationDevices);
List<DeviceWrapper> finalDeviceWrappers = aggregator.aggregate(deviceWrappers); List<Device> finalDevices = aggregator.aggregate(devices);
this.setApplicationListOfDevices(finalDeviceWrappers); this.setApplicationListOfDevices(finalDevices);
return finalDeviceWrappers; return finalDevices;
} }
@Override @Override
public List<DeviceWrapper> getUpdatedDevices(long epochTime) throws SearchMgtException { public List<Device> getUpdatedDevices(long epochTime) throws SearchMgtException {
if((1 + (int)Math.floor(Math.log10(epochTime))) <=10 ) { if((1 + (int)Math.floor(Math.log10(epochTime))) <=10 ) {
epochTime = epochTime * 1000; epochTime = epochTime * 1000;
@ -126,15 +122,14 @@ public class ProcessorImpl implements Processor {
} }
private List<DeviceWrapper> processANDSearch(List<List<DeviceWrapper>> deLists) { private List<Device> processANDSearch(List<List<Device>> deLists) {
List<Device> deviceList = new ArrayList<>();
List<DeviceWrapper> devices = new ArrayList<>(); List<Device> smallestDeviceList = this.findListWithLowestItems(deLists);
List<DeviceWrapper> smallestDeviceList = this.findListWithLowestItems(deLists); List<Map<Integer, Device>> maps = this.convertDeviceListToMap(deLists);
List<Map<Integer, DeviceWrapper>> maps = this.convertDeviceListToMap(deLists);
boolean valueExist = false; boolean valueExist = false;
for (DeviceWrapper dw : smallestDeviceList) { for (Device device : smallestDeviceList) {
for (Map<Integer, DeviceWrapper> deviceWrapperMap : maps) { for (Map<Integer, Device> devices : maps) {
if (deviceWrapperMap.containsKey(dw.getDevice().getId())) { if (devices.containsKey(device.getId())) {
valueExist = true; valueExist = true;
} else { } else {
valueExist = false; valueExist = false;
@ -142,63 +137,61 @@ public class ProcessorImpl implements Processor {
} }
} }
if (valueExist) { if (valueExist) {
devices.add(dw); deviceList.add(device);
} }
} }
return devices; return deviceList;
} }
private List<DeviceWrapper> processORSearch(List<List<DeviceWrapper>> deLists) { private List<Device> processORSearch(List<List<Device>> deLists) {
List<DeviceWrapper> devices = new ArrayList<>(); List<Device> devices = new ArrayList<>();
Map<Integer, DeviceWrapper> map = new HashMap<>(); Map<Integer, Device> map = new HashMap<>();
for (List<DeviceWrapper> list : deLists) { for (List<Device> list : deLists) {
for (DeviceWrapper dw : list) { for (Device device : list) {
if (!map.containsKey(dw.getDevice().getId())) { if (!map.containsKey(device.getId())) {
map.put(dw.getDevice().getId(), dw); map.put(device.getId(), device);
devices.add(dw); devices.add(device);
} }
} }
} }
return devices; return devices;
} }
private List<DeviceWrapper> findListWithLowestItems(List<List<DeviceWrapper>> deLists) { private List<Device> findListWithLowestItems(List<List<Device>> deLists) {
int size = 0; int size = 0;
List<DeviceWrapper> deviceWrappers = new ArrayList<>(); List<Device> devices = new ArrayList<>();
for (List<DeviceWrapper> list : deLists) { for (List<Device> list : deLists) {
if (size == 0) { if (size == 0) {
size = list.size(); size = list.size();
deviceWrappers = list; devices = list;
continue;
} else { } else {
if (list.size() < size) { if (list.size() < size) {
deviceWrappers = list; devices = list;
} }
} }
} }
return deviceWrappers; return devices;
} }
private List<Map<Integer, DeviceWrapper>> convertDeviceListToMap(List<List<DeviceWrapper>> deLists) { private List<Map<Integer, Device>> convertDeviceListToMap(List<List<Device>> deLists) {
List<Map<Integer, Device>> maps = new ArrayList<>();
List<Map<Integer, DeviceWrapper>> maps = new ArrayList<>(); for (List<Device> devices : deLists) {
for (List<DeviceWrapper> deviceWrapperList : deLists) { Map<Integer, Device> deviceMap = new HashMap<>();
Map<Integer, DeviceWrapper> deviceWrapperMap = new HashMap<>();
for (DeviceWrapper dw : deviceWrapperList) { for (Device device: devices) {
deviceWrapperMap.put(dw.getDevice().getId(), dw); deviceMap.put(device.getId(), device);
} }
maps.add(deviceWrapperMap); maps.add(deviceMap);
} }
return maps; return maps;
} }
private void setApplicationListOfDevices(List<DeviceWrapper> deviceWrappers) throws SearchMgtException {
private void setApplicationListOfDevices(List<Device> devices) throws SearchMgtException {
try { try {
DeviceManagementDAOFactory.openConnection(); DeviceManagementDAOFactory.openConnection();
for (DeviceWrapper wrapper : deviceWrappers) { for (Device device : devices) {
wrapper.setApplications(applicationDAO.getInstalledApplications(wrapper.getDevice().getId())); device.setApplications(applicationDAO.getInstalledApplications(device.getId()));
} }
} catch (DeviceManagementDAOException e) { } catch (DeviceManagementDAOException e) {
throw new SearchMgtException("Error occurred while fetching the Application List of devices ", e); throw new SearchMgtException("Error occurred while fetching the Application List of devices ", e);

@ -19,23 +19,26 @@
package org.wso2.carbon.device.mgt.core.search.mgt.impl; package org.wso2.carbon.device.mgt.core.search.mgt.impl;
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper; import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.core.search.mgt.Constants; import org.wso2.carbon.device.mgt.core.search.mgt.Constants;
import org.wso2.carbon.device.mgt.core.search.mgt.ResultSetAggregator; import org.wso2.carbon.device.mgt.core.search.mgt.ResultSetAggregator;
import java.util.*; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ResultSetAggregatorImpl implements ResultSetAggregator { public class ResultSetAggregatorImpl implements ResultSetAggregator {
@Override @Override
public List<DeviceWrapper> aggregate(Map<String, List<DeviceWrapper>> deviceWrappers) { public List<Device> aggregate(Map<String, List<Device>> devices) {
Map<Integer, DeviceWrapper> generalQueryMap = this.convertToMap(deviceWrappers.get(Constants.GENERAL)); Map<Integer, Device> generalQueryMap = this.convertToMap(devices.get(Constants.GENERAL));
Map<Integer, DeviceWrapper> andMap = this.convertToMap(deviceWrappers.get(Constants.PROP_AND)); Map<Integer, Device> andMap = this.convertToMap(devices.get(Constants.PROP_AND));
Map<Integer, DeviceWrapper> orMap = this.convertToMap(deviceWrappers.get(Constants.PROP_OR)); Map<Integer, Device> orMap = this.convertToMap(devices.get(Constants.PROP_OR));
Map<Integer, DeviceWrapper> locationMap = this.convertToMap(deviceWrappers.get(Constants.LOCATION)); Map<Integer, Device> locationMap = this.convertToMap(devices.get(Constants.LOCATION));
Map<Integer, DeviceWrapper> finalMap = new HashMap<>(); Map<Integer, Device> finalMap = new HashMap<>();
List<DeviceWrapper> finalResult = new ArrayList<>(); List<Device> finalResult = new ArrayList<>();
if (andMap.isEmpty()) { if (andMap.isEmpty()) {
finalMap = generalQueryMap; finalMap = generalQueryMap;
@ -70,24 +73,23 @@ public class ResultSetAggregatorImpl implements ResultSetAggregator {
return finalResult; return finalResult;
} }
private Map<Integer, DeviceWrapper> convertToMap(List<DeviceWrapper> deviceWrappers) { private Map<Integer, Device> convertToMap(List<Device> devices) {
if (devices == null) {
if (deviceWrappers == null) {
return null; return null;
} }
Map<Integer, DeviceWrapper> deviceWrapperMap = new HashMap<>(); Map<Integer, Device> deviceWrapperMap = new HashMap<>();
for (DeviceWrapper dw : deviceWrappers) { for (Device device : devices) {
deviceWrapperMap.put(dw.getDevice().getId(), dw); deviceWrapperMap.put(device.getId(), device);
} }
return deviceWrapperMap; return deviceWrapperMap;
} }
private List<DeviceWrapper> convertDeviceMapToList(Map<Integer, DeviceWrapper> map) { private List<Device> convertDeviceMapToList(Map<Integer, Device> map) {
List<DeviceWrapper> list = new ArrayList<>(); List<Device> list = new ArrayList<>();
for (Integer a : map.keySet()) { for (Integer a : map.keySet()) {
list.add(map.get(a)); list.add(map.get(a));
} }
return list; return list;
} }
} }

@ -19,7 +19,7 @@
package org.wso2.carbon.device.mgt.core.search.mgt.impl; package org.wso2.carbon.device.mgt.core.search.mgt.impl;
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper; import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.search.SearchContext; import org.wso2.carbon.device.mgt.common.search.SearchContext;
import org.wso2.carbon.device.mgt.core.search.mgt.Processor; import org.wso2.carbon.device.mgt.core.search.mgt.Processor;
import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService; import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService;
@ -29,7 +29,6 @@ import java.util.List;
public class SearchManagerServiceImpl implements SearchManagerService { public class SearchManagerServiceImpl implements SearchManagerService {
private Processor processor; private Processor processor;
public SearchManagerServiceImpl() { public SearchManagerServiceImpl() {
@ -37,13 +36,14 @@ public class SearchManagerServiceImpl implements SearchManagerService {
} }
@Override @Override
public List<DeviceWrapper> search(SearchContext searchContext) throws SearchMgtException { public List<Device> search(SearchContext searchContext) throws SearchMgtException {
return processor.execute(searchContext); return processor.execute(searchContext);
} }
@Override @Override
public List<DeviceWrapper> getUpdated(long epochTime) throws SearchMgtException { public List<Device> getUpdated(long epochTime) throws SearchMgtException {
return processor.getUpdatedDevices(epochTime); return processor.getUpdatedDevices(epochTime);
} }
} }

@ -19,7 +19,7 @@
package org.wso2.carbon.device.mgt.core.search.mgt.impl; package org.wso2.carbon.device.mgt.core.search.mgt.impl;
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper; import org.wso2.carbon.device.mgt.common.Device;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -65,22 +65,23 @@ public class Utils {
boolean bool = false; boolean bool = false;
switch (column) { switch (column) {
case "deviceModel": case "deviceModel":
bool = true; bool = true;
break; break;
case "vendor": case "vendor":
bool = true; bool = true;
break; break;
case "osVersion": case "osVersion":
bool = true; bool = true;
break; break;
case "connectionType": case "connectionType":
bool = true; bool = true;
break; break;
case "ssid": case "ssid":
bool = true; bool = true;
break; break;
default: bool =false; default:
bool = false;
break; break;
} }
@ -89,9 +90,9 @@ public class Utils {
public static String getConvertedValue(String column, String value) { public static String getConvertedValue(String column, String value) {
if(checkColumnType(column)){ if (checkColumnType(column)) {
return "\'" + value + "\'"; return "\'" + value + "\'";
} else return value; } else return value;
} }
@ -130,28 +131,28 @@ public class Utils {
return stList; return stList;
} }
public static Integer[] getArrayOfDeviceIds(List<DeviceWrapper> deviceWrappers) { public static Integer[] getArrayOfDeviceIds(List<Device> devices) {
Integer[] arr = new Integer[devices.size()];
Integer[] arr = new Integer[deviceWrappers.size()];
int x = 0; int x = 0;
for (DeviceWrapper dw : deviceWrappers) { for (Device device : devices) {
arr[x] = dw.getDevice().getId(); arr[x] = device.getId();
x++; x++;
} }
return arr; return arr;
} }
public static String getDeviceIdsAsString(List<DeviceWrapper> deviceWrappers) { public static String getDeviceIdsAsString(List<Device> devices) {
String str = ""; String str = "";
for (DeviceWrapper dw : deviceWrappers) { for (Device device : devices) {
str += dw.getDevice().getId() + ","; str += device.getId() + ",";
} }
if (deviceWrappers.isEmpty()) { if (devices.isEmpty()) {
return null; return null;
} }
return str.substring(0, str.length() - 1); return str.substring(0, str.length() - 1);
} }
} }

@ -24,7 +24,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper; import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.search.Condition; import org.wso2.carbon.device.mgt.common.search.Condition;
import org.wso2.carbon.device.mgt.common.search.SearchContext; import org.wso2.carbon.device.mgt.common.search.SearchContext;
import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest; import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
@ -79,22 +79,22 @@ public class SearchDevice extends BaseDeviceManagementTest {
context.setConditions(conditions); context.setConditions(conditions);
SearchManagerService service = new SearchManagerServiceImpl(); SearchManagerService service = new SearchManagerServiceImpl();
List<DeviceWrapper> deviceWrappers = service.search(context); List<Device> devices = service.search(context);
Gson gson = new Gson(); Gson gson = new Gson();
String bbbb = gson.toJson(deviceWrappers); String bbbb = gson.toJson(devices);
log.info(bbbb); log.info(bbbb);
for (DeviceWrapper dw : deviceWrappers) { for (Device device : devices) {
log.debug(dw.getDevice().getDescription()); log.debug(device.getDescription());
log.debug(dw.getDevice().getDeviceIdentifier()); log.debug(device.getDeviceIdentifier());
} }
} }
@Test @Test
public void doValidLocationSearch() throws Exception{ public void doValidLocationSearch() throws Exception {
SearchContext context = new SearchContext(); SearchContext context = new SearchContext();
List<Condition> conditions = new ArrayList<>(); List<Condition> conditions = new ArrayList<>();
@ -109,21 +109,21 @@ public class SearchDevice extends BaseDeviceManagementTest {
context.setConditions(conditions); context.setConditions(conditions);
SearchManagerService service = new SearchManagerServiceImpl(); SearchManagerService service = new SearchManagerServiceImpl();
List<DeviceWrapper> deviceWrappers = service.search(context); List<Device> devices = service.search(context);
Gson gson = new Gson(); Gson gson = new Gson();
String bbbb = gson.toJson(deviceWrappers); String bbbb = gson.toJson(devices);
log.info("Valid Search " + bbbb); log.info("Valid Search " + bbbb);
for (DeviceWrapper dw : deviceWrappers) { for (Device device : devices) {
log.debug(dw.getDevice().getDescription()); log.debug(device.getDescription());
log.debug(dw.getDevice().getDeviceIdentifier()); log.debug(device.getDeviceIdentifier());
} }
} }
@Test @Test
public void doInvalidLocationSearch() throws Exception{ public void doInvalidLocationSearch() throws Exception {
SearchContext context = new SearchContext(); SearchContext context = new SearchContext();
List<Condition> conditions = new ArrayList<>(); List<Condition> conditions = new ArrayList<>();
@ -138,21 +138,21 @@ public class SearchDevice extends BaseDeviceManagementTest {
context.setConditions(conditions); context.setConditions(conditions);
SearchManagerService service = new SearchManagerServiceImpl(); SearchManagerService service = new SearchManagerServiceImpl();
List<DeviceWrapper> deviceWrappers = service.search(context); List<Device> devices = service.search(context);
Gson gson = new Gson(); Gson gson = new Gson();
String bbbb = gson.toJson(deviceWrappers); String bbbb = gson.toJson(devices);
log.info("Invalid Search " + bbbb); log.info("Invalid Search " + bbbb);
for (DeviceWrapper dw : deviceWrappers) { for (Device device : devices) {
log.debug(dw.getDevice().getDescription()); log.debug(device.getDescription());
log.debug(dw.getDevice().getDeviceIdentifier()); log.debug(device.getDeviceIdentifier());
} }
} }
@Test @Test
public void doStringSearch() throws Exception{ public void doStringSearch() throws Exception {
SearchContext context = new SearchContext(); SearchContext context = new SearchContext();
List<Condition> conditions = new ArrayList<>(); List<Condition> conditions = new ArrayList<>();
@ -167,16 +167,16 @@ public class SearchDevice extends BaseDeviceManagementTest {
context.setConditions(conditions); context.setConditions(conditions);
SearchManagerService service = new SearchManagerServiceImpl(); SearchManagerService service = new SearchManagerServiceImpl();
List<DeviceWrapper> deviceWrappers = service.search(context); List<Device> devices = service.search(context);
Gson gson = new Gson(); Gson gson = new Gson();
String bbbb = gson.toJson(deviceWrappers); String bbbb = gson.toJson(devices);
log.info("Invalid Search " + bbbb); log.info("Invalid Search " + bbbb);
for (DeviceWrapper dw : deviceWrappers) { for (Device device : devices) {
log.debug(dw.getDevice().getDescription()); log.debug(device.getDescription());
log.debug(dw.getDevice().getDeviceIdentifier()); log.debug(device.getDeviceIdentifier());
} }
} }
} }

Loading…
Cancel
Save