mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Adding profile feature bean and almost completing the dao classes, adding the PIP implementation, fixing the test cases, adding the policy manager relavant methods for PIP and PAP.
This commit is contained in:
parent
21782b0714
commit
e53f2d2063
@ -21,29 +21,30 @@ package org.wso2.carbon.policy.evaluator;
|
||||
|
||||
import org.wso2.carbon.policy.mgt.common.Feature;
|
||||
import org.wso2.carbon.policy.mgt.common.Policy;
|
||||
import org.wso2.carbon.policy.mgt.common.ProfileFeature;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface FeatureFilter {
|
||||
|
||||
List<Feature> evaluate(List<Policy> policyList, List<FeatureRules> featureRulesList);
|
||||
List<ProfileFeature> evaluate(List<Policy> policyList, List<FeatureRules> featureRulesList);
|
||||
|
||||
List<Feature> extractFeatures(List<Policy> policyList);
|
||||
List<ProfileFeature> extractFeatures(List<Policy> policyList);
|
||||
|
||||
List<Feature> evaluateFeatures(List<Feature> featureList, List<FeatureRules> featureRulesList);
|
||||
List<ProfileFeature> evaluateFeatures(List<ProfileFeature> featureList, List<FeatureRules> featureRulesList);
|
||||
|
||||
void getDenyOverridesFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList);
|
||||
void getDenyOverridesFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList);
|
||||
|
||||
void getPermitOverridesFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList);
|
||||
void getPermitOverridesFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList);
|
||||
|
||||
void getFirstApplicableFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList);
|
||||
void getFirstApplicableFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList);
|
||||
|
||||
void getLastApplicableFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList);
|
||||
void getLastApplicableFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList);
|
||||
|
||||
void getAllApplicableFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList);
|
||||
void getAllApplicableFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList);
|
||||
|
||||
void getHighestApplicableFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList);
|
||||
void getHighestApplicableFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList);
|
||||
|
||||
void getLowestApplicableFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList);
|
||||
void getLowestApplicableFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList);
|
||||
}
|
||||
|
||||
@ -21,6 +21,7 @@ package org.wso2.carbon.policy.evaluator;
|
||||
import org.wso2.carbon.policy.evaluator.utils.Constants;
|
||||
import org.wso2.carbon.policy.mgt.common.Feature;
|
||||
import org.wso2.carbon.policy.mgt.common.Policy;
|
||||
import org.wso2.carbon.policy.mgt.common.ProfileFeature;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -39,7 +40,7 @@ public class FeatureFilterImpl implements FeatureFilter {
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Feature> evaluate(List<Policy> policyList, List<FeatureRules> featureRulesList) {
|
||||
public List<ProfileFeature> evaluate(List<Policy> policyList, List<FeatureRules> featureRulesList) {
|
||||
return evaluateFeatures(extractFeatures(policyList), featureRulesList);
|
||||
}
|
||||
|
||||
@ -48,10 +49,10 @@ public class FeatureFilterImpl implements FeatureFilter {
|
||||
* @param policyList
|
||||
* @return
|
||||
*/
|
||||
public List<Feature> extractFeatures(List<Policy> policyList) {
|
||||
List<Feature> featureList = new ArrayList<Feature>();
|
||||
public List<ProfileFeature> extractFeatures(List<Policy> policyList) {
|
||||
List<ProfileFeature> featureList = new ArrayList<ProfileFeature>();
|
||||
for (Policy policy : policyList) {
|
||||
featureList.addAll(policy.getProfile().getFeaturesList());
|
||||
featureList.addAll(policy.getProfile().getProfileFeaturesList());
|
||||
}
|
||||
return featureList;
|
||||
}
|
||||
@ -62,8 +63,8 @@ public class FeatureFilterImpl implements FeatureFilter {
|
||||
* @param featureRulesList
|
||||
* @return
|
||||
*/
|
||||
public List<Feature> evaluateFeatures(List<Feature> featureList, List<FeatureRules> featureRulesList) {
|
||||
List<Feature> effectiveFeatureList = new ArrayList<Feature>();
|
||||
public List<ProfileFeature> evaluateFeatures(List<ProfileFeature> featureList, List<FeatureRules> featureRulesList) {
|
||||
List<ProfileFeature> effectiveFeatureList = new ArrayList<ProfileFeature>();
|
||||
for (FeatureRules rule : featureRulesList) {
|
||||
String ruleName = rule.getEvaluationCriteria();
|
||||
String featureName = rule.getName();
|
||||
@ -100,11 +101,11 @@ public class FeatureFilterImpl implements FeatureFilter {
|
||||
* @param featureList
|
||||
* @param effectiveFeatureList
|
||||
*/
|
||||
public void getDenyOverridesFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList) {
|
||||
Feature evaluatedFeature = null;
|
||||
for (Feature feature : featureList) {
|
||||
if (feature.getName().equalsIgnoreCase(featureName)) {
|
||||
if (feature.getRuleValue().equalsIgnoreCase("Deny")) {
|
||||
public void getDenyOverridesFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList) {
|
||||
ProfileFeature evaluatedFeature = null;
|
||||
for (ProfileFeature feature : featureList) {
|
||||
if (feature.getFeature().getName().equalsIgnoreCase(featureName)) {
|
||||
if (feature.getFeature().getRuleValue().equalsIgnoreCase("Deny")) {
|
||||
evaluatedFeature = feature;
|
||||
effectiveFeatureList.add(evaluatedFeature);
|
||||
return;
|
||||
@ -127,11 +128,11 @@ public class FeatureFilterImpl implements FeatureFilter {
|
||||
* @param featureList
|
||||
* @param effectiveFeatureList
|
||||
*/
|
||||
public void getPermitOverridesFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList) {
|
||||
Feature evaluatedFeature = null;
|
||||
for (Feature feature : featureList) {
|
||||
if (feature.getName().equalsIgnoreCase(featureName)) {
|
||||
if (feature.getRuleValue().equalsIgnoreCase("Permit")) {
|
||||
public void getPermitOverridesFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList) {
|
||||
ProfileFeature evaluatedFeature = null;
|
||||
for (ProfileFeature feature : featureList) {
|
||||
if (feature.getFeature().getName().equalsIgnoreCase(featureName)) {
|
||||
if (feature.getFeature().getRuleValue().equalsIgnoreCase("Permit")) {
|
||||
evaluatedFeature = feature;
|
||||
effectiveFeatureList.add(evaluatedFeature);
|
||||
return;
|
||||
@ -154,9 +155,9 @@ public class FeatureFilterImpl implements FeatureFilter {
|
||||
* @param featureList
|
||||
* @param effectiveFeatureList
|
||||
*/
|
||||
public void getFirstApplicableFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList) {
|
||||
for (Feature feature : featureList) {
|
||||
if (feature.getName().equalsIgnoreCase(featureName)) {
|
||||
public void getFirstApplicableFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList) {
|
||||
for (ProfileFeature feature : featureList) {
|
||||
if (feature.getFeature().getName().equalsIgnoreCase(featureName)) {
|
||||
effectiveFeatureList.add(feature);
|
||||
return;
|
||||
|
||||
@ -172,10 +173,10 @@ public class FeatureFilterImpl implements FeatureFilter {
|
||||
* @param featureList
|
||||
* @param effectiveFeatureList
|
||||
*/
|
||||
public void getLastApplicableFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList) {
|
||||
Feature evaluatedFeature = null;
|
||||
for (Feature feature : featureList) {
|
||||
if (feature.getName().equalsIgnoreCase(featureName)) {
|
||||
public void getLastApplicableFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList) {
|
||||
ProfileFeature evaluatedFeature = null;
|
||||
for (ProfileFeature feature : featureList) {
|
||||
if (feature.getFeature().getName().equalsIgnoreCase(featureName)) {
|
||||
evaluatedFeature = feature;
|
||||
}
|
||||
}
|
||||
@ -192,9 +193,9 @@ public class FeatureFilterImpl implements FeatureFilter {
|
||||
* @param featureList
|
||||
* @param effectiveFeatureList
|
||||
*/
|
||||
public void getAllApplicableFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList) {
|
||||
for (Feature feature : featureList) {
|
||||
if (feature.getName().equalsIgnoreCase(featureName)) {
|
||||
public void getAllApplicableFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList) {
|
||||
for (ProfileFeature feature : featureList) {
|
||||
if (feature.getFeature().getName().equalsIgnoreCase(featureName)) {
|
||||
effectiveFeatureList.add(feature);
|
||||
}
|
||||
}
|
||||
@ -208,13 +209,13 @@ public class FeatureFilterImpl implements FeatureFilter {
|
||||
* @param featureList
|
||||
* @param effectiveFeatureList
|
||||
*/
|
||||
public void getHighestApplicableFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList) {
|
||||
Feature evaluatedFeature = null;
|
||||
public void getHighestApplicableFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList) {
|
||||
ProfileFeature evaluatedFeature = null;
|
||||
int intValve = 0;
|
||||
for (Feature feature : featureList) {
|
||||
if (feature.getName().equalsIgnoreCase(featureName)) {
|
||||
if (Integer.parseInt(feature.getRuleValue()) > intValve) {
|
||||
intValve = Integer.parseInt(feature.getRuleValue());
|
||||
for (ProfileFeature feature : featureList) {
|
||||
if (feature.getFeature().getName().equalsIgnoreCase(featureName)) {
|
||||
if (Integer.parseInt(feature.getFeature().getRuleValue()) > intValve) {
|
||||
intValve = Integer.parseInt(feature.getFeature().getRuleValue());
|
||||
evaluatedFeature = feature;
|
||||
}
|
||||
}
|
||||
@ -232,13 +233,13 @@ public class FeatureFilterImpl implements FeatureFilter {
|
||||
* @param featureList
|
||||
* @param effectiveFeatureList
|
||||
*/
|
||||
public void getLowestApplicableFeatures(String featureName, List<Feature> featureList, List<Feature> effectiveFeatureList) {
|
||||
Feature evaluatedFeature = null;
|
||||
public void getLowestApplicableFeatures(String featureName, List<ProfileFeature> featureList, List<ProfileFeature> effectiveFeatureList) {
|
||||
ProfileFeature evaluatedFeature = null;
|
||||
int intValve = 0;
|
||||
for (Feature feature : featureList) {
|
||||
if (feature.getName().equalsIgnoreCase(featureName)) {
|
||||
if (Integer.parseInt(feature.getRuleValue()) < intValve) {
|
||||
intValve = Integer.parseInt(feature.getRuleValue());
|
||||
for (ProfileFeature feature : featureList) {
|
||||
if (feature.getFeature().getName().equalsIgnoreCase(featureName)) {
|
||||
if (Integer.parseInt(feature.getFeature().getRuleValue()) < intValve) {
|
||||
intValve = Integer.parseInt(feature.getFeature().getRuleValue());
|
||||
evaluatedFeature = feature;
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,7 +20,7 @@ package org.wso2.carbon.policy.information.point;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.policy.mgt.common.Feature;
|
||||
import org.wso2.carbon.policy.mgt.common.PIPDeviceData;
|
||||
import org.wso2.carbon.policy.mgt.common.PIPDevice;
|
||||
import org.wso2.carbon.policy.mgt.common.Policy;
|
||||
import org.wso2.carbon.policy.mgt.common.PolicyInformationPoint;
|
||||
|
||||
@ -28,12 +28,12 @@ import java.util.List;
|
||||
|
||||
public class PolicyInformationServiceImpl implements PolicyInformationPoint {
|
||||
@Override
|
||||
public PIPDeviceData getDeviceData(DeviceIdentifier deviceIdentifier) {
|
||||
public PIPDevice getDeviceData(DeviceIdentifier deviceIdentifier) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Policy> getRelatedPolicies(PIPDeviceData pipDeviceData) {
|
||||
public List<Policy> getRelatedPolicies(PIPDevice pipDevice) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -24,8 +24,9 @@ public class Feature {
|
||||
private String code;
|
||||
private String name;
|
||||
private String description;
|
||||
private Object attribute;
|
||||
// private Object attribute;
|
||||
private String ruleValue;
|
||||
private int deviceTypeId;
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
@ -67,11 +68,19 @@ public class Feature {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Object getAttribute() {
|
||||
/* public Object getAttribute() {
|
||||
return attribute;
|
||||
}
|
||||
|
||||
public void setAttribute(Object attribute) {
|
||||
this.attribute = attribute;
|
||||
}*/
|
||||
|
||||
public int getDeviceTypeId() {
|
||||
return deviceTypeId;
|
||||
}
|
||||
|
||||
public void setDeviceTypeId(int deviceTypeId) {
|
||||
this.deviceTypeId = deviceTypeId;
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
package org.wso2.carbon.policy.mgt.common;
|
||||
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.core.dto.Device;
|
||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||
|
||||
@ -26,13 +27,14 @@ import java.sql.Timestamp;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class PIPDeviceData {
|
||||
public class PIPDevice {
|
||||
|
||||
Device device;
|
||||
DeviceType deviceType;
|
||||
DeviceIdentifier deviceIdentifier;
|
||||
String ownershipType;
|
||||
List<String> userIds;
|
||||
List<String> roles;
|
||||
String roles [];
|
||||
String altitude;
|
||||
String longitude;
|
||||
Timestamp timestamp;
|
||||
@ -72,11 +74,11 @@ public class PIPDeviceData {
|
||||
this.userIds = userIds;
|
||||
}
|
||||
|
||||
public List<String> getRoles() {
|
||||
public String[] getRoles() {
|
||||
return roles;
|
||||
}
|
||||
|
||||
public void setRoles(List<String> roles) {
|
||||
public void setRoles(String roles[]) {
|
||||
this.roles = roles;
|
||||
}
|
||||
|
||||
@ -111,4 +113,12 @@ public class PIPDeviceData {
|
||||
public void setAttributes(Map<String, Object> attributes) {
|
||||
this.attributes = attributes;
|
||||
}
|
||||
|
||||
public DeviceIdentifier getDeviceIdentifier() {
|
||||
return deviceIdentifier;
|
||||
}
|
||||
|
||||
public void setDeviceIdentifier(DeviceIdentifier deviceIdentifier) {
|
||||
this.deviceIdentifier = deviceIdentifier;
|
||||
}
|
||||
}
|
||||
@ -18,6 +18,9 @@
|
||||
|
||||
package org.wso2.carbon.policy.mgt.common;
|
||||
|
||||
|
||||
import org.wso2.carbon.device.mgt.core.dto.Device;
|
||||
|
||||
import java.sql.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -33,7 +36,7 @@ public class Policy {
|
||||
private boolean generic; // If true, this should be applied to all related device.
|
||||
private List<String> roleList; // Roles which this policy should be applied.
|
||||
private String ownershipType; // Ownership type (COPE, BYOD, CPE)
|
||||
private List<String> DeviceList; // Individual devices this policy should be applied
|
||||
private List<Device> DeviceList; // Individual devices this policy should be applied
|
||||
|
||||
/*Dynamic policy attributes*/
|
||||
|
||||
@ -47,9 +50,11 @@ public class Policy {
|
||||
|
||||
/*These are related to location based policies*/
|
||||
|
||||
private String altitude; // Altitude
|
||||
private String latitude; // Latitude
|
||||
private String longitude; // Longitude
|
||||
|
||||
private int tenantId;
|
||||
|
||||
/*This will be used to record attributes which will be used by customer extended PDPs and PIPs*/
|
||||
|
||||
private Map<String, Object> attributes;
|
||||
@ -110,11 +115,11 @@ public class Policy {
|
||||
this.ownershipType = ownershipType;
|
||||
}
|
||||
|
||||
public List<String> getDeviceList() {
|
||||
public List<Device> getDeviceList() {
|
||||
return DeviceList;
|
||||
}
|
||||
|
||||
public void setDeviceList(List<String> deviceList) {
|
||||
public void setDeviceList(List<Device> deviceList) {
|
||||
DeviceList = deviceList;
|
||||
}
|
||||
|
||||
@ -150,12 +155,12 @@ public class Policy {
|
||||
this.endDate = endDate;
|
||||
}
|
||||
|
||||
public String getAltitude() {
|
||||
return altitude;
|
||||
public String getLatitude() {
|
||||
return latitude;
|
||||
}
|
||||
|
||||
public void setAltitude(String altitude) {
|
||||
this.altitude = altitude;
|
||||
public void setLatitude(String latitude) {
|
||||
this.latitude = latitude;
|
||||
}
|
||||
|
||||
public String getLongitude() {
|
||||
@ -173,4 +178,12 @@ public class Policy {
|
||||
public void setAttributes(Map<String, Object> attributes) {
|
||||
this.attributes = attributes;
|
||||
}
|
||||
|
||||
public int getTenantId() {
|
||||
return tenantId;
|
||||
}
|
||||
|
||||
public void setTenantId(int tenantId) {
|
||||
this.tenantId = tenantId;
|
||||
}
|
||||
}
|
||||
@ -18,6 +18,10 @@
|
||||
|
||||
package org.wso2.carbon.policy.mgt.common;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This interface defines the policy management which should be implemented by the plugins
|
||||
*/
|
||||
@ -39,13 +43,12 @@ public interface PolicyAdministratorPoint {
|
||||
/**
|
||||
* This method adds a policy per device which should be implemented by the related plugins.
|
||||
*
|
||||
* @param deviceId
|
||||
* @param deviceType
|
||||
* @param deviceIdentifierr
|
||||
* @param policy
|
||||
* @return primary key (generated key)
|
||||
*/
|
||||
|
||||
Policy addPolicyToDevice(String deviceId, String deviceType, Policy policy) throws FeatureManagementException, PolicyManagementException;
|
||||
Policy addPolicyToDevice(DeviceIdentifier deviceIdentifierr, Policy policy) throws FeatureManagementException, PolicyManagementException;
|
||||
|
||||
/**
|
||||
* This method adds the policy to specific role.
|
||||
@ -62,7 +65,7 @@ public interface PolicyAdministratorPoint {
|
||||
* @return
|
||||
*/
|
||||
|
||||
Policy getPolicy();
|
||||
List<Policy> getPolicies() throws PolicyManagementException;
|
||||
|
||||
/**
|
||||
* This method gives the device specific policy.
|
||||
@ -72,7 +75,7 @@ public interface PolicyAdministratorPoint {
|
||||
* @return Policy
|
||||
*/
|
||||
|
||||
Policy getPolicyOfDevice(String deviceId, String deviceType) throws FeatureManagementException, PolicyManagementException;
|
||||
List<Policy> getPoliciesOfDevice(String deviceId, String deviceType) throws FeatureManagementException, PolicyManagementException;
|
||||
|
||||
/**
|
||||
* This method returns the device type specific policy.
|
||||
@ -81,7 +84,7 @@ public interface PolicyAdministratorPoint {
|
||||
* @return Policy
|
||||
*/
|
||||
|
||||
Policy getPolicyOfDeviceType(String deviceType) throws FeatureManagementException, PolicyManagementException;
|
||||
List<Policy> getPoliciesOfDeviceType(String deviceType) throws FeatureManagementException, PolicyManagementException;
|
||||
|
||||
/**
|
||||
* This method returns the role specific policy.
|
||||
@ -90,38 +93,35 @@ public interface PolicyAdministratorPoint {
|
||||
* @return
|
||||
*/
|
||||
|
||||
Policy getPolicyOfRole(String roleName) throws FeatureManagementException, PolicyManagementException;
|
||||
List<Policy> getPoliciesOfRole(String roleName) throws FeatureManagementException, PolicyManagementException;
|
||||
|
||||
|
||||
/**
|
||||
* This method checks weather a policy is available for a device.
|
||||
*
|
||||
* @param deviceId
|
||||
* @param deviceType
|
||||
* @param deviceIdentifier
|
||||
* @return
|
||||
* @throws PolicyManagementException
|
||||
*/
|
||||
boolean isPolicyAvailableForDevice(String deviceId, String deviceType) throws PolicyManagementException;
|
||||
boolean isPolicyAvailableForDevice(DeviceIdentifier deviceIdentifier) throws PolicyManagementException;
|
||||
|
||||
|
||||
/**
|
||||
* This method checks weather a policy is used by a particular device.
|
||||
*
|
||||
* @param deviceId
|
||||
* @param deviceType
|
||||
* @param deviceIdentifier
|
||||
* @return
|
||||
* @throws PolicyManagementException
|
||||
*/
|
||||
boolean isPolicyApplied(String deviceId, String deviceType) throws PolicyManagementException;
|
||||
boolean isPolicyApplied(DeviceIdentifier deviceIdentifier) throws PolicyManagementException;
|
||||
|
||||
|
||||
/**
|
||||
* @param deviceId
|
||||
* @param deviceType
|
||||
* @param deviceIdentifier
|
||||
* @param policy
|
||||
* @throws PolicyManagementException
|
||||
*/
|
||||
void setPolicyUsed(String deviceId, String deviceType, Policy policy) throws PolicyManagementException;
|
||||
void setPolicyUsed(DeviceIdentifier deviceIdentifier, Policy policy) throws PolicyManagementException;
|
||||
|
||||
/**
|
||||
* This method will add the profile to database,
|
||||
|
||||
@ -20,7 +20,6 @@
|
||||
package org.wso2.carbon.policy.mgt.common;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.core.dto.Device;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -33,16 +32,16 @@ public interface PolicyInformationPoint {
|
||||
* This method will return the data related Device, Some of the device data will provided in the initial pipDeviceData object such as
|
||||
* device id, device time and location, Other data such as roles, owned users and ownership type will be filled by this method.
|
||||
* @param deviceIdentifier device data.
|
||||
* @return PIPDeviceData
|
||||
* @return PIPDevice
|
||||
*/
|
||||
PIPDeviceData getDeviceData(DeviceIdentifier deviceIdentifier) throws PolicyManagementException;
|
||||
PIPDevice getDeviceData(DeviceIdentifier deviceIdentifier) throws PolicyManagementException;
|
||||
|
||||
/**
|
||||
* This method will retrieve the policies related given device Data.
|
||||
* @param pipDeviceData
|
||||
* @param pipDevice
|
||||
* @return
|
||||
*/
|
||||
List<Policy> getRelatedPolicies(PIPDeviceData pipDeviceData) throws PolicyManagementException;
|
||||
List<Policy> getRelatedPolicies(PIPDevice pipDevice) throws PolicyManagementException;
|
||||
|
||||
/**
|
||||
* This is will retrieve the features related to device type. This feature list will be used for dynamically
|
||||
|
||||
@ -33,7 +33,8 @@ public class Profile {
|
||||
private DeviceType deviceType;
|
||||
private Timestamp createdDate;
|
||||
private Timestamp updatedDate;
|
||||
private List<Feature> featuresList; // Features included in the policies.
|
||||
// private List<Feature> featuresList; // Features included in the policies.
|
||||
private List<ProfileFeature> profileFeaturesList; // Features included in the policies.
|
||||
|
||||
public DeviceType getDeviceType() {
|
||||
return deviceType;
|
||||
@ -51,13 +52,13 @@ public class Profile {
|
||||
this.tenantId = tenantId;
|
||||
}
|
||||
|
||||
public List<Feature> getFeaturesList() {
|
||||
/* public List<Feature> getFeaturesList() {
|
||||
return featuresList;
|
||||
}
|
||||
|
||||
public void setFeaturesList(List<Feature> featuresList) {
|
||||
this.featuresList = featuresList;
|
||||
}
|
||||
}*/
|
||||
|
||||
public int getProfileId() {
|
||||
return profileId;
|
||||
@ -90,4 +91,12 @@ public class Profile {
|
||||
public void setUpdatedDate(Timestamp updatedDate) {
|
||||
this.updatedDate = updatedDate;
|
||||
}
|
||||
|
||||
public List<ProfileFeature> getProfileFeaturesList() {
|
||||
return profileFeaturesList;
|
||||
}
|
||||
|
||||
public void setProfileFeaturesList(List<ProfileFeature> profileFeaturesList) {
|
||||
this.profileFeaturesList = profileFeaturesList;
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright (c) 2015 WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you 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.wso2.carbon.policy.mgt.common;
|
||||
|
||||
public class ProfileFeature {
|
||||
|
||||
private int id;
|
||||
private Feature feature;
|
||||
private int profileId;
|
||||
private Object content;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Feature getFeature() {
|
||||
return feature;
|
||||
}
|
||||
|
||||
public void setFeature(Feature feature) {
|
||||
this.feature = feature;
|
||||
}
|
||||
|
||||
public int getProfileId() {
|
||||
return profileId;
|
||||
}
|
||||
|
||||
public void setProfileId(int profileId) {
|
||||
this.profileId = profileId;
|
||||
}
|
||||
|
||||
public Object getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(Object content) {
|
||||
this.content = content;
|
||||
}
|
||||
}
|
||||
@ -34,7 +34,7 @@ public class PolicyCreator {
|
||||
Feature feature = new Feature();
|
||||
feature.setName("Camera");
|
||||
feature.setCode("502A");
|
||||
feature.setAttribute("disable");
|
||||
// feature.setAttribute("disable");
|
||||
|
||||
List<Feature> featureList = new ArrayList<Feature>();
|
||||
featureList.add(feature);
|
||||
@ -45,7 +45,7 @@ public class PolicyCreator {
|
||||
profile.setTenantId(-1234);
|
||||
|
||||
policy.setProfile(profile);
|
||||
profile.setFeaturesList(featureList);
|
||||
//profile.setFeaturesList(featureList);
|
||||
|
||||
policy.setPolicyName("Camera_related_policy");
|
||||
|
||||
|
||||
@ -68,6 +68,8 @@
|
||||
org.wso2.carbon.policy.mgt.common.*,
|
||||
org.wso2.carbon.user.core.*,
|
||||
org.wso2.carbon.utils.*,
|
||||
org.wso2.carbon.context.*,
|
||||
org.wso2.carbon.user.api.*,
|
||||
org.wso2.carbon.device.mgt.core.*,
|
||||
org.wso2.carbon.device.mgt.common.*
|
||||
</Import-Package>
|
||||
|
||||
@ -47,4 +47,7 @@ public interface PolicyManager {
|
||||
|
||||
List<Feature> getFeatures() throws FeatureManagementException;
|
||||
|
||||
PolicyAdministratorPoint getPAP() throws PolicyManagementException;
|
||||
|
||||
PolicyInformationPoint getPIP() throws PolicyManagementException;
|
||||
}
|
||||
|
||||
@ -22,12 +22,9 @@ import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.policy.mgt.common.Feature;
|
||||
import org.wso2.carbon.policy.mgt.common.FeatureManagementException;
|
||||
import org.wso2.carbon.policy.mgt.common.Policy;
|
||||
import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
|
||||
import org.wso2.carbon.policy.mgt.common.Profile;
|
||||
import org.wso2.carbon.policy.mgt.common.*;
|
||||
import org.wso2.carbon.policy.mgt.core.impl.PolicyAdministratorPointImpl;
|
||||
import org.wso2.carbon.policy.mgt.core.impl.PolicyInformationPointImpl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -90,4 +87,14 @@ public class PolicyManagerImpl implements PolicyManager {
|
||||
public List<Feature> getFeatures() throws FeatureManagementException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PolicyAdministratorPoint getPAP() throws PolicyManagementException {
|
||||
return new PolicyAdministratorPointImpl();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PolicyInformationPoint getPIP() throws PolicyManagementException {
|
||||
return new PolicyInformationPointImpl();
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,6 +22,7 @@ package org.wso2.carbon.policy.mgt.core.dao;
|
||||
import org.wso2.carbon.policy.mgt.common.Feature;
|
||||
import org.wso2.carbon.policy.mgt.common.FeatureManagementException;
|
||||
import org.wso2.carbon.policy.mgt.common.Profile;
|
||||
import org.wso2.carbon.policy.mgt.common.ProfileFeature;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -31,12 +32,22 @@ public interface FeatureDAO {
|
||||
|
||||
Feature updateFeature(Feature feature) throws FeatureManagerDAOException;
|
||||
|
||||
ProfileFeature addProfileFeature(ProfileFeature feature, int profileId) throws FeatureManagerDAOException;
|
||||
|
||||
ProfileFeature updateProfileFeature(ProfileFeature feature, int profileId) throws FeatureManagerDAOException;
|
||||
|
||||
List<ProfileFeature> addProfileFeatures(List<ProfileFeature> features, int profileId) throws FeatureManagerDAOException;
|
||||
|
||||
List<ProfileFeature> updateProfileFeatures(List<ProfileFeature> features, int profileId) throws FeatureManagerDAOException;
|
||||
|
||||
List<Feature> getAllFeatures() throws FeatureManagerDAOException;
|
||||
|
||||
List<Feature> getFeaturesForProfile(int ProfileId) throws FeatureManagerDAOException;
|
||||
List<Feature> getAllFeatures(String deviceType) throws FeatureManagerDAOException;
|
||||
|
||||
void deleteFeature(int featureId) throws FeatureManagerDAOException;
|
||||
List<ProfileFeature> getFeaturesForProfile(int ProfileId) throws FeatureManagerDAOException;
|
||||
|
||||
void deleteFeaturesOfProfile(Profile profile) throws FeatureManagerDAOException;
|
||||
boolean deleteFeature(int featureId) throws FeatureManagerDAOException;
|
||||
|
||||
boolean deleteFeaturesOfProfile(Profile profile) throws FeatureManagerDAOException;
|
||||
|
||||
}
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
|
||||
package org.wso2.carbon.policy.mgt.core.dao;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.policy.mgt.common.Feature;
|
||||
import org.wso2.carbon.policy.mgt.common.FeatureManagementException;
|
||||
import org.wso2.carbon.policy.mgt.common.Policy;
|
||||
@ -33,46 +34,22 @@ public interface PolicyDAO {
|
||||
|
||||
Policy addPolicyToRole(String roleName, Policy policy) throws PolicyManagerDAOException;
|
||||
|
||||
Policy addPolicy(String deviceID, String deviceType, Policy policy) throws PolicyManagerDAOException;
|
||||
Policy addPolicyToDevice(DeviceIdentifier deviceIdentifier, Policy policy) throws PolicyManagerDAOException;
|
||||
|
||||
Policy updatePolicy(Policy policy) throws PolicyManagerDAOException;
|
||||
|
||||
Policy getPolicy() throws PolicyManagerDAOException;
|
||||
Policy getPolicy(int policyId) throws PolicyManagerDAOException;
|
||||
|
||||
Policy getPolicy(String deviceType) throws PolicyManagerDAOException;
|
||||
Policy getPolicyByProfileID(int profileId) throws PolicyManagerDAOException;
|
||||
|
||||
Policy getPolicy(String deviceID, String deviceType) throws PolicyManagerDAOException;
|
||||
List<Policy> getPolicy() throws PolicyManagerDAOException;
|
||||
|
||||
List<Policy> getPolicy(String deviceType) throws PolicyManagerDAOException;
|
||||
|
||||
List<Policy> getPolicy(DeviceIdentifier deviceIdentifier) throws PolicyManagerDAOException;
|
||||
|
||||
List<Policy> getPolicyOfRole(String roleName) throws PolicyManagerDAOException;
|
||||
|
||||
void deletePolicy(Policy policy) throws PolicyManagerDAOException;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Profile addProfile(Profile profile) throws PolicyManagerDAOException;
|
||||
|
||||
Profile updateProfile(Profile profile) throws PolicyManagerDAOException;
|
||||
|
||||
void deleteProfile(Profile profile) throws PolicyManagerDAOException;
|
||||
|
||||
List<Profile> getAllProfiles() throws PolicyManagerDAOException;
|
||||
|
||||
List<Profile> getProfilesOfDeviceType(String deviceType) throws PolicyManagerDAOException;
|
||||
|
||||
|
||||
|
||||
|
||||
List<Feature> getAllFeatures() throws PolicyManagerDAOException;
|
||||
|
||||
List<Feature> getFeaturesForProfile(int ProfileId) throws PolicyManagerDAOException;
|
||||
|
||||
void deleteFeature(int featureId) throws PolicyManagerDAOException;
|
||||
|
||||
void deleteFeaturesOfProfile(Profile profile) throws PolicyManagerDAOException;
|
||||
|
||||
Feature addFeature(Feature feature) throws PolicyManagerDAOException, FeatureManagementException;
|
||||
|
||||
Feature updateFeature(Feature feature) throws PolicyManagerDAOException, FeatureManagementException;*/
|
||||
}
|
||||
|
||||
@ -31,6 +31,8 @@ public interface ProfileDAO {
|
||||
|
||||
void deleteProfile(Profile profile) throws ProfileManagerDAOException;
|
||||
|
||||
Profile getProfiles(int profileId) throws ProfileManagerDAOException;
|
||||
|
||||
List<Profile> getAllProfiles() throws ProfileManagerDAOException;
|
||||
|
||||
List<Profile> getProfilesOfDeviceType(String deviceType) throws ProfileManagerDAOException;
|
||||
|
||||
@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.policy.mgt.common.Feature;
|
||||
import org.wso2.carbon.policy.mgt.common.FeatureManagementException;
|
||||
import org.wso2.carbon.policy.mgt.common.Profile;
|
||||
import org.wso2.carbon.policy.mgt.common.ProfileFeature;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.*;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.util.PolicyManagementDAOUtil;
|
||||
|
||||
@ -75,11 +76,106 @@ public class FeatureDAOImpl implements FeatureDAO {
|
||||
|
||||
@Override
|
||||
public Feature updateFeature(Feature feature) throws FeatureManagerDAOException {
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet generatedKeys = null;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "UPDATE DM_FEATURES SET NAME = ?, CODE = ?, DESCRIPTION = ?, EVALUVATION_RULE = ? WHERE ID = ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setString(1, feature.getName());
|
||||
stmt.setString(2, feature.getCode());
|
||||
stmt.setString(3, feature.getDescription());
|
||||
stmt.setString(4, feature.getRuleValue());
|
||||
stmt.setInt(5, feature.getId());
|
||||
|
||||
stmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while updating feature " + feature.getName() + " (Feature Name) to the database.";
|
||||
log.error(msg, e);
|
||||
throw new FeatureManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
|
||||
}
|
||||
|
||||
return feature;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteFeaturesOfProfile(Profile profile) throws FeatureManagerDAOException {
|
||||
public ProfileFeature addProfileFeature(ProfileFeature feature, int profileId) throws FeatureManagerDAOException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProfileFeature updateProfileFeature(ProfileFeature feature, int profileId) throws FeatureManagerDAOException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProfileFeature> addProfileFeatures(List<ProfileFeature> features, int profileId) throws FeatureManagerDAOException {
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet generatedKeys = null;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "INSERT INTO DM_PROFILE_FEATURES (PROFILE_ID, FEATURE_ID, CONTENT) VALUES (?, ?, ?)";
|
||||
|
||||
stmt = conn.prepareStatement(query, stmt.RETURN_GENERATED_KEYS);
|
||||
for (ProfileFeature feature : features) {
|
||||
stmt.setInt(1, profileId);
|
||||
stmt.setInt(2, feature.getId());
|
||||
stmt.setObject(3, feature.getContent());
|
||||
stmt.addBatch();
|
||||
//Not adding the logic to check the size of the stmt and execute if the size records added is over 1000
|
||||
}
|
||||
stmt.executeBatch();
|
||||
|
||||
generatedKeys = stmt.getGeneratedKeys();
|
||||
int i = 0;
|
||||
while (generatedKeys.next()) {
|
||||
features.get(i).setId(generatedKeys.getInt(i));
|
||||
i++;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while adding the feature list to the database.";
|
||||
log.error(msg, e);
|
||||
throw new FeatureManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
|
||||
}
|
||||
return features;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProfileFeature> updateProfileFeatures(List<ProfileFeature> features, int profileId) throws FeatureManagerDAOException {
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "UPDATE DM_PROFILE_FEATURES SET CONTENT = ? WHERE PROFILE_ID = ? , FEATURE_ID = ? ";
|
||||
|
||||
stmt = conn.prepareStatement(query, stmt.RETURN_GENERATED_KEYS);
|
||||
for (ProfileFeature feature : features) {
|
||||
stmt.setObject(1, feature.getContent());
|
||||
stmt.setInt(2, profileId);
|
||||
stmt.setInt(3, feature.getId());
|
||||
stmt.addBatch();
|
||||
//Not adding the logic to check the size of the stmt and execute if the size records added is over 1000
|
||||
}
|
||||
stmt.executeBatch();
|
||||
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while adding the feature list to the database.";
|
||||
log.error(msg, e);
|
||||
throw new FeatureManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, null);
|
||||
}
|
||||
return features;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteFeaturesOfProfile(Profile profile) throws FeatureManagerDAOException {
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
|
||||
@ -89,6 +185,7 @@ public class FeatureDAOImpl implements FeatureDAO {
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setInt(1, profile.getProfileId());
|
||||
stmt.executeUpdate();
|
||||
return true;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while deleting the feature related to a profile.";
|
||||
log.error(msg);
|
||||
@ -109,7 +206,7 @@ public class FeatureDAOImpl implements FeatureDAO {
|
||||
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "SELECT ID, NAME, CODE, EVALUVATION_RULE FROM DM_FEATURES";
|
||||
String query = "SELECT ID, NAME, CODE, DEVICE_TYPE_ID, EVALUVATION_RULE FROM DM_FEATURES";
|
||||
stmt = conn.prepareStatement(query);
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
@ -118,6 +215,7 @@ public class FeatureDAOImpl implements FeatureDAO {
|
||||
feature.setId(resultSet.getInt("ID"));
|
||||
feature.setCode(resultSet.getString("CODE"));
|
||||
feature.setName(resultSet.getString("NAME"));
|
||||
feature.setDeviceTypeId(resultSet.getInt("DEVICE_TYPE_ID"));
|
||||
feature.setRuleValue(resultSet.getString("EVALUVATION_RULE"));
|
||||
featureList.add(feature);
|
||||
}
|
||||
@ -133,16 +231,52 @@ public class FeatureDAOImpl implements FeatureDAO {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Feature> getFeaturesForProfile(int profileId) throws FeatureManagerDAOException {
|
||||
public List<Feature> getAllFeatures(String deviceType) throws FeatureManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet resultSet = null;
|
||||
List<Feature> featureList = new ArrayList<Feature>();
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "SELECT f.ID ID, f.NAME NAME, f.CODE CODE, f.DEVICE_TYPE_ID DEVICE_TYPE_ID," +
|
||||
" f.EVALUVATION_RULE EVALUVATION_RULE FROM DM_FEATURES f INNER JOIN DM_DEVICE_TYPE d " +
|
||||
"ON d.ID=f.DEVICE_TYPE_ID WHERE d.NAME = ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setString(1, deviceType);
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
while (resultSet.next()) {
|
||||
Feature feature = new Feature();
|
||||
feature.setId(resultSet.getInt("ID"));
|
||||
feature.setCode(resultSet.getString("CODE"));
|
||||
feature.setName(resultSet.getString("NAME"));
|
||||
feature.setDeviceTypeId(resultSet.getInt("DEVICE_TYPE_ID"));
|
||||
feature.setRuleValue(resultSet.getString("EVALUVATION_RULE"));
|
||||
featureList.add(feature);
|
||||
}
|
||||
return featureList;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Unable to get the list of the features related device type from database.";
|
||||
log.error(msg);
|
||||
throw new FeatureManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProfileFeature> getFeaturesForProfile(int profileId) throws FeatureManagerDAOException {
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet resultSet = null;
|
||||
|
||||
List<Feature> featureList = new ArrayList<Feature>();
|
||||
List<ProfileFeature> featureList = new ArrayList<ProfileFeature>();
|
||||
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "SELECT PF.FEATURE_ID FEATURE_ID, F.NAME NAME, F.CODE CODE, " +
|
||||
String query = "SELECT PF.ID AS ID, PF.FEATURE_ID FEATURE_ID, F.NAME NAME, F.CODE CODE, " +
|
||||
"F.EVALUVATION_RULE RULE, F.CONTENT AS CONTENT FROM DM_PROFILE_FEATURES AS PF " +
|
||||
"JOIN DM_FEATURES AS F ON F.ID = PF.FEATURE_ID WHERE PROFILE_ID=?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
@ -150,13 +284,18 @@ public class FeatureDAOImpl implements FeatureDAO {
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
while (resultSet.next()) {
|
||||
ProfileFeature profileFeature = new ProfileFeature();
|
||||
Feature feature = new Feature();
|
||||
feature.setId(resultSet.getInt("FEATURE_ID"));
|
||||
feature.setCode(resultSet.getString("CODE"));
|
||||
feature.setName(resultSet.getString("NAME"));
|
||||
feature.setAttribute(resultSet.getObject("CONTENT"));
|
||||
// feature.setAttribute(resultSet.getObject("CONTENT"));
|
||||
feature.setRuleValue(resultSet.getString("RULE"));
|
||||
featureList.add(feature);
|
||||
|
||||
profileFeature.setFeature(feature);
|
||||
profileFeature.setId(resultSet.getInt("ID"));
|
||||
profileFeature.setContent(resultSet.getObject("CONTENT"));
|
||||
featureList.add(profileFeature);
|
||||
}
|
||||
|
||||
} catch (SQLException e) {
|
||||
@ -170,18 +309,24 @@ public class FeatureDAOImpl implements FeatureDAO {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteFeature(int featureId) throws FeatureManagerDAOException {
|
||||
public boolean deleteFeature(int featureId) throws FeatureManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet generatedKeys = null;
|
||||
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "";
|
||||
String query = "DELETE FROM DM_FEATURES WHERE ID = ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setInt(1, featureId);
|
||||
stmt.executeUpdate();
|
||||
return true;
|
||||
} catch (SQLException e) {
|
||||
|
||||
String msg = "Unable to delete the feature " + featureId + " (Feature ID) from database.";
|
||||
log.error(msg);
|
||||
throw new FeatureManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -20,31 +20,33 @@ package org.wso2.carbon.policy.mgt.core.dao.impl;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.policy.mgt.common.Feature;
|
||||
import org.wso2.carbon.policy.mgt.common.FeatureManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
||||
import org.wso2.carbon.device.mgt.core.dao.DeviceTypeDAO;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.DeviceDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.DeviceTypeDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dto.Device;
|
||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||
import org.wso2.carbon.policy.mgt.common.Policy;
|
||||
import org.wso2.carbon.policy.mgt.common.Profile;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.PolicyDAO;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.PolicyManagementDAOFactory;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.PolicyManagerDAOException;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.*;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.util.PolicyManagementDAOUtil;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PolicyDAOImpl implements PolicyDAO {
|
||||
|
||||
private static final Log log = LogFactory.getLog(PolicyDAOImpl.class);
|
||||
DeviceDAOImpl deviceDAO = new DeviceDAOImpl(PolicyManagementDAOFactory.getDataSource());
|
||||
DeviceTypeDAO deviceTypeDAO = new DeviceTypeDAOImpl(PolicyManagementDAOFactory.getDataSource());
|
||||
ProfileDAO profileDAO = new ProfileDAOImpl();
|
||||
|
||||
|
||||
@Override
|
||||
public Policy addPolicy(Policy policy) throws PolicyManagerDAOException {
|
||||
persistPolicy(policy);
|
||||
return policy;
|
||||
public Policy addPolicy(Policy policy) throws PolicyManagerDAOException {
|
||||
return persistPolicy(policy);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -79,11 +81,34 @@ public class PolicyDAOImpl implements PolicyDAO {
|
||||
|
||||
@Override
|
||||
public Policy addPolicyToRole(String roleName, Policy policy) throws PolicyManagerDAOException {
|
||||
return null;
|
||||
// First persist the policy to the data base.
|
||||
persistPolicy(policy);
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet resultSet = null;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "INSERT INTO DM_ROLE_POLICY (ROLE_NAME, POLICY_ID) VALUES (?, ?)";
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setString(1, roleName);
|
||||
stmt.setInt(2, policy.getId());
|
||||
|
||||
stmt.executeQuery();
|
||||
policy.getRoleList().add(roleName);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while adding the role name with policy to database.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
|
||||
}
|
||||
|
||||
return policy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Policy addPolicy(String deviceID, String deviceType, Policy policy) throws PolicyManagerDAOException {
|
||||
public Policy addPolicyToDevice(DeviceIdentifier deviceIdentifier, Policy policy) throws PolicyManagerDAOException {
|
||||
|
||||
// First persist the policy to the data base.
|
||||
persistPolicy(policy);
|
||||
@ -92,11 +117,23 @@ public class PolicyDAOImpl implements PolicyDAO {
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet generatedKeys = null;
|
||||
try {
|
||||
Device device = deviceDAO.getDevice(deviceIdentifier);
|
||||
conn = this.getConnection();
|
||||
String query = "";
|
||||
String query = "INSERT INTO DM_DEVICE_POLICY (DEVICE_ID, POLICY_ID) VALUES (?, ?)";
|
||||
stmt = conn.prepareStatement(query);
|
||||
} catch (SQLException e) {
|
||||
stmt.setInt(1, device.getId());
|
||||
stmt.setInt(2, policy.getId());
|
||||
|
||||
stmt.executeUpdate();
|
||||
policy.getDeviceList().add(device);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while adding the device ids with policy to database.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} catch (DeviceManagementDAOException e) {
|
||||
String msg = "Error occurred while reading the device data from the database.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
|
||||
}
|
||||
@ -112,10 +149,18 @@ public class PolicyDAOImpl implements PolicyDAO {
|
||||
ResultSet generatedKeys = null;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "";
|
||||
String query = "UPDATE DM_POLICY SET NAME= ?, TENANT_ID = ?, PROFILE_ID = ? WHERE ID = ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
} catch (Exception e) {
|
||||
stmt.setString(1, policy.getPolicyName());
|
||||
stmt.setInt(2, policy.getTenantId());
|
||||
stmt.setInt(3, policy.getProfile().getProfileId());
|
||||
stmt.setInt(4, policy.getId());
|
||||
|
||||
stmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while updating policy " + policy.getPolicyName() + " (Policy Name) in database.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
|
||||
}
|
||||
@ -124,60 +169,430 @@ public class PolicyDAOImpl implements PolicyDAO {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Policy getPolicy() throws PolicyManagerDAOException {
|
||||
public Policy getPolicy(int policyId) throws PolicyManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet generatedKeys = null;
|
||||
ResultSet resultSet = null;
|
||||
Policy policy = new Policy();
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "";
|
||||
String query = "SELECT * FROM DM_POLICY WHERE ID= ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
} catch (Exception e) {
|
||||
stmt.setInt(1, policyId);
|
||||
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
while (resultSet.next()) {
|
||||
|
||||
Profile profile = profileDAO.getProfiles(resultSet.getInt("PROFILE_ID"));
|
||||
List<Device> deviceList = getPolicyAppliedDevices(policyId);
|
||||
List<String> roleNames = getPolicyAppliedRoles(policyId);
|
||||
|
||||
policy.setId(policyId);
|
||||
policy.setPolicyName(resultSet.getString("NAME"));
|
||||
policy.setTenantId(resultSet.getInt("TENANT_ID"));
|
||||
policy.setProfile(profile);
|
||||
policy.setDeviceList(deviceList);
|
||||
policy.setRoleList(roleNames);
|
||||
|
||||
setDatesOfPolicy(policy);
|
||||
setTimesOfPolicy(policy);
|
||||
setLocationsOfPolicy(policy);
|
||||
}
|
||||
|
||||
return policy;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while reading the policies from the database.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} catch (ProfileManagerDAOException e) {
|
||||
String msg = "Error occurred while getting the profiles.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@Override
|
||||
public Policy getPolicyByProfileID(int profileId) throws PolicyManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet resultSet = null;
|
||||
Policy policy = new Policy();
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "SELECT * FROM DM_POLICY WHERE PROFILE_ID= ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setInt(1, profileId);
|
||||
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
while (resultSet.next()) {
|
||||
|
||||
int policyId = resultSet.getInt("ID");
|
||||
Profile profile = profileDAO.getProfiles(profileId);
|
||||
List<Device> deviceList = getPolicyAppliedDevices(policyId);
|
||||
List<String> roleNames = getPolicyAppliedRoles(policyId);
|
||||
|
||||
policy.setId(policyId);
|
||||
policy.setPolicyName(resultSet.getString("NAME"));
|
||||
policy.setTenantId(resultSet.getInt("TENANT_ID"));
|
||||
policy.setProfile(profile);
|
||||
policy.setDeviceList(deviceList);
|
||||
policy.setRoleList(roleNames);
|
||||
|
||||
setDatesOfPolicy(policy);
|
||||
setTimesOfPolicy(policy);
|
||||
setLocationsOfPolicy(policy);
|
||||
}
|
||||
|
||||
return policy;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while reading the policies from the database.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} catch (ProfileManagerDAOException e) {
|
||||
String msg = "Error occurred while getting the profiles.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Policy getPolicy(String deviceType) throws PolicyManagerDAOException {
|
||||
public List<Policy> getPolicy() throws PolicyManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet generatedKeys = null;
|
||||
ResultSet resultSet = null;
|
||||
List<Policy> policies = new ArrayList<Policy>();
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "";
|
||||
String query = "SELECT * FROM DM_POLICY";
|
||||
stmt = conn.prepareStatement(query);
|
||||
} catch (Exception e) {
|
||||
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
while (resultSet.next()) {
|
||||
Policy policy = new Policy();
|
||||
|
||||
int policyId = resultSet.getInt("ID");
|
||||
Profile profile = profileDAO.getProfiles(resultSet.getInt("PROFILE_ID"));
|
||||
List<Device> deviceList = getPolicyAppliedDevices(policyId);
|
||||
List<String> roleNames = getPolicyAppliedRoles(policyId);
|
||||
|
||||
policy.setId(policyId);
|
||||
policy.setPolicyName(resultSet.getString("NAME"));
|
||||
policy.setTenantId(resultSet.getInt("TENANT_ID"));
|
||||
policy.setProfile(profile);
|
||||
policy.setDeviceList(deviceList);
|
||||
policy.setRoleList(roleNames);
|
||||
|
||||
setDatesOfPolicy(policy);
|
||||
setTimesOfPolicy(policy);
|
||||
setLocationsOfPolicy(policy);
|
||||
|
||||
policies.add(policy);
|
||||
}
|
||||
return policies;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while reading the policies from the database.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} catch (ProfileManagerDAOException e) {
|
||||
String msg = "Error occurred while getting the profiles.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Policy getPolicy(String deviceID, String deviceType) throws PolicyManagerDAOException {
|
||||
public List<Policy> getPolicy(String deviceTypeName) throws PolicyManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet resultSet = null;
|
||||
List<Policy> policies = new ArrayList<Policy>();
|
||||
try {
|
||||
DeviceType deviceType = deviceTypeDAO.getDeviceType(deviceTypeName);
|
||||
|
||||
// This gives the profiles related to given device types.
|
||||
List<Profile> profileList = profileDAO.getProfilesOfDeviceType(deviceTypeName);
|
||||
|
||||
for (Profile profile : profileList) {
|
||||
policies.add(getPolicyByProfileID(profile.getProfileId()));
|
||||
}
|
||||
|
||||
/* conn = this.getConnection();
|
||||
|
||||
// TODO : Change the query for device type
|
||||
String query = "SELECT dp.ID PID, dp.NAME PNAME, dp.TENANT_ID PTD, dp.PROFILE_ID PPID FROM DM_POLICY dp " +
|
||||
"INNER JOIN DM_PROFILE dpr ON dpr.ID = dp.PROFILE_ID WHERE dpr.ID = ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
//ID NAME TENANT_ID PROFILE_ID
|
||||
while (resultSet.next()) {
|
||||
Policy policy = new Policy();
|
||||
|
||||
int policyId = resultSet.getInt("PID");
|
||||
Profile profile = profileDAO.getProfiles(resultSet.getInt("PID"));
|
||||
List<Device> deviceList = getPolicyAppliedDevices(policyId);
|
||||
List<String> roleNames = getPolicyAppliedRoles(policyId);
|
||||
|
||||
policy.setId(policyId);
|
||||
policy.setPolicyName(resultSet.getString("PNAME"));
|
||||
policy.setTenantId(resultSet.getInt("PTD"));
|
||||
policy.setProfile(profile);
|
||||
policy.setDeviceList(deviceList);
|
||||
policy.setRoleList(roleNames);
|
||||
|
||||
setDatesOfPolicy(policy);
|
||||
setTimesOfPolicy(policy);
|
||||
setLocationsOfPolicy(policy);
|
||||
|
||||
policies.add(policy);
|
||||
}*/
|
||||
|
||||
return policies;
|
||||
/* } catch (SQLException e) {
|
||||
String msg = "Error occurred while reading the policies from the database.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);*/
|
||||
} catch (ProfileManagerDAOException e) {
|
||||
String msg = "Error occurred while getting the profiles.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} catch (DeviceManagementDAOException e) {
|
||||
String msg = "Error occurred while getting the device type.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// TODO :
|
||||
private List<Device> getPolicyAppliedDevices(int policyId) throws PolicyManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet resultSet = null;
|
||||
|
||||
List<Device> deviceList = new ArrayList<Device>();
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "SELECT * FROM DM_DEVICE_POLICY WHERE POLICY_ID = ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setInt(1, policyId);
|
||||
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
while (resultSet.next()) {
|
||||
deviceList.add(deviceDAO.getDevice(resultSet.getInt("DEVICE_ID")));
|
||||
}
|
||||
return deviceList;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while getting the device related to policies.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} catch (DeviceManagementDAOException e) {
|
||||
String msg = "Error occurred while getting device data.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// TODO :
|
||||
private List<String> getPolicyAppliedRoles(int policyId) throws PolicyManagerDAOException {
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet resultSet = null;
|
||||
|
||||
List<String> roleNames = new ArrayList<String>();
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "SELECT * FROM DM_ROLE_POLICY WHERE POLICY_ID = ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setInt(1, policyId);
|
||||
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
while (resultSet.next()) {
|
||||
roleNames.add(resultSet.getString("ROLE_NAME"));
|
||||
}
|
||||
|
||||
return roleNames;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while getting the roles related to policies.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO :
|
||||
private void setTimesOfPolicy(Policy policy) throws PolicyManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet resultSet = null;
|
||||
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "SELECT STARTING_TIME, ENDING_TIME FROM DM_TIME WHERE POLICY_ID = ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setInt(1, policy.getId());
|
||||
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
while (resultSet.next()) {
|
||||
policy.setStartTime(resultSet.getInt("STARTING_TIME"));
|
||||
policy.setEndTime(resultSet.getInt("ENDING_TIME"));
|
||||
}
|
||||
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while getting the start time and end time related to policies.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO :
|
||||
private void setDatesOfPolicy(Policy policy) throws PolicyManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet resultSet = null;
|
||||
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "SELECT START_DATE, END_DATE FROM DM_DATE WHERE POLICY_ID = ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setInt(1, policy.getId());
|
||||
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
while (resultSet.next()) {
|
||||
policy.setStartDate(resultSet.getDate("START_DATE"));
|
||||
policy.setEndDate(resultSet.getDate("END_DATE"));
|
||||
}
|
||||
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while getting the start date and end date related to policies.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO:
|
||||
private void setLocationsOfPolicy(Policy policy) throws PolicyManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet resultSet = null;
|
||||
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "SELECT LAT, LONG FROM DM_LOCATION WHERE POLICY_ID = ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setInt(1, policy.getId());
|
||||
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
while (resultSet.next()) {
|
||||
policy.setLatitude(resultSet.getString("LAT"));
|
||||
policy.setLongitude(resultSet.getString("LONG"));
|
||||
}
|
||||
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while getting the start time and end time related to policies.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Policy> getPolicy(DeviceIdentifier deviceIdentifier) throws PolicyManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet generatedKeys = null;
|
||||
List<Policy> policies = new ArrayList<Policy>();
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "";
|
||||
String query = "SELECT * FROM DM_DEVICE_POLICY WHERE DEVICE_ID = ? ";
|
||||
stmt = conn.prepareStatement(query);
|
||||
} catch (Exception e) {
|
||||
stmt.setInt(1, deviceDAO.getDevice(deviceIdentifier).getId().intValue());
|
||||
|
||||
generatedKeys = stmt.executeQuery();
|
||||
|
||||
while (generatedKeys.next()){
|
||||
policies.add(getPolicy(generatedKeys.getInt("POLICY_ID")));
|
||||
}
|
||||
|
||||
return policies;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while reading the device policy table.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} catch (DeviceManagementDAOException e) {
|
||||
String msg = "Error occurred while getting device data from the device identifier.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Policy> getPolicyOfRole(String roleName) throws PolicyManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet generatedKeys = null;
|
||||
List<Policy> policies = new ArrayList<Policy>();
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "SELECT * FROM DM_ROLE_POLICY WHERE ROLE_NAME = ? ";
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setString(1, roleName);
|
||||
|
||||
generatedKeys = stmt.executeQuery();
|
||||
|
||||
while (generatedKeys.next()){
|
||||
policies.add(getPolicy(generatedKeys.getInt("POLICY_ID")));
|
||||
}
|
||||
|
||||
return policies;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while reading the role policy table.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -196,7 +611,7 @@ public class PolicyDAOImpl implements PolicyDAO {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("Policy (" + policy.getPolicyName() + ") delete from database.");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
} catch (SQLException e) {
|
||||
String msg = "Unable to delete the policy (" + policy.getPolicyName() + ") from database.";
|
||||
log.error(msg);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
@ -216,7 +631,7 @@ public class PolicyDAOImpl implements PolicyDAO {
|
||||
}
|
||||
|
||||
|
||||
private void persistPolicy(Policy policy) throws PolicyManagerDAOException {
|
||||
private Policy persistPolicy(Policy policy) throws PolicyManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
@ -248,22 +663,24 @@ public class PolicyDAOImpl implements PolicyDAO {
|
||||
if (policy.getId() == 0) {
|
||||
throw new RuntimeException("No rows were inserted, policy id cannot be null.");
|
||||
}
|
||||
|
||||
profileDAO.addProfile(policy.getProfile());
|
||||
|
||||
return policy;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while adding policy to the database.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} catch (ProfileManagerDAOException e) {
|
||||
String msg = "Error occurred while adding profile to the database.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* This method returns the device type id when supplied with device type name.
|
||||
*
|
||||
|
||||
@ -20,29 +20,37 @@ package org.wso2.carbon.policy.mgt.core.dao.impl;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
||||
import org.wso2.carbon.device.mgt.core.dao.DeviceTypeDAO;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.DeviceTypeDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||
import org.wso2.carbon.policy.mgt.common.Feature;
|
||||
import org.wso2.carbon.policy.mgt.common.Profile;
|
||||
import org.wso2.carbon.policy.mgt.common.ProfileFeature;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.*;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.util.PolicyManagementDAOUtil;
|
||||
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ProfileDAOImpl implements ProfileDAO {
|
||||
|
||||
private static final Log log = LogFactory.getLog(ProfileDAOImpl.class);
|
||||
|
||||
FeatureDAOImpl featureDAO = new FeatureDAOImpl();
|
||||
DeviceTypeDAO deviceTypeDAO = new DeviceTypeDAOImpl(PolicyManagementDAOFactory.getDataSource());
|
||||
|
||||
public Profile addProfile(Profile profile) throws ProfileManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet generatedKeys = null;
|
||||
|
||||
// TODO : find a way to get the tenant Id.
|
||||
int tenantId = -1234;
|
||||
int tenantId = MultitenantConstants.SUPER_TENANT_ID;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "INSERT INTO DM_PROFILE (PROFILE_NAME,TENANT_ID, DEVICE_TYPE_ID, CREATED_TIME, UPDATED_TIME) VALUES (?, ?, ?)";
|
||||
@ -70,12 +78,17 @@ public class ProfileDAOImpl implements ProfileDAO {
|
||||
throw new RuntimeException("Profile id is 0, this could be an issue.");
|
||||
}
|
||||
|
||||
persistFeatures(profile);
|
||||
featureDAO.addProfileFeatures(profile.getProfileFeaturesList(), profile.getProfileId());
|
||||
// persistFeatures(profile);
|
||||
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while adding the profile to database.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
} catch (FeatureManagerDAOException e) {
|
||||
String msg = "Error occurred while adding the features to database.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
|
||||
}
|
||||
@ -85,6 +98,56 @@ public class ProfileDAOImpl implements ProfileDAO {
|
||||
|
||||
|
||||
public Profile updateProfile(Profile profile) throws ProfileManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet generatedKeys = null;
|
||||
|
||||
int tenantId = MultitenantConstants.SUPER_TENANT_ID;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "UPDATE DM_PROFILE SET PROFILE_NAME = ? ,TENANT_ID = ?, DEVICE_TYPE_ID = ? , UPDATED_TIME = ? " +
|
||||
"WHERE ID = ?";
|
||||
stmt = conn.prepareStatement(query, stmt.RETURN_GENERATED_KEYS);
|
||||
|
||||
stmt.setString(1, profile.getProfileName());
|
||||
stmt.setInt(2, tenantId);
|
||||
stmt.setLong(3, profile.getDeviceType().getId());
|
||||
stmt.setTimestamp(4, profile.getUpdatedDate());
|
||||
stmt.setInt(5, profile.getProfileId());
|
||||
|
||||
int affectedRows = stmt.executeUpdate();
|
||||
|
||||
if (affectedRows == 0 && log.isDebugEnabled()) {
|
||||
String msg = "No rows are updated on the profile table.";
|
||||
log.debug(msg);
|
||||
}
|
||||
generatedKeys = stmt.getGeneratedKeys();
|
||||
|
||||
if (generatedKeys.next()) {
|
||||
profile.setProfileId(generatedKeys.getInt(1));
|
||||
}
|
||||
// Checking the profile id here, because profile id could have been passed from the calling method.
|
||||
if (profile.getProfileId() == 0) {
|
||||
throw new RuntimeException("Profile id is 0, this could be an issue.");
|
||||
}
|
||||
|
||||
// TODO : Check to update the features.
|
||||
featureDAO.updateProfileFeatures(profile.getProfileFeaturesList(), profile.getProfileId());
|
||||
//persistFeatures(profile);
|
||||
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while updating the profile ("+profile.getProfileName()+") in database.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
} catch (FeatureManagerDAOException e) {
|
||||
String msg = "Error occurred while updating the profile in database.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
|
||||
}
|
||||
|
||||
return profile;
|
||||
}
|
||||
|
||||
@ -92,7 +155,7 @@ public class ProfileDAOImpl implements ProfileDAO {
|
||||
public void deleteProfile(Profile profile) throws ProfileManagerDAOException {
|
||||
|
||||
// First delete the features related to the profile
|
||||
FeatureDAOImpl featureDAO = new FeatureDAOImpl();
|
||||
|
||||
try {
|
||||
featureDAO.deleteFeaturesOfProfile(profile);
|
||||
} catch (FeatureManagerDAOException e) {
|
||||
@ -101,7 +164,6 @@ public class ProfileDAOImpl implements ProfileDAO {
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
}
|
||||
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
|
||||
@ -120,7 +182,54 @@ public class ProfileDAOImpl implements ProfileDAO {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Profile getProfiles(int profileId) throws ProfileManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet resultSet = null;
|
||||
|
||||
Profile profile = new Profile();
|
||||
try {
|
||||
List<ProfileFeature> featureList = featureDAO.getFeaturesForProfile(profileId);
|
||||
conn = this.getConnection();
|
||||
String query = "SELECT * FROM DM_PROFILE WHERE ID = ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
stmt.setInt(1, profileId);
|
||||
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
//ID PROFILE_NAME TENANT_ID DEVICE_TYPE_ID CREATED_TIME UPDATED_TIME
|
||||
while (resultSet.next()) {
|
||||
profile.setProfileFeaturesList(featureList);
|
||||
profile.setProfileId(profileId);
|
||||
profile.setProfileName(resultSet.getString("PROFILE_NAME"));
|
||||
profile.setTenantId(resultSet.getInt("TENANT_ID"));
|
||||
profile.setDeviceType(deviceTypeDAO.getDeviceType(resultSet.getInt("DEVICE_TYPE_ID")));
|
||||
profile.setCreatedDate(resultSet.getTimestamp("CREATED_TIME"));
|
||||
profile.setUpdatedDate(resultSet.getTimestamp("UPDATED_TIME"));
|
||||
}
|
||||
return profile;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while reading the profile from the database.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
} catch (DeviceManagementDAOException e) {
|
||||
String msg = "Error occurred when getting the device type name by device type id.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
} catch (FeatureManagerDAOException e) {
|
||||
String msg = "Error occurred when getting the features related to a profile.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
} finally {
|
||||
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void persistFeatures(Profile profile) throws ProfileManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
try {
|
||||
@ -128,10 +237,10 @@ public class ProfileDAOImpl implements ProfileDAO {
|
||||
String query = "INSERT INTO DM_PROFILE_FEATURES (PROFILE_ID, FEATURE_ID, CONTENT) VALUES (?, ?, ?)";
|
||||
|
||||
stmt = conn.prepareStatement(query);
|
||||
for (Feature feature : profile.getFeaturesList()) {
|
||||
for (ProfileFeature feature : profile.getProfileFeaturesList()) {
|
||||
stmt.setInt(1, profile.getProfileId());
|
||||
stmt.setInt(2, feature.getId());
|
||||
stmt.setObject(3, feature.getAttribute());
|
||||
stmt.setObject(3, feature.getContent());
|
||||
stmt.addBatch();
|
||||
//Not adding the logic to check the size of the stmt and execute if the size records added is over 1000
|
||||
}
|
||||
@ -148,38 +257,95 @@ public class ProfileDAOImpl implements ProfileDAO {
|
||||
|
||||
@Override
|
||||
public List<Profile> getAllProfiles() throws ProfileManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet generatedKeys = null;
|
||||
|
||||
ResultSet resultSet = null;
|
||||
List<Profile> profileList = new ArrayList<Profile>();
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
String query = "";
|
||||
String query = "SELECT * FROM DM_PROFILE";
|
||||
stmt = conn.prepareStatement(query);
|
||||
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
//ID PROFILE_NAME TENANT_ID DEVICE_TYPE_ID CREATED_TIME UPDATED_TIME
|
||||
while (resultSet.next()) {
|
||||
Profile profile = new Profile();
|
||||
int profileId = resultSet.getInt("ID");
|
||||
List<ProfileFeature> featureList = featureDAO.getFeaturesForProfile(profileId);
|
||||
profile.setProfileFeaturesList(featureList);
|
||||
profile.setProfileId(profileId);
|
||||
profile.setProfileName(resultSet.getString("PROFILE_NAME"));
|
||||
profile.setTenantId(resultSet.getInt("TENANT_ID"));
|
||||
profile.setDeviceType(deviceTypeDAO.getDeviceType(resultSet.getInt("DEVICE_TYPE_ID")));
|
||||
profile.setCreatedDate(resultSet.getTimestamp("CREATED_TIME"));
|
||||
profile.setUpdatedDate(resultSet.getTimestamp("UPDATED_TIME"));
|
||||
|
||||
profileList.add(profile);
|
||||
}
|
||||
return profileList;
|
||||
} catch (SQLException e) {
|
||||
|
||||
String msg = "Error occurred while reading the profile list from the database.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
} catch (DeviceManagementDAOException e) {
|
||||
String msg = "Error occurred while getting the device type.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
} catch (FeatureManagerDAOException e) {
|
||||
String msg = "Error occurred while getting the features related to a profile.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Profile> getProfilesOfDeviceType(String deviceType) throws ProfileManagerDAOException {
|
||||
|
||||
public List<Profile> getProfilesOfDeviceType(String deviceTypeName) throws ProfileManagerDAOException {
|
||||
|
||||
Connection conn = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet generatedKeys = null;
|
||||
|
||||
ResultSet resultSet = null;
|
||||
List<Profile> profileList = new ArrayList<Profile>();
|
||||
try {
|
||||
DeviceType deviceType = deviceTypeDAO.getDeviceType(deviceTypeName);
|
||||
conn = this.getConnection();
|
||||
String query = "";
|
||||
String query = "SELECT * FROM DM_PROFILE WHERE DEVICE_TYPE_ID = ?";
|
||||
stmt = conn.prepareStatement(query);
|
||||
} catch (SQLException e) {
|
||||
stmt.setInt(1, deviceType.getId());
|
||||
|
||||
resultSet = stmt.executeQuery();
|
||||
|
||||
//ID PROFILE_NAME TENANT_ID DEVICE_TYPE_ID CREATED_TIME UPDATED_TIME
|
||||
while (resultSet.next()) {
|
||||
Profile profile = new Profile();
|
||||
int profileId = resultSet.getInt("ID");
|
||||
List<ProfileFeature> featureList = featureDAO.getFeaturesForProfile(profileId);
|
||||
profile.setProfileFeaturesList(featureList);
|
||||
profile.setProfileId(profileId);
|
||||
profile.setProfileName(resultSet.getString("PROFILE_NAME"));
|
||||
profile.setTenantId(resultSet.getInt("TENANT_ID"));
|
||||
profile.setDeviceType(deviceType);
|
||||
profile.setCreatedDate(resultSet.getTimestamp("CREATED_TIME"));
|
||||
profile.setUpdatedDate(resultSet.getTimestamp("UPDATED_TIME"));
|
||||
|
||||
profileList.add(profile);
|
||||
}
|
||||
return profileList;
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while reading the profile list from the database.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
} catch (DeviceManagementDAOException e) {
|
||||
String msg = "Error occurred while getting the device type.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
} catch (FeatureManagerDAOException e) {
|
||||
String msg = "Error occurred while getting the features related to a profile.";
|
||||
log.error(msg, e);
|
||||
throw new ProfileManagerDAOException(msg, e);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -20,6 +20,7 @@ package org.wso2.carbon.policy.mgt.core.impl;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.policy.mgt.common.Feature;
|
||||
import org.wso2.carbon.policy.mgt.common.FeatureManagementException;
|
||||
import org.wso2.carbon.policy.mgt.common.Policy;
|
||||
@ -33,6 +34,8 @@ import org.wso2.carbon.policy.mgt.core.dao.impl.FeatureDAOImpl;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.impl.PolicyDAOImpl;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.impl.ProfileDAOImpl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint {
|
||||
|
||||
private static final Log log = LogFactory.getLog(PolicyAdministratorPointImpl.class);
|
||||
@ -71,11 +74,11 @@ public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Policy addPolicyToDevice(String deviceId, String deviceType, Policy policy)
|
||||
public Policy addPolicyToDevice(DeviceIdentifier deviceIdentifier, Policy policy)
|
||||
throws FeatureManagementException, PolicyManagementException {
|
||||
|
||||
try {
|
||||
policy = policyDAO.addPolicy(deviceId, deviceType, policy);
|
||||
policy = policyDAO.addPolicyToDevice(deviceIdentifier, policy);
|
||||
} catch (PolicyManagerDAOException e) {
|
||||
String msg = "Error occurred while persisting the policy.";
|
||||
log.error(msg, e);
|
||||
@ -98,39 +101,57 @@ public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Policy getPolicy() {
|
||||
return null;
|
||||
public List<Policy> getPolicies() throws PolicyManagementException {
|
||||
try {
|
||||
return policyDAO.getPolicy();
|
||||
} catch (PolicyManagerDAOException e) {
|
||||
String msg = "Error occurred while getting the policies.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Policy getPolicyOfDevice(String deviceId, String deviceType)
|
||||
public List<Policy> getPoliciesOfDevice(String deviceId, String deviceType)
|
||||
throws FeatureManagementException, PolicyManagementException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Policy getPolicyOfDeviceType(String deviceType)
|
||||
public List<Policy> getPoliciesOfDeviceType(String deviceType)
|
||||
throws FeatureManagementException, PolicyManagementException {
|
||||
return null;
|
||||
try {
|
||||
return policyDAO.getPolicy(deviceType);
|
||||
} catch (PolicyManagerDAOException e) {
|
||||
String msg = "Error occurred while getting the policy related to device type.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Policy getPolicyOfRole(String roleName) throws FeatureManagementException, PolicyManagementException {
|
||||
return null;
|
||||
public List<Policy> getPoliciesOfRole(String roleName) throws FeatureManagementException, PolicyManagementException {
|
||||
try {
|
||||
return policyDAO.getPolicyOfRole(roleName);
|
||||
} catch (PolicyManagerDAOException e) {
|
||||
String msg = "Error occurred while getting the policy related to role name.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPolicyAvailableForDevice(String deviceId, String deviceType) throws PolicyManagementException {
|
||||
public boolean isPolicyAvailableForDevice(DeviceIdentifier deviceIdentifier) throws PolicyManagementException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPolicyApplied(String deviceId, String deviceType) throws PolicyManagementException {
|
||||
public boolean isPolicyApplied(DeviceIdentifier deviceIdentifier) throws PolicyManagementException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPolicyUsed(String deviceId, String deviceType, Policy policy) throws PolicyManagementException {
|
||||
public void setPolicyUsed(DeviceIdentifier deviceIdentifier, Policy policy) throws PolicyManagementException {
|
||||
|
||||
}
|
||||
|
||||
@ -192,6 +213,12 @@ public class PolicyAdministratorPointImpl implements PolicyAdministratorPoint {
|
||||
|
||||
@Override
|
||||
public void deleteFeature(int featureId) throws FeatureManagementException {
|
||||
|
||||
try {
|
||||
featureDAO.deleteFeature(featureId);
|
||||
} catch (FeatureManagerDAOException e) {
|
||||
String msg = "Error occurred while deleting the feature.";
|
||||
log.error(msg, e);
|
||||
throw new FeatureManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,48 +20,124 @@ package org.wso2.carbon.policy.mgt.core.impl;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.CarbonContext;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
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.DeviceTypeDAO;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.DeviceDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.DeviceTypeDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dto.Device;
|
||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||
import org.wso2.carbon.policy.mgt.common.*;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.*;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.impl.FeatureDAOImpl;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.impl.PolicyDAOImpl;
|
||||
import org.wso2.carbon.user.api.UserStoreException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class PolicyInformationPointImpl implements PolicyInformationPoint {
|
||||
|
||||
private static final Log log = LogFactory.getLog(PolicyInformationPointImpl.class);
|
||||
DeviceDAOImpl deviceDAO;
|
||||
DeviceDAOImpl deviceDAO = new DeviceDAOImpl(PolicyManagementDAOFactory.getDataSource());
|
||||
DeviceTypeDAO deviceTypeDAO = new DeviceTypeDAOImpl(PolicyManagementDAOFactory.getDataSource());
|
||||
FeatureDAO featureDAO = new FeatureDAOImpl();
|
||||
PolicyDAO policyDAO = new PolicyDAOImpl();
|
||||
|
||||
public PolicyInformationPointImpl() {
|
||||
deviceDAO = new DeviceDAOImpl(DeviceManagementDAOFactory.getDataSource());
|
||||
}
|
||||
|
||||
@Override
|
||||
public PIPDeviceData getDeviceData(DeviceIdentifier deviceIdentifier) throws PolicyManagementException {
|
||||
PIPDeviceData pipDeviceData = new PIPDeviceData();
|
||||
public PIPDevice getDeviceData(DeviceIdentifier deviceIdentifier) throws PolicyManagementException {
|
||||
PIPDevice pipDevice = new PIPDevice();
|
||||
Device device;
|
||||
try {
|
||||
device = deviceDAO.getDevice(deviceIdentifier);
|
||||
pipDeviceData.setDevice(device);
|
||||
DeviceType deviceType = deviceTypeDAO.getDeviceType(deviceIdentifier.getType());
|
||||
pipDevice.setDevice(device);
|
||||
pipDevice.setRoles(getRoleOfDevice(device));
|
||||
pipDevice.setDeviceType(deviceType);
|
||||
pipDevice.setDeviceIdentifier(deviceIdentifier);
|
||||
|
||||
// TODO : Find a way to retrieve the timestamp and location (lat, long) of the device
|
||||
// pipDevice.setLongitude();
|
||||
// pipDevice.setAltitude();
|
||||
// pipDevice.setTimestamp();
|
||||
} catch (DeviceManagementDAOException e) {
|
||||
String msg = "Error occurred when retrieving the data related to device from the database.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagementException(msg, e);
|
||||
}
|
||||
|
||||
return pipDeviceData;
|
||||
return pipDevice;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Policy> getRelatedPolicies(PIPDeviceData pipDeviceData) throws PolicyManagementException {
|
||||
return null;
|
||||
public List<Policy> getRelatedPolicies(PIPDevice pipDevice) throws PolicyManagementException {
|
||||
|
||||
List<List<Policy>> policies = new ArrayList<List<Policy>>();
|
||||
try {
|
||||
// Get the device type related policies
|
||||
policies.add(policyDAO.getPolicy(pipDevice.getDeviceType().getName()));
|
||||
|
||||
// Get the roles related policies
|
||||
for (String role : pipDevice.getRoles()) {
|
||||
policies.add(policyDAO.getPolicyOfRole(role));
|
||||
}
|
||||
// Get policy related to the device
|
||||
policies.add(policyDAO.getPolicy(pipDevice.getDeviceIdentifier()));
|
||||
|
||||
return removeDuplicatePolicies(policies);
|
||||
} catch (PolicyManagerDAOException e) {
|
||||
String msg = "Error occurred when retrieving related to given device " +
|
||||
pipDevice.getDeviceIdentifier().getId() + " " + pipDevice.getDeviceIdentifier().getType() + ".";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Feature> getRelatedFeatures(String deviceType) throws FeatureManagementException {
|
||||
return null;
|
||||
try {
|
||||
return featureDAO.getAllFeatures(deviceType);
|
||||
} catch (FeatureManagerDAOException e) {
|
||||
String msg = "Error occurred when retrieving features related to device type.";
|
||||
log.error(msg, e);
|
||||
throw new FeatureManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
private String[] getRoleOfDevice(Device device) throws PolicyManagementException {
|
||||
try {
|
||||
return CarbonContext.getThreadLocalCarbonContext().getUserRealm().
|
||||
getUserStoreManager().getRoleListOfUser(device.getOwnerId());
|
||||
} catch (UserStoreException e) {
|
||||
String msg = "Error occurred when retrieving roles related to user name.";
|
||||
log.error(msg, e);
|
||||
throw new PolicyManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private List<Policy> removeDuplicatePolicies(List<List<Policy>> policies) {
|
||||
|
||||
Map<Integer, Policy> map = new HashMap<Integer, Policy>();
|
||||
List<Policy> finalPolicies = new ArrayList<Policy>();
|
||||
for (List<Policy> policyList : policies) {
|
||||
for (Policy policy : policyList) {
|
||||
if (!map.containsKey(policy.getId())) {
|
||||
map.put(policy.getId(), policy);
|
||||
finalPolicies.add(policy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return finalPolicies;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -84,4 +84,14 @@ public class PolicyManagementService implements PolicyManager {
|
||||
public List<Feature> getFeatures() throws FeatureManagementException {
|
||||
return policyManager.getFeatures();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PolicyAdministratorPoint getPAP() throws PolicyManagementException {
|
||||
return policyManager.getPAP();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PolicyInformationPoint getPIP() throws PolicyManagementException {
|
||||
return policyManager.getPIP();
|
||||
}
|
||||
}
|
||||
|
||||
@ -241,6 +241,24 @@ CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_TIME` (
|
||||
ENGINE = InnoDB;
|
||||
|
||||
|
||||
-- -----------------------------------------------------
|
||||
-- Table `WSO2CDM`.`DM_DATE`
|
||||
-- -----------------------------------------------------
|
||||
DROP TABLE IF EXISTS `WSO2CDM`.`DM_DATE` ;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_DATE` (
|
||||
`START_DATE` DATE NOT NULL ,
|
||||
`END_DATE` DATE NOT NULL ,
|
||||
`POLICY_ID` INT NOT NULL ,
|
||||
INDEX `DM_DATE_POLICY` (`POLICY_ID` ASC) ,
|
||||
CONSTRAINT `DM_DATE_POLICY`
|
||||
FOREIGN KEY (`POLICY_ID` )
|
||||
REFERENCES `WSO2CDM`.`DM_POLICY` (`ID` )
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION)
|
||||
ENGINE = InnoDB;
|
||||
|
||||
|
||||
|
||||
SET SQL_MODE=@OLD_SQL_MODE;
|
||||
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
|
||||
|
||||
@ -20,7 +20,6 @@ package org.wso2.carbon.simple.policy.decision.point;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.policy.mgt.common.Feature;
|
||||
import org.wso2.carbon.policy.mgt.common.PIPDeviceData;
|
||||
import org.wso2.carbon.policy.mgt.common.Policy;
|
||||
import org.wso2.carbon.policy.mgt.common.PolicyEvaluationPoint;
|
||||
|
||||
|
||||
@ -19,13 +19,13 @@
|
||||
|
||||
package org.wso2.carbon.simple.policy.decision.point;
|
||||
|
||||
import org.wso2.carbon.policy.mgt.common.PIPDeviceData;
|
||||
import org.wso2.carbon.policy.mgt.common.PIPDevice;
|
||||
import org.wso2.carbon.policy.mgt.common.Policy;
|
||||
|
||||
public interface SimpleEvaluation {
|
||||
|
||||
void sortPolicy(Policy policy) throws PolicyEvaluationException;
|
||||
|
||||
Policy getEffectivePolicy(PIPDeviceData pipDeviceData) throws PolicyEvaluationException;
|
||||
Policy getEffectivePolicy(PIPDevice pipDevice) throws PolicyEvaluationException;
|
||||
|
||||
}
|
||||
|
||||
@ -20,7 +20,7 @@ package org.wso2.carbon.simple.policy.decision.point;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.policy.mgt.common.PIPDeviceData;
|
||||
import org.wso2.carbon.policy.mgt.common.PIPDevice;
|
||||
import org.wso2.carbon.policy.mgt.common.Policy;
|
||||
import org.wso2.carbon.policy.mgt.core.dao.impl.PolicyDAOImpl;
|
||||
|
||||
@ -41,7 +41,7 @@ public class SimpleEvaluationImpl implements SimpleEvaluation {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Policy getEffectivePolicy(PIPDeviceData pipDeviceData) throws PolicyEvaluationException {
|
||||
public Policy getEffectivePolicy(PIPDevice pipDevice) throws PolicyEvaluationException {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user