@ -25,8 +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.DeviceManagementConstants ;
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants ;
import org.wso2.carbon.device.mgt.common.EnrolmentInfo ;
import org.wso2.carbon.device.mgt.common.EnrolmentInfo ;
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException ;
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService ;
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.search.SearchContext ;
import org.wso2.carbon.device.mgt.common.search.SearchContext ;
@ -34,11 +32,21 @@ 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 ;
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.internal.DeviceManagementDataHolder ;
import org.wso2.carbon.device.mgt.core.search.mgt.Constants ;
import org.wso2.carbon.device.mgt.core.search.mgt.* ;
import org.wso2.carbon.device.mgt.core.search.mgt.InvalidOperatorException ;
import org.wso2.carbon.device.mgt.core.search.mgt.Processor ;
import org.wso2.carbon.device.mgt.core.search.mgt.QueryBuilder ;
import org.wso2.carbon.device.mgt.core.search.mgt.QueryHolder ;
import org.wso2.carbon.device.mgt.core.search.mgt.ResultSetAggregator ;
import org.wso2.carbon.device.mgt.core.search.mgt.SearchMgtException ;
import org.wso2.carbon.device.mgt.core.search.mgt.ValueType ;
import org.wso2.carbon.device.mgt.core.search.mgt.dao.SearchDAOException ;
import org.wso2.carbon.device.mgt.core.search.mgt.dao.SearchDAOException ;
import java.sql.* ;
import java.sql.Array ;
import java.sql.Connection ;
import java.sql.PreparedStatement ;
import java.sql.ResultSet ;
import java.sql.SQLException ;
import java.util.ArrayList ;
import java.util.ArrayList ;
import java.util.HashMap ;
import java.util.HashMap ;
import java.util.List ;
import java.util.List ;
@ -47,17 +55,9 @@ import java.util.Map;
public class ProcessorImpl implements Processor {
public class ProcessorImpl implements Processor {
private ApplicationDAO applicationDAO ;
private ApplicationDAO applicationDAO ;
private static final Log log = LogFactory . getLog ( ProcessorImpl . class ) ;
private static final Log log = LogFactory . getLog ( ProcessorImpl . class ) ;
private DeviceAccessAuthorizationService deviceAccessAuthorizationService ;
public ProcessorImpl ( ) {
public ProcessorImpl ( ) {
applicationDAO = DeviceManagementDAOFactory . getApplicationDAO ( ) ;
applicationDAO = DeviceManagementDAOFactory . getApplicationDAO ( ) ;
deviceAccessAuthorizationService = DeviceManagementDataHolder . getInstance ( )
. getDeviceAccessAuthorizationService ( ) ;
if ( deviceAccessAuthorizationService = = null ) {
String msg = "DeviceAccessAuthorization service has not initialized." ;
log . error ( msg ) ;
throw new IllegalStateException ( msg ) ;
}
}
}
@Override
@Override
@ -115,35 +115,10 @@ public class ProcessorImpl implements Processor {
devices . put ( Constants . LOCATION , locationDevices ) ;
devices . put ( Constants . LOCATION , locationDevices ) ;
List < Device > finalDevices = aggregator . aggregate ( devices ) ;
List < Device > finalDevices = aggregator . aggregate ( devices ) ;
finalDevices = authorizedDevices ( finalDevices ) ;
this . setApplicationListOfDevices ( finalDevices ) ;
this . setApplicationListOfDevices ( finalDevices ) ;
return finalDevices ;
return finalDevices ;
}
}
/ * *
* To get the authorized devices for a particular user
*
* @param devices Devices that satisfy search results
* @return Devices that satisfy search results and authorized to be viewed by particular user
* /
private List < Device > authorizedDevices ( List < Device > devices ) throws SearchMgtException {
List < Device > filteredList = new ArrayList < > ( ) ;
try {
for ( Device device : devices ) {
DeviceIdentifier deviceIdentifier = new DeviceIdentifier ( device . getDeviceIdentifier ( ) ,
device . getType ( ) ) ;
if ( deviceAccessAuthorizationService ! = null & & deviceAccessAuthorizationService
. isUserAuthorized ( deviceIdentifier ) ) {
filteredList . add ( device ) ;
}
}
return filteredList ;
} catch ( DeviceAccessAuthorizationException e ) {
log . error ( "Error getting authorized search results for logged in user" ) ;
throw new SearchMgtException ( e ) ;
}
}
@Override
@Override
public List < Device > getUpdatedDevices ( long epochTime ) throws SearchMgtException {
public List < Device > getUpdatedDevices ( long epochTime ) throws SearchMgtException {
@ -256,7 +231,6 @@ public class ProcessorImpl implements Processor {
PreparedStatement stmt = null ;
PreparedStatement stmt = null ;
ResultSet rs = null ;
ResultSet rs = null ;
List < Device > devices = new ArrayList < > ( ) ;
List < Device > devices = new ArrayList < > ( ) ;
Map < Integer , Integer > devs = new HashMap < > ( ) ;
try {
try {
conn = this . getConnection ( ) ;
conn = this . getConnection ( ) ;
stmt = conn . prepareStatement ( queryHolder . getQuery ( ) ) ;
stmt = conn . prepareStatement ( queryHolder . getQuery ( ) ) ;
@ -281,7 +255,6 @@ public class ProcessorImpl implements Processor {
rs = stmt . executeQuery ( ) ;
rs = stmt . executeQuery ( ) ;
while ( rs . next ( ) ) {
while ( rs . next ( ) ) {
if ( ! devs . containsKey ( rs . getInt ( "ID" ) ) ) {
Device device = new Device ( ) ;
Device device = new Device ( ) ;
device . setId ( rs . getInt ( "ID" ) ) ;
device . setId ( rs . getInt ( "ID" ) ) ;
device . setDescription ( rs . getString ( "DESCRIPTION" ) ) ;
device . setDescription ( rs . getString ( "DESCRIPTION" ) ) ;
@ -290,6 +263,7 @@ public class ProcessorImpl implements Processor {
device . setDeviceIdentifier ( rs . getString ( "DEVICE_IDENTIFICATION" ) ) ;
device . setDeviceIdentifier ( rs . getString ( "DEVICE_IDENTIFICATION" ) ) ;
EnrolmentInfo enrolmentInfo = new EnrolmentInfo ( ) ;
EnrolmentInfo enrolmentInfo = new EnrolmentInfo ( ) ;
enrolmentInfo . setId ( rs . getInt ( "ENROLLMENT_ID" ) ) ;
enrolmentInfo . setStatus ( EnrolmentInfo . Status . valueOf ( rs . getString ( "DE_STATUS" ) ) ) ;
enrolmentInfo . setStatus ( EnrolmentInfo . Status . valueOf ( rs . getString ( "DE_STATUS" ) ) ) ;
enrolmentInfo . setOwner ( rs . getString ( "OWNER" ) ) ;
enrolmentInfo . setOwner ( rs . getString ( "OWNER" ) ) ;
enrolmentInfo . setOwnership ( EnrolmentInfo . OwnerShip . valueOf ( rs . getString ( "OWNERSHIP" ) ) ) ;
enrolmentInfo . setOwnership ( EnrolmentInfo . OwnerShip . valueOf ( rs . getString ( "OWNERSHIP" ) ) ) ;
@ -332,8 +306,6 @@ public class ProcessorImpl implements Processor {
deviceInfo . setLocation ( deviceLocation ) ;
deviceInfo . setLocation ( deviceLocation ) ;
device . setDeviceInfo ( deviceInfo ) ;
device . setDeviceInfo ( deviceInfo ) ;
devices . add ( device ) ;
devices . add ( device ) ;
devs . put ( device . getId ( ) , device . getId ( ) ) ;
}
}
}
} catch ( SQLException e ) {
} catch ( SQLException e ) {
throw new SearchDAOException ( "Error occurred while aquiring the device details." , e ) ;
throw new SearchDAOException ( "Error occurred while aquiring the device details." , e ) ;