mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Adding criteria based policy
This commit is contained in:
parent
d5cafe843d
commit
53c22fe9fe
@ -34,6 +34,8 @@ import java.util.Map;
|
|||||||
@XmlRootElement
|
@XmlRootElement
|
||||||
public class Policy implements Comparable<Policy>, Serializable {
|
public class Policy implements Comparable<Policy>, Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 19981017L;
|
||||||
|
|
||||||
private int id; // Identifier of the policy.
|
private int id; // Identifier of the policy.
|
||||||
private int priorityId; // Priority of the policies. This will be used only for simple evaluation.
|
private int priorityId; // Priority of the policies. This will be used only for simple evaluation.
|
||||||
private Profile profile; // Profile
|
private Profile profile; // Profile
|
||||||
@ -48,7 +50,7 @@ public class Policy implements Comparable<Policy>, Serializable {
|
|||||||
|
|
||||||
/* This is related criteria based policy */
|
/* This is related criteria based policy */
|
||||||
|
|
||||||
private List<PolicyCriteria> policyCriterias;
|
private List<PolicyCriterion> policyCriterias;
|
||||||
|
|
||||||
/*These are related to time based policies*/
|
/*These are related to time based policies*/
|
||||||
|
|
||||||
@ -161,11 +163,11 @@ public class Policy implements Comparable<Policy>, Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@XmlElement
|
@XmlElement
|
||||||
public List<PolicyCriteria> getPolicyCriterias() {
|
public List<PolicyCriterion> getPolicyCriterias() {
|
||||||
return policyCriterias;
|
return policyCriterias;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPolicyCriterias(List<PolicyCriteria> policyCriterias) {
|
public void setPolicyCriterias(List<PolicyCriterion> policyCriterias) {
|
||||||
this.policyCriterias = policyCriterias;
|
this.policyCriterias = policyCriterias;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -22,9 +22,10 @@ package org.wso2.carbon.policy.mgt.common;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
public class PolicyCriteria {
|
public class PolicyCriterion {
|
||||||
|
|
||||||
private int id;
|
private int id;
|
||||||
|
private int criteriaId;
|
||||||
private String name;
|
private String name;
|
||||||
private Properties properties;
|
private Properties properties;
|
||||||
private Map<String, Object> objectMap;
|
private Map<String, Object> objectMap;
|
||||||
@ -37,6 +38,14 @@ public class PolicyCriteria {
|
|||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getCriteriaId() {
|
||||||
|
return criteriaId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCriteriaId(int criteriaId) {
|
||||||
|
this.criteriaId = criteriaId;
|
||||||
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
@ -25,7 +25,6 @@ public class ProfileFeature implements Serializable {
|
|||||||
|
|
||||||
private int id;
|
private int id;
|
||||||
private String featureCode;
|
private String featureCode;
|
||||||
// private Feature feature;
|
|
||||||
private int profileId;
|
private int profileId;
|
||||||
private int deviceTypeId;
|
private int deviceTypeId;
|
||||||
private Object content;
|
private Object content;
|
||||||
@ -46,14 +45,6 @@ public class ProfileFeature implements Serializable {
|
|||||||
this.featureCode = featureCode;
|
this.featureCode = featureCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
// public Feature getFeature() {
|
|
||||||
// return feature;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void setFeature(Feature feature) {
|
|
||||||
// this.feature = feature;
|
|
||||||
// }
|
|
||||||
|
|
||||||
public int getProfileId() {
|
public int getProfileId() {
|
||||||
return profileId;
|
return profileId;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -58,7 +58,9 @@ public interface PolicyDAO {
|
|||||||
|
|
||||||
Policy addPolicyCriteria(Policy policy) throws PolicyManagerDAOException;
|
Policy addPolicyCriteria(Policy policy) throws PolicyManagerDAOException;
|
||||||
|
|
||||||
List<PolicyCriteria> getPolicyCriteria(int policyId) throws PolicyManagerDAOException;
|
boolean addPolicyCriteriaProperties(List<PolicyCriterion> policyCriteria) throws PolicyManagerDAOException;
|
||||||
|
|
||||||
|
List<PolicyCriterion> getPolicyCriteria(int policyId) throws PolicyManagerDAOException;
|
||||||
|
|
||||||
Policy updatePolicy(Policy policy) throws PolicyManagerDAOException;
|
Policy updatePolicy(Policy policy) throws PolicyManagerDAOException;
|
||||||
|
|
||||||
|
|||||||
@ -29,9 +29,8 @@ import org.wso2.carbon.policy.mgt.core.dao.util.PolicyManagementDAOUtil;
|
|||||||
import org.wso2.carbon.policy.mgt.core.util.PolicyManagerUtil;
|
import org.wso2.carbon.policy.mgt.core.util.PolicyManagerUtil;
|
||||||
|
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
import java.util.ArrayList;
|
import java.sql.Date;
|
||||||
import java.util.Calendar;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class PolicyDAOImpl implements PolicyDAO {
|
public class PolicyDAOImpl implements PolicyDAO {
|
||||||
|
|
||||||
@ -303,6 +302,7 @@ public class PolicyDAOImpl implements PolicyDAO {
|
|||||||
throw new PolicyManagerDAOException(msg, e);
|
throw new PolicyManagerDAOException(msg, e);
|
||||||
} finally {
|
} finally {
|
||||||
PolicyManagementDAOUtil.cleanupResources(stmt, resultSet);
|
PolicyManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
|
this.closeConnection();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -333,6 +333,7 @@ public class PolicyDAOImpl implements PolicyDAO {
|
|||||||
throw new PolicyManagerDAOException(msg, e);
|
throw new PolicyManagerDAOException(msg, e);
|
||||||
} finally {
|
} finally {
|
||||||
PolicyManagementDAOUtil.cleanupResources(stmt, resultSet);
|
PolicyManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
|
this.closeConnection();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -391,17 +392,163 @@ public class PolicyDAOImpl implements PolicyDAO {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Criterion> getAllPolicyCriteria() throws PolicyManagerDAOException {
|
public List<Criterion> getAllPolicyCriteria() throws PolicyManagerDAOException {
|
||||||
return null;
|
|
||||||
|
Connection conn;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
List<Criterion> criteria = new ArrayList<Criterion>();
|
||||||
|
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String query = "SELECT * FROM DM_CRITERIA";
|
||||||
|
stmt = conn.prepareStatement(query);
|
||||||
|
resultSet = stmt.executeQuery();
|
||||||
|
|
||||||
|
while (resultSet.next()) {
|
||||||
|
Criterion criterion = new Criterion();
|
||||||
|
criterion.setId(resultSet.getInt("ID"));
|
||||||
|
criterion.setName(resultSet.getString("NAME"));
|
||||||
|
criteria.add(criterion);
|
||||||
|
}
|
||||||
|
return criteria;
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while reading the policies from the database.";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new PolicyManagerDAOException(msg, e);
|
||||||
|
} finally {
|
||||||
|
PolicyManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
|
this.closeConnection();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Policy addPolicyCriteria(Policy policy) throws PolicyManagerDAOException {
|
public Policy addPolicyCriteria(Policy policy) throws PolicyManagerDAOException {
|
||||||
return null;
|
|
||||||
|
Connection conn;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet generatedKeys;
|
||||||
|
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String query = "INSERT INTO DM_POLICY_CRITERIA (CRITERIA_ID, POLICY_ID) VALUES (?, ?)";
|
||||||
|
stmt = conn.prepareStatement(query);
|
||||||
|
|
||||||
|
List<PolicyCriterion> criteria = policy.getPolicyCriterias();
|
||||||
|
for (PolicyCriterion criterion : criteria) {
|
||||||
|
|
||||||
|
stmt.setInt(1, criterion.getCriteriaId());
|
||||||
|
stmt.setInt(2, policy.getId());
|
||||||
|
stmt.addBatch();
|
||||||
|
}
|
||||||
|
stmt.executeUpdate();
|
||||||
|
|
||||||
|
generatedKeys = stmt.getGeneratedKeys();
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while (generatedKeys.next()) {
|
||||||
|
policy.getPolicyCriterias().get(i).setId(generatedKeys.getInt(1));
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while inserting the criterion to policy (" + policy.getPolicyName() + ") " +
|
||||||
|
"to database.";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new PolicyManagerDAOException(msg, e);
|
||||||
|
} finally {
|
||||||
|
PolicyManagementDAOUtil.cleanupResources(stmt, null);
|
||||||
|
}
|
||||||
|
return policy;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PolicyCriteria> getPolicyCriteria(int policyId) throws PolicyManagerDAOException {
|
public boolean addPolicyCriteriaProperties(List<PolicyCriterion> policyCriteria) throws PolicyManagerDAOException {
|
||||||
return null;
|
|
||||||
|
|
||||||
|
Connection conn;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String query = "INSERT INTO DM_POLICY_CRITERIA_PROPERTIES (POLICY_CRITERION_ID, KEY, VALUE, CONTENT) VALUES (?, ?, ?, ?)";
|
||||||
|
stmt = conn.prepareStatement(query);
|
||||||
|
|
||||||
|
for (PolicyCriterion criterion : policyCriteria) {
|
||||||
|
|
||||||
|
for (String name : criterion.getProperties().stringPropertyNames()) {
|
||||||
|
|
||||||
|
stmt.setInt(1, criterion.getId());
|
||||||
|
stmt.setString(2, name);
|
||||||
|
stmt.setString(3, criterion.getProperties().getProperty(name));
|
||||||
|
stmt.setObject(4, criterion.getObjectMap());
|
||||||
|
stmt.addBatch();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stmt.executeUpdate();
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while inserting the criterion properties to database.";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new PolicyManagerDAOException(msg, e);
|
||||||
|
} finally {
|
||||||
|
PolicyManagementDAOUtil.cleanupResources(stmt, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PolicyCriterion> getPolicyCriteria(int policyId) throws PolicyManagerDAOException {
|
||||||
|
|
||||||
|
|
||||||
|
Connection conn;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
List<PolicyCriterion> criteria = new ArrayList<PolicyCriterion>();
|
||||||
|
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String query = "SELECT DPC.ID, DPC.CRITERIA_ID, DPCP.KEY, DPCP.VALUE, DPCP.CONTENT FROM " +
|
||||||
|
"DM_POLICY_CRITERIA DPC LEFT JOIN DM_POLICY_CRITERIA_PROPERTIES DPCP " +
|
||||||
|
"ON DPCP.POLICY_CRITERION_ID = DPC.ID RIGHT JOIN DM_CRITERIA DC " +
|
||||||
|
"ON DC.ID=DPC.CRITERIA_ID WHERE DPC.POLICY_ID = ?";
|
||||||
|
stmt = conn.prepareStatement(query);
|
||||||
|
stmt.setInt(1, policyId);
|
||||||
|
resultSet = stmt.executeQuery();
|
||||||
|
|
||||||
|
int criteriaId = 0;
|
||||||
|
|
||||||
|
PolicyCriterion policyCriterion = null;
|
||||||
|
Properties prop = null;
|
||||||
|
while (resultSet.next()) {
|
||||||
|
|
||||||
|
if (criteriaId != resultSet.getInt("ID")) {
|
||||||
|
if (policyCriterion != null) {
|
||||||
|
policyCriterion.setProperties(prop);
|
||||||
|
criteria.add(policyCriterion);
|
||||||
|
}
|
||||||
|
policyCriterion = new PolicyCriterion();
|
||||||
|
prop = new Properties();
|
||||||
|
criteriaId = resultSet.getInt("ID");
|
||||||
|
|
||||||
|
policyCriterion.setId(resultSet.getInt("ID"));
|
||||||
|
policyCriterion.setCriteriaId(resultSet.getInt("CRITERIA_ID"));
|
||||||
|
} else {
|
||||||
|
prop.setProperty(resultSet.getString("KEY"), resultSet.getString("VALUE"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while reading the criteria related to policies from the database.";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new PolicyManagerDAOException(msg, e);
|
||||||
|
} finally {
|
||||||
|
PolicyManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
|
this.closeConnection();
|
||||||
|
}
|
||||||
|
return criteria;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -972,6 +1119,13 @@ public class PolicyDAOImpl implements PolicyDAO {
|
|||||||
stmt.setInt(1, policyId);
|
stmt.setInt(1, policyId);
|
||||||
stmt.executeUpdate();
|
stmt.executeUpdate();
|
||||||
|
|
||||||
|
|
||||||
|
String deleteCriteria = "DELETE FROM DM_POLICY_CRITERIA WHERE POLICY_ID = ?";
|
||||||
|
stmt = conn.prepareStatement(deleteCriteria);
|
||||||
|
stmt.setInt(1, policyId);
|
||||||
|
stmt.executeUpdate();
|
||||||
|
|
||||||
|
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("Policy (" + policyId + ") related configs deleted from database.");
|
log.debug("Policy (" + policyId + ") related configs deleted from database.");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,6 @@ import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
|||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceDAO;
|
import org.wso2.carbon.device.mgt.core.dao.DeviceDAO;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
|
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceTypeDAO;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dto.Device;
|
import org.wso2.carbon.device.mgt.core.dto.Device;
|
||||||
import org.wso2.carbon.policy.mgt.common.*;
|
import org.wso2.carbon.policy.mgt.common.*;
|
||||||
import org.wso2.carbon.policy.mgt.core.dao.*;
|
import org.wso2.carbon.policy.mgt.core.dao.*;
|
||||||
@ -40,7 +39,7 @@ public class PolicyManagerImpl implements PolicyManager {
|
|||||||
private ProfileDAO profileDAO;
|
private ProfileDAO profileDAO;
|
||||||
private FeatureDAO featureDAO;
|
private FeatureDAO featureDAO;
|
||||||
private DeviceDAO deviceDAO;
|
private DeviceDAO deviceDAO;
|
||||||
private DeviceTypeDAO deviceTypeDAO;
|
// private DeviceTypeDAO deviceTypeDAO;
|
||||||
private ProfileManager profileManager;
|
private ProfileManager profileManager;
|
||||||
private static Log log = LogFactory.getLog(PolicyManagerImpl.class);
|
private static Log log = LogFactory.getLog(PolicyManagerImpl.class);
|
||||||
|
|
||||||
@ -49,7 +48,7 @@ public class PolicyManagerImpl implements PolicyManager {
|
|||||||
this.profileDAO = PolicyManagementDAOFactory.getProfileDAO();
|
this.profileDAO = PolicyManagementDAOFactory.getProfileDAO();
|
||||||
this.featureDAO = PolicyManagementDAOFactory.getFeatureDAO();
|
this.featureDAO = PolicyManagementDAOFactory.getFeatureDAO();
|
||||||
this.deviceDAO = DeviceManagementDAOFactory.getDeviceDAO();
|
this.deviceDAO = DeviceManagementDAOFactory.getDeviceDAO();
|
||||||
this.deviceTypeDAO = DeviceManagementDAOFactory.getDeviceTypeDAO();
|
// this.deviceTypeDAO = DeviceManagementDAOFactory.getDeviceTypeDAO();
|
||||||
this.profileManager = new ProfileManagerImpl();
|
this.profileManager = new ProfileManagerImpl();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,6 +76,20 @@ public class PolicyManagerImpl implements PolicyManager {
|
|||||||
policyDAO.addPolicyToDevice(policy.getDevices(), policy);
|
policyDAO.addPolicyToDevice(policy.getDevices(), policy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (policy.getPolicyCriterias() != null) {
|
||||||
|
List<PolicyCriterion> criteria = policy.getPolicyCriterias();
|
||||||
|
for (PolicyCriterion criterion : criteria) {
|
||||||
|
if (!policyDAO.checkCriterionExists(criterion.getName())) {
|
||||||
|
Criterion criteriaObj = new Criterion();
|
||||||
|
criteriaObj.setName(criterion.getName());
|
||||||
|
policyDAO.addCriterion(criteriaObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
policyDAO.addPolicyCriteria(policy);
|
||||||
|
policyDAO.addPolicyCriteriaProperties(policy.getPolicyCriterias());
|
||||||
|
}
|
||||||
|
|
||||||
if (policy.getEndDate() != null & policy.getStartDate() != null) {
|
if (policy.getEndDate() != null & policy.getStartDate() != null) {
|
||||||
policyDAO.addDatesToPolicy(policy.getStartDate(), policy.getEndDate(), policy);
|
policyDAO.addDatesToPolicy(policy.getStartDate(), policy.getEndDate(), policy);
|
||||||
}
|
}
|
||||||
@ -145,6 +158,20 @@ public class PolicyManagerImpl implements PolicyManager {
|
|||||||
policyDAO.addPolicyToDevice(policy.getDevices(), policy);
|
policyDAO.addPolicyToDevice(policy.getDevices(), policy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (policy.getPolicyCriterias() != null) {
|
||||||
|
List<PolicyCriterion> criteria = policy.getPolicyCriterias();
|
||||||
|
for (PolicyCriterion criterion : criteria) {
|
||||||
|
if (!policyDAO.checkCriterionExists(criterion.getName())) {
|
||||||
|
Criterion criteriaObj = new Criterion();
|
||||||
|
criteriaObj.setName(criterion.getName());
|
||||||
|
policyDAO.addCriterion(criteriaObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
policyDAO.addPolicyCriteria(policy);
|
||||||
|
policyDAO.addPolicyCriteriaProperties(policy.getPolicyCriterias());
|
||||||
|
}
|
||||||
|
|
||||||
if (policy.getEndDate() != null & policy.getStartDate() != null) {
|
if (policy.getEndDate() != null & policy.getStartDate() != null) {
|
||||||
policyDAO.addDatesToPolicy(policy.getStartDate(), policy.getEndDate(), policy);
|
policyDAO.addDatesToPolicy(policy.getStartDate(), policy.getEndDate(), policy);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user