Adding the DAO layers for the policy administration, Test cases are added for H2 database type and MySql, This is having the initial cut of the policy and profile saving

4.x.x
Geeth Munasinghe 10 years ago
parent 92d0faf079
commit c13b942f0e

@ -51,7 +51,7 @@ public class FeatureFilterImpl implements FeatureFilter {
public List<Feature> extractFeatures(List<Policy> policyList) { public List<Feature> extractFeatures(List<Policy> policyList) {
List<Feature> featureList = new ArrayList<Feature>(); List<Feature> featureList = new ArrayList<Feature>();
for (Policy policy : policyList) { for (Policy policy : policyList) {
featureList.addAll(policy.getFeaturesList()); featureList.addAll(policy.getProfile().getFeaturesList());
} }
return featureList; return featureList;
} }

@ -63,7 +63,7 @@ public class PolicyFilterImpl implements PolicyFilter {
List<Policy> policies = new ArrayList<Policy>(); List<Policy> policies = new ArrayList<Policy>();
for (Policy policy : policyList) { for (Policy policy : policyList) {
if (policy.getDeviceType().equalsIgnoreCase(deviceType)) { if (policy.getProfile().getDeviceType().getName().equalsIgnoreCase(deviceType)) {
policies.add(policy); policies.add(policy);
} }
} }

@ -54,7 +54,8 @@
<Bundle-Description>Policy Management Common Bundle</Bundle-Description> <Bundle-Description>Policy Management Common Bundle</Bundle-Description>
<Private-Package>org.wso2.carbon.policy.mgt.common.internal</Private-Package> <Private-Package>org.wso2.carbon.policy.mgt.common.internal</Private-Package>
<Import-Package> <Import-Package>
org.apache.commons.logging org.apache.commons.logging,
org.wso2.carbon.device.mgt.core.*
</Import-Package> </Import-Package>
<Export-Package> <Export-Package>
org.wso2.carbon.policy.mgt.common.* org.wso2.carbon.policy.mgt.common.*
@ -82,6 +83,10 @@
<groupId>org.testng</groupId> <groupId>org.testng</groupId>
<artifactId>testng</artifactId> <artifactId>testng</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.device.mgt.core</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

@ -23,9 +23,18 @@ public class Feature {
private int id; private int id;
private String code; private String code;
private String name; private String name;
private String description;
private Object attribute; private Object attribute;
private String ruleValue; private String ruleValue;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getRuleValue() { public String getRuleValue() {
return ruleValue; return ruleValue;
} }

@ -30,5 +30,5 @@ public interface FeatureManagerService {
List<Feature> getFeatures() throws FeatureManagementException; List<Feature> getFeatures() throws FeatureManagementException;
List<Feature> getFeaturesOfPolicy(int policyId) throws FeatureManagementException; List<Feature> getFeaturesOfPolicy(int profileId) throws FeatureManagementException;
} }

@ -28,13 +28,12 @@ import java.util.Map;
public class Policy { public class Policy {
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 id
private String policyName; // Name of the policy. private String policyName; // Name of the policy.
private List<Feature> featuresList; // Features included in the policies.
private boolean generic; // If true, this should be applied to all related device. 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 List<String> roleList; // Roles which this policy should be applied.
private String ownershipType; // Ownership type (COPE, BYOD, CPE) private String ownershipType; // Ownership type (COPE, BYOD, CPE)
private List<String> DeviceList; // Individual devices this policy should be applied private List<String> DeviceList; // Individual devices this policy should be applied
private String deviceType; // Device type to apply the policy.
/*Dynamic policy attributes*/ /*Dynamic policy attributes*/
@ -71,20 +70,20 @@ public class Policy {
this.priorityId = priorityId; this.priorityId = priorityId;
} }
public String getPolicyName() { public Profile getProfile() {
return policyName; return profile;
} }
public void setPolicyName(String policyName) { public void setProfile(Profile profile) {
this.policyName = policyName; this.profile = profile;
} }
public List<Feature> getFeaturesList() { public String getPolicyName() {
return featuresList; return policyName;
} }
public void setFeaturesList(List<Feature> featuresList) { public void setPolicyName(String policyName) {
this.featuresList = featuresList; this.policyName = policyName;
} }
public boolean isGeneric() { public boolean isGeneric() {
@ -119,14 +118,6 @@ public class Policy {
DeviceList = deviceList; DeviceList = deviceList;
} }
public String getDeviceType() {
return deviceType;
}
public void setDeviceType(String deviceType) {
this.deviceType = deviceType;
}
public int getStartTime() { public int getStartTime() {
return startTime; return startTime;
} }

@ -102,6 +102,7 @@ public interface PolicyAdministratorService {
/** /**
* This method checks weather a policy is available for a device. * This method checks weather a policy is available for a device.
*
* @param deviceId * @param deviceId
* @param deviceType * @param deviceType
* @return * @return
@ -112,6 +113,7 @@ public interface PolicyAdministratorService {
/** /**
* This method checks weather a policy is used by a particular device. * This method checks weather a policy is used by a particular device.
*
* @param deviceId * @param deviceId
* @param deviceType * @param deviceType
* @return * @return
@ -121,11 +123,19 @@ public interface PolicyAdministratorService {
/** /**
*
* @param deviceId * @param deviceId
* @param deviceType * @param deviceType
* @param policy * @param policy
* @throws PolicyManagementException * @throws PolicyManagementException
*/ */
void setPolicyUsed(String deviceId, String deviceType, Policy policy) throws PolicyManagementException; void setPolicyUsed(String deviceId, String deviceType, Policy policy) throws PolicyManagementException;
/**
* This method will add the profile to database,
* @param profile
* @throws PolicyManagementException
*/
void addProfile(Profile profile) throws PolicyManagementException;
void deleteProfile(int profileId) throws PolicyManagementException;
} }

@ -0,0 +1,91 @@
/*
* 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;
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
import java.sql.Timestamp;
import java.util.List;
public class Profile {
private int profileId;
private String profileName;
private int tenantId;
private DeviceType deviceType;
private Timestamp createdDate;
private Timestamp updatedDate;
private List<Feature> featuresList; // Features included in the policies.
public DeviceType getDeviceType() {
return deviceType;
}
public void setDeviceType(DeviceType deviceType) {
this.deviceType = deviceType;
}
public int getTenantId() {
return tenantId;
}
public void setTenantId(int tenantId) {
this.tenantId = tenantId;
}
public List<Feature> getFeaturesList() {
return featuresList;
}
public void setFeaturesList(List<Feature> featuresList) {
this.featuresList = featuresList;
}
public int getProfileId() {
return profileId;
}
public void setProfileId(int profileId) {
this.profileId = profileId;
}
public String getProfileName() {
return profileName;
}
public void setProfileName(String profileName) {
this.profileName = profileName;
}
public Timestamp getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Timestamp createdDate) {
this.createdDate = createdDate;
}
public Timestamp getUpdatedDate() {
return updatedDate;
}
public void setUpdatedDate(Timestamp updatedDate) {
this.updatedDate = updatedDate;
}
}

@ -18,10 +18,7 @@
package org.wso2.carbon.policy.mgt.common.impl; package org.wso2.carbon.policy.mgt.common.impl;
import org.wso2.carbon.policy.mgt.common.FeatureManagementException; import org.wso2.carbon.policy.mgt.common.*;
import org.wso2.carbon.policy.mgt.common.Policy;
import org.wso2.carbon.policy.mgt.common.PolicyAdministratorService;
import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
public class PolicyManagement implements PolicyAdministratorService { public class PolicyManagement implements PolicyAdministratorService {
@Override @Override
@ -78,4 +75,14 @@ public class PolicyManagement implements PolicyAdministratorService {
public void setPolicyUsed(String deviceId, String deviceType, Policy policy) throws PolicyManagementException { public void setPolicyUsed(String deviceId, String deviceType, Policy policy) throws PolicyManagementException {
} }
@Override
public void addProfile(Profile profile) throws PolicyManagementException {
}
@Override
public void deleteProfile(int profileId) throws PolicyManagementException {
}
} }

@ -0,0 +1,211 @@
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
CREATE SCHEMA IF NOT EXISTS `WSO2CDM` DEFAULT CHARACTER SET latin1 ;
USE `WSO2CDM` ;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_DEVICE_TYPE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_DEVICE_TYPE` (
`ID` INT(11) NOT NULL ,
`NAME` VARCHAR(300) NULL DEFAULT NULL ,
PRIMARY KEY (`ID`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_DEVICE` (
`ID` VARCHAR(20) NOT NULL ,
`DESCRIPTION` TEXT NULL DEFAULT NULL ,
`NAME` VARCHAR(100) NULL DEFAULT NULL ,
`DATE_OF_ENROLLMENT` BIGINT(20) NULL DEFAULT NULL ,
`DATE_OF_LAST_UPDATE` BIGINT(20) NULL DEFAULT NULL ,
`OWNERSHIP` VARCHAR(45) NULL DEFAULT NULL ,
`STATUS` VARCHAR(15) NULL DEFAULT NULL ,
`DEVICE_TYPE_ID` INT(11) NULL DEFAULT NULL ,
`DEVICE_IDENTIFICATION` VARCHAR(300) NULL DEFAULT NULL ,
`OWNER` VARCHAR(45) NULL DEFAULT NULL ,
`TENANT_ID` INT(11) NULL DEFAULT '0' ,
PRIMARY KEY (`ID`) ,
INDEX `fk_DM_DEVICE_DM_DEVICE_TYPE2` (`DEVICE_TYPE_ID` ASC) ,
CONSTRAINT `fk_DM_DEVICE_DM_DEVICE_TYPE2`
FOREIGN KEY (`DEVICE_TYPE_ID` )
REFERENCES `WSO2CDM`.`DM_DEVICE_TYPE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_PROFILE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_PROFILE` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`PROFILE_NAME` VARCHAR(45) NOT NULL ,
`TENANT_ID` INT NOT NULL ,
`CREATED_TIME` DATETIME NOT NULL ,
`UPDATED_TIME` DATETIME NOT NULL ,
PRIMARY KEY (`ID`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_POLICY`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_POLICY` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`NAME` VARCHAR(45) NULL DEFAULT NULL ,
`TENANT_ID` INT(11) NOT NULL ,
`PROFILE_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `FK_DM_PROFILE_DM_POLICY` (`PROFILE_ID` ASC) ,
CONSTRAINT `FK_DM_PROFILE_DM_POLICY`
FOREIGN KEY (`PROFILE_ID` )
REFERENCES `WSO2CDM`.`DM_PROFILE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_DEVICE_POLICY`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_DEVICE_POLICY` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`DEVICE_ID` INT(11) NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `FK_POLICY_DEVICE_POLICY` (`POLICY_ID` ASC) ,
CONSTRAINT `FK_POLICY_DEVICE_POLICY`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `WSO2CDM`.`DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_DEVICE_TYPE_POLICY`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_DEVICE_TYPE_POLICY` (
`ID` INT(11) NOT NULL ,
`DEVICE_TYPE_ID` INT(11) NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `FK_DEVICE_TYPE_POLICY` (`POLICY_ID` ASC) ,
INDEX `FK_DEVICE_TYPE_POLICY_DEVICE_TYPE` (`DEVICE_TYPE_ID` ASC) ,
CONSTRAINT `FK_DEVICE_TYPE_POLICY`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `WSO2CDM`.`DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_DEVICE_TYPE_POLICY_DEVICE_TYPE`
FOREIGN KEY (`DEVICE_TYPE_ID` )
REFERENCES `WSO2CDM`.`DM_DEVICE_TYPE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_FEATURES`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_FEATURES` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`NAME` VARCHAR(256) NOT NULL ,
`CODE` VARCHAR(45) NULL DEFAULT NULL ,
`DESCRIPTION` TEXT NULL DEFAULT NULL ,
`EVALUVATION_RULE` VARCHAR(60) NOT NULL ,
PRIMARY KEY (`ID`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_POLICY_FEATURES`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_POLICY_FEATURES` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`PROFILE_ID` INT(11) NOT NULL ,
`FEATURE_ID` INT(11) NOT NULL ,
`CONTENT` BLOB NULL DEFAULT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `fk_DM_POLICY_FEATURES_DM_FEATURES1` (`FEATURE_ID` ASC) ,
INDEX `FK_DM_PROFILE_DM_POLICY_FEATURES` (`PROFILE_ID` ASC) ,
CONSTRAINT `fk_DM_POLICY_FEATURES_DM_FEATURES1`
FOREIGN KEY (`FEATURE_ID` )
REFERENCES `WSO2CDM`.`DM_FEATURES` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_DM_PROFILE_DM_POLICY_FEATURES`
FOREIGN KEY (`PROFILE_ID` )
REFERENCES `WSO2CDM`.`DM_PROFILE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_ROLE_POLICY`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_ROLE_POLICY` (
`ID` INT(11) NOT NULL ,
`ROLE_NAME` VARCHAR(45) NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `FK_ROLE_POLICY_POLICY` (`POLICY_ID` ASC) ,
CONSTRAINT `FK_ROLE_POLICY_POLICY`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `WSO2CDM`.`DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_LOCATION`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_LOCATION` (
`LAT` VARCHAR(45) NOT NULL ,
`LONG` VARCHAR(45) NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
INDEX `FK_DM_POLICY_DM_LOCATION` (`POLICY_ID` ASC) ,
CONSTRAINT `FK_DM_POLICY_DM_LOCATION`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `WSO2CDM`.`DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_TIME`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_TIME` (
`STARTING_TIME` DATETIME NOT NULL ,
`ENDING_TIME` DATETIME NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
INDEX `FK_DM_POLICY_DM_TIME` (`POLICY_ID` ASC) ,
CONSTRAINT `FK_DM_POLICY_DM_TIME`
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;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

@ -20,6 +20,7 @@ package org.wos2.carbon.policy.mgt.common.utils;
import org.wso2.carbon.policy.mgt.common.Feature; import org.wso2.carbon.policy.mgt.common.Feature;
import org.wso2.carbon.policy.mgt.common.Policy; import org.wso2.carbon.policy.mgt.common.Policy;
import org.wso2.carbon.policy.mgt.common.Profile;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -38,7 +39,14 @@ public class PolicyCreator {
List<Feature> featureList = new ArrayList<Feature>(); List<Feature> featureList = new ArrayList<Feature>();
featureList.add(feature); featureList.add(feature);
policy.setFeaturesList(featureList); Profile profile = new Profile();
profile.setProfileId(1);
profile.setProfileName("Test-01");
profile.setTenantId(-1234);
policy.setProfile(profile);
profile.setFeaturesList(featureList);
policy.setPolicyName("Camera_related_policy"); policy.setPolicyName("Camera_related_policy");
return policy; return policy;

@ -18,7 +18,8 @@
~ under the License. ~ under the License.
--> -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>org.wso2.carbon.devicemgt</groupId> <groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>policy-mgt</artifactId> <artifactId>policy-mgt</artifactId>
@ -66,7 +67,8 @@
org.w3c.dom, org.w3c.dom,
org.wso2.carbon.policy.mgt.common.*, org.wso2.carbon.policy.mgt.common.*,
org.wso2.carbon.user.core.*, org.wso2.carbon.user.core.*,
org.wso2.carbon.utils org.wso2.carbon.utils.*,
org.wso2.carbon.device.mgt.core.*
</Import-Package> </Import-Package>
<Export-Package> <Export-Package>
!org.wso2.carbon.policy.mgt.core.internal, !org.wso2.carbon.policy.mgt.core.internal,
@ -75,6 +77,21 @@
</instructions> </instructions>
</configuration> </configuration>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18</version>
<configuration>
<systemPropertyVariables>
<log4j.configuration>file:src/test/resources/log4j.properties</log4j.configuration>
</systemPropertyVariables>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins> </plugins>
</build> </build>
@ -113,6 +130,30 @@
<groupId>org.wso2.carbon.devicemgt</groupId> <groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.mgt.common</artifactId> <artifactId>org.wso2.carbon.policy.mgt.common</artifactId>
</dependency> </dependency>
<!--Test Case -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.wso2</groupId>
<artifactId>jdbc-pool</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database.wso2</groupId>
<artifactId>h2-database-engine</artifactId>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

@ -18,7 +18,12 @@
package org.wso2.carbon.policy.mgt.core.dao; 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.Policy; import org.wso2.carbon.policy.mgt.common.Policy;
import org.wso2.carbon.policy.mgt.common.Profile;
import java.util.List;
public interface PolicyDAO { public interface PolicyDAO {
@ -35,4 +40,24 @@ public interface PolicyDAO {
Policy getPolicy(String deviceType) throws PolicyManagerDAOException; Policy getPolicy(String deviceType) throws PolicyManagerDAOException;
Policy getPolicy(String deviceID, String deviceType) throws PolicyManagerDAOException; Policy getPolicy(String deviceID, String deviceType) throws PolicyManagerDAOException;
void deletePolicy(Policy policy) throws PolicyManagerDAOException;
void addProfile(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;
} }

@ -35,14 +35,22 @@ public class PolicyManagementDAOFactory {
private static final Log log = LogFactory.getLog(PolicyManagementDAOFactory.class); private static final Log log = LogFactory.getLog(PolicyManagementDAOFactory.class);
public static PolicyDAO getDeviceTypeDAO() {
return new PolicyDAOImpl(dataSource);
}
public static void init(DataSourceConfig config) { public static void init(DataSourceConfig config) {
dataSource = resolveDataSource(config); dataSource = resolveDataSource(config);
} }
public static void init(DataSource dtSource) {
dataSource = dtSource;
}
public static DataSource getDataSource() {
if (dataSource != null) {
return dataSource;
}
throw new RuntimeException("Data source is not yet configured.");
}
/** /**
* Resolve data source from the data source definition * Resolve data source from the data source definition
* *

@ -20,64 +20,539 @@ package org.wso2.carbon.policy.mgt.core.dao.impl;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; 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.Policy; 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.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.PolicyManagerDAOException;
import org.wso2.carbon.policy.mgt.core.dao.util.PolicyManagementDAOUtil;
import javax.sql.DataSource;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class PolicyDAOImpl implements PolicyDAO { public class PolicyDAOImpl implements PolicyDAO {
private static DataSource dataSource;
private static final Log log = LogFactory.getLog(PolicyDAOImpl.class); private static final Log log = LogFactory.getLog(PolicyDAOImpl.class);
public PolicyDAOImpl(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override @Override
public int addPolicy(Policy policy) throws PolicyManagerDAOException { public int addPolicy(Policy policy) throws PolicyManagerDAOException {
return 0; persistPolicy(policy);
return policy.getId();
} }
@Override @Override
public int addPolicy(String deviceType, Policy policy) throws PolicyManagerDAOException { public int addPolicy(String deviceType, Policy policy) throws PolicyManagerDAOException {
return 0;
// 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_DEVICE_TYPE_POLICY (DEVICE_TYPE_ID, POLICY_ID) VALUES (?, ?)";
stmt = conn.prepareStatement(query);
stmt.setInt(1, getDeviceTypeId(deviceType));
stmt.setInt(2, policy.getId());
stmt.executeQuery();
} catch (SQLException e) {
String msg = "Error occurred while adding the device type policy to database.";
log.error(msg, e);
throw new PolicyManagerDAOException(msg, e);
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
}
return policy.getId();
} }
@Override @Override
public int addPolicy(String deviceID, String deviceType, Policy policy) throws PolicyManagerDAOException { public int addPolicy(String deviceID, String deviceType, Policy policy) throws PolicyManagerDAOException {
// First persist the policy to the data base.
persistPolicy(policy);
Connection conn = null;
PreparedStatement stmt = null;
ResultSet generatedKeys = null;
try {
conn = this.getConnection();
String query = "";
stmt = conn.prepareStatement(query);
} catch (SQLException e) {
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
}
return 0; return 0;
} }
@Override @Override
public void updatePolicy(int id, Policy policy) throws PolicyManagerDAOException { public void updatePolicy(int id, Policy policy) throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet generatedKeys = null;
try {
conn = this.getConnection();
String query = "";
stmt = conn.prepareStatement(query);
} catch (Exception e) {
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
}
} }
@Override @Override
public Policy getPolicy() throws PolicyManagerDAOException { public Policy getPolicy() throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet generatedKeys = null;
try {
conn = this.getConnection();
String query = "";
stmt = conn.prepareStatement(query);
} catch (Exception e) {
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
}
return null; return null;
} }
@Override @Override
public Policy getPolicy(String deviceType) throws PolicyManagerDAOException { public Policy getPolicy(String deviceType) throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet generatedKeys = null;
try {
conn = this.getConnection();
String query = "";
stmt = conn.prepareStatement(query);
} catch (Exception e) {
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
}
return null; return null;
} }
@Override @Override
public Policy getPolicy(String deviceID, String deviceType) throws PolicyManagerDAOException { public Policy getPolicy(String deviceID, String deviceType) throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet generatedKeys = null;
try {
conn = this.getConnection();
String query = "";
stmt = conn.prepareStatement(query);
} catch (Exception e) {
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
}
return null; return null;
} }
@Override
public void deletePolicy(Policy policy) throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet generatedKeys = null;
try {
conn = this.getConnection();
String query = "DELETE FROM DM_POLICY WHERE ID = ?";
stmt = conn.prepareStatement(query);
stmt.setInt(1, policy.getId());
stmt.executeUpdate();
if (log.isDebugEnabled()) {
log.debug("Policy (" + policy.getPolicyName() + ") delete from database.");
}
} catch (Exception e) {
String msg = "Unable to delete the policy (" + policy.getPolicyName() + ") from database.";
log.error(msg);
throw new PolicyManagerDAOException(msg, e);
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
}
}
private Connection getConnection() throws PolicyManagerDAOException { private Connection getConnection() throws PolicyManagerDAOException {
try { try {
return dataSource.getConnection(); return PolicyManagementDAOFactory.getDataSource().getConnection();
} catch (SQLException e) { } catch (SQLException e) {
throw new PolicyManagerDAOException("Error occurred while obtaining a connection from the policy " + throw new PolicyManagerDAOException("Error occurred while obtaining a connection from the policy " +
"management metadata repository datasource", e); "management metadata repository datasource", e);
} }
} }
private void persistPolicy(Policy policy) throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet generatedKeys = null;
// TODO : find a way to get the tenant Id.
int tenantId = -1234;
try {
conn = this.getConnection();
String query = "IINSERT INTO DM_POLICY (NAME, PROFILE_ID, TENANT_ID) VALUES (?, ?, ?)";
stmt = conn.prepareStatement(query, stmt.RETURN_GENERATED_KEYS);
stmt.setString(1, policy.getPolicyName());
stmt.setInt(2, policy.getProfile().getProfileId());
stmt.setInt(3, tenantId);
int affectedRows = stmt.executeUpdate();
if (affectedRows == 0 && log.isDebugEnabled()) {
String msg = "No rows are updated on the policy table.";
log.debug(msg);
}
generatedKeys = stmt.getGeneratedKeys();
if (generatedKeys.next()) {
policy.setId(generatedKeys.getInt(1));
}
// checking policy id here, because it object could have passed with id from the calling method.
if (policy.getId() == 0) {
throw new RuntimeException("No rows were inserted, policy id cannot be null.");
}
} catch (SQLException e) {
String msg = "Error occurred while adding policy to the database.";
log.error(msg, e);
throw new PolicyManagerDAOException(msg, e);
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
}
}
private void persistFeatures(Profile profile) throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String query = "INSERT INTO DM_PROFILE_FEATURES (PROFILE_ID, FEATURE_ID, CONTENT) VALUES (?, ?, ?)";
stmt = conn.prepareStatement(query);
for (Feature feature : profile.getFeaturesList()) {
stmt.setInt(1, profile.getProfileId());
stmt.setInt(2, feature.getId());
stmt.setObject(3, feature.getAttribute());
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 PolicyManagerDAOException(msg, e);
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, null);
}
}
public void addProfile(Profile profile) throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet generatedKeys = null;
// TODO : find a way to get the tenant Id.
int tenantId = -1234;
try {
conn = this.getConnection();
String query = "INSERT INTO DM_PROFILE (PROFILE_NAME,TENANT_ID, DEVICE_TYPE_ID, CREATED_TIME, UPDATED_TIME) VALUES (?, ?, ?)";
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.getCreatedDate());
stmt.setTimestamp(5, profile.getUpdatedDate());
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.");
}
persistFeatures(profile);
} catch (SQLException e) {
String msg = "Error occurred while adding the profile to database.";
log.error(msg, e);
throw new PolicyManagerDAOException(msg, e);
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
}
}
@Override
public void deleteProfile(Profile profile) throws PolicyManagerDAOException {
// First delete the features related to the profile
deleteFeaturesOfProfile(profile);
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String query = "DELETE FROM DM_PROFILE WHERE ID = ?";
stmt = conn.prepareStatement(query);
stmt.setInt(1, profile.getProfileId());
stmt.executeUpdate();
} catch (SQLException e) {
String msg = "Error occurred while deleting the profile from the data base.";
log.error(msg);
throw new PolicyManagerDAOException(msg, e);
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, null);
}
}
@Override
public void deleteFeaturesOfProfile(Profile profile) throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = this.getConnection();
String query = "DELETE FROM DM_PROFILE_FEATURES WHERE PROFILE_ID = ?";
stmt = conn.prepareStatement(query);
stmt.setInt(1, profile.getProfileId());
stmt.executeUpdate();
} catch (SQLException e) {
String msg = "Error occurred while deleting the feature related to a profile.";
log.error(msg);
throw new PolicyManagerDAOException(msg, e);
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, null);
}
}
@Override
public Feature addFeature(Feature feature) throws PolicyManagerDAOException, FeatureManagementException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet generatedKeys = null;
try {
conn = this.getConnection();
String query = "INSERT INTO DM_FEATURES (NAME, CODE, DESCRIPTION, EVALUVATION_RULE) VALUES (?, ?, ?, ?)";
stmt = conn.prepareStatement(query, stmt.RETURN_GENERATED_KEYS);
stmt.setString(1, feature.getName());
stmt.setString(2, feature.getCode());
stmt.setString(3, feature.getDescription());
stmt.setString(4, feature.getRuleValue());
int affectedRows = stmt.executeUpdate();
if (log.isDebugEnabled()) {
log.debug(affectedRows + " Features are added.");
}
generatedKeys = stmt.getGeneratedKeys();
while (generatedKeys.next()) {
feature.setId(generatedKeys.getInt(1));
}
} catch (SQLException e) {
String msg = "Error occurred while adding feature to the database.";
log.error(msg, e);
throw new PolicyManagerDAOException(msg, e);
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, generatedKeys);
}
return feature;
}
@Override
public List<Profile> getAllProfiles() throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet generatedKeys = null;
try {
conn = this.getConnection();
String query = "";
stmt = conn.prepareStatement(query);
} catch (SQLException e) {
}
return null;
}
@Override
public List<Profile> getProfilesOfDeviceType(String deviceType) throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet generatedKeys = null;
try {
conn = this.getConnection();
String query = "";
stmt = conn.prepareStatement(query);
} catch (SQLException e) {
}
return null;
}
@Override
public List<Feature> getAllFeatures() throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet resultSet = null;
List<Feature> featureList = new ArrayList<Feature>();
try {
conn = this.getConnection();
String query = "SELECT ID, NAME, CODE, EVALUVATION_RULE FROM DM_FEATURES";
stmt = conn.prepareStatement(query);
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.setRuleValue(resultSet.getString("EVALUVATION_RULE"));
featureList.add(feature);
}
} catch (SQLException e) {
String msg = "Unable to get the list of the features from database.";
log.error(msg);
throw new PolicyManagerDAOException(msg, e);
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
}
return featureList;
}
@Override
public List<Feature> getFeaturesForProfile(int profileId) throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet resultSet = null;
List<Feature> featureList = new ArrayList<Feature>();
try {
conn = this.getConnection();
String query = "SELECT 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);
stmt.setInt(1, profileId);
resultSet = stmt.executeQuery();
while (resultSet.next()) {
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.setRuleValue(resultSet.getString("RULE"));
featureList.add(feature);
}
} catch (SQLException e) {
String msg = "Unable to get the list of the features from database.";
log.error(msg);
throw new PolicyManagerDAOException(msg, e);
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
}
return featureList;
}
@Override
public void deleteFeature(int featureId) throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet generatedKeys = null;
try {
conn = this.getConnection();
String query = "";
stmt = conn.prepareStatement(query);
} catch (SQLException e) {
}
}
/**
* This method returns the device type id when supplied with device type name.
*
* @param deviceType
* @return
* @throws PolicyManagerDAOException
*/
private int getDeviceTypeId(String deviceType) throws PolicyManagerDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet resultSet = null;
int deviceTypeId = -1;
try {
conn = this.getConnection();
String query = "SELECT ID FROM DM_DEVICE_TYPE WHERE NAME = ?";
stmt = conn.prepareStatement(query);
stmt.setString(1, deviceType);
resultSet = stmt.executeQuery();
while (resultSet.next()) {
deviceTypeId = resultSet.getInt("ID");
}
} catch (SQLException e) {
String msg = "Error occurred while selecting the device type id.";
log.error(msg, e);
throw new PolicyManagerDAOException(msg, e);
} finally {
PolicyManagementDAOUtil.cleanupResources(conn, stmt, resultSet);
}
return deviceTypeId;
}
} }

@ -0,0 +1,157 @@
/*
* 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.core;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tomcat.jdbc.pool.PoolProperties;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.w3c.dom.Document;
import org.wso2.carbon.policy.mgt.common.Feature;
import org.wso2.carbon.policy.mgt.common.FeatureManagementException;
import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
import org.wso2.carbon.policy.mgt.core.common.DBTypes;
import org.wso2.carbon.policy.mgt.core.common.TestDBConfiguration;
import org.wso2.carbon.policy.mgt.core.common.TestDBConfigurations;
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.impl.PolicyDAOImpl;
import org.wso2.carbon.policy.mgt.core.util.FeatureCreator;
import org.wso2.carbon.policy.mgt.core.util.PolicyManagerUtil;
import javax.sql.DataSource;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import java.io.File;
import java.sql.Connection;
import java.sql.Statement;
import java.util.List;
public class PolicyDAOTestCase {
private DataSource dataSource;
private static final Log log = LogFactory.getLog(PolicyDAOTestCase.class);
@BeforeClass
@Parameters("dbType")
public void setUpDB(String dbTypeStr) throws Exception {
DBTypes dbType = DBTypes.valueOf(dbTypeStr);
TestDBConfiguration dbConfig = getTestDBConfiguration(dbType);
PoolProperties properties = new PoolProperties();
log.info("Database Type : " + dbTypeStr);
switch (dbType) {
case MySql:
log.info("Mysql Called..................................................." + dbTypeStr);
properties.setUrl(dbConfig.getConnectionUrl());
properties.setDriverClassName(dbConfig.getDriverClass());
properties.setUsername(dbConfig.getUserName());
properties.setPassword(dbConfig.getPwd());
dataSource = new org.apache.tomcat.jdbc.pool.DataSource(properties);
PolicyManagementDAOFactory.init(dataSource);
break;
case H2:
properties.setUrl(dbConfig.getConnectionUrl());
properties.setDriverClassName(dbConfig.getDriverClass());
properties.setUsername(dbConfig.getUserName());
properties.setPassword(dbConfig.getPwd());
dataSource = new org.apache.tomcat.jdbc.pool.DataSource(properties);
this.initH2SQLScript();
PolicyManagementDAOFactory.init(dataSource);
break;
default:
}
}
private TestDBConfiguration getTestDBConfiguration(DBTypes dbType) throws PolicyManagerDAOException,
PolicyManagementException {
File deviceMgtConfig = new File("src/test/resources/testdbconfig.xml");
Document doc;
TestDBConfigurations dbConfigs;
doc = PolicyManagerUtil.convertToDocument(deviceMgtConfig);
JAXBContext testDBContext;
try {
testDBContext = JAXBContext.newInstance(TestDBConfigurations.class);
Unmarshaller unmarshaller = testDBContext.createUnmarshaller();
dbConfigs = (TestDBConfigurations) unmarshaller.unmarshal(doc);
} catch (JAXBException e) {
throw new PolicyManagerDAOException("Error parsing test db configurations", e);
}
for (TestDBConfiguration config : dbConfigs.getDbTypesList()) {
if (config.getDbType().equals(dbType.toString())) {
return config;
}
}
return null;
}
private void initH2SQLScript() throws Exception {
Connection conn = null;
Statement stmt = null;
try {
conn = this.getDataSource().getConnection();
stmt = conn.createStatement();
stmt.executeUpdate("RUNSCRIPT FROM './src/test/resources/sql/CreateH2TestDB.sql'");
} finally {
TestUtils.cleanupResources(conn, stmt, null);
}
}
private void initMySQlSQLScript() throws Exception {
Connection conn = null;
Statement stmt = null;
try {
conn = this.getDataSource().getConnection();
stmt = conn.createStatement();
stmt.executeUpdate("RUNSCRIPT FROM './src/test/resources/sql/CreateMySqlTestDB.sql'");
} finally {
TestUtils.cleanupResources(conn, stmt, null);
}
}
private DataSource getDataSource() {
return dataSource;
}
@Test
public void addFeatures() throws PolicyManagerDAOException, PolicyManagementException, FeatureManagementException {
PolicyDAOImpl policyDAO = new PolicyDAOImpl();
List<Feature> featureList = FeatureCreator.getFeatureList();
for (Feature feature : featureList) {
policyDAO.addFeature(feature);
}
}
}

@ -0,0 +1,56 @@
/*
* Copyright (c) 2014, 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.core;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestUtils {
private static final Log log = LogFactory.getLog(TestUtils.class);
public static void cleanupResources(Connection conn, Statement stmt, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
log.warn("Error occurred while closing result set", e);
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
log.warn("Error occurred while closing prepared statement", e);
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
log.warn("Error occurred while closing database connection", e);
}
}
}
}

@ -0,0 +1,29 @@
/*
* Copyright (c) 2014, 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.core.common;
public enum DBTypes {
Oracle("Oracle"),H2("H2"),MySql("MySql");
String dbName ;
DBTypes(String dbStrName) {
dbName = dbStrName;
}
}

@ -0,0 +1,90 @@
/*
* Copyright (c) 2014, 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.core.common;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "DBType")
public class TestDBConfiguration {
private String connectionUrl;
private String driverClass;
private String userName;
private String pwd;
@Override public String toString() {
return "TestDBConfiguration{" +
"connectionUrl='" + connectionUrl + '\'' +
", driverClass='" + driverClass + '\'' +
", userName='" + userName + '\'' +
", pwd='" + pwd + '\'' +
", dbType='" + dbType + '\'' +
'}';
}
private String dbType;
@XmlElement(name = "connectionurl", nillable = false)
public String getConnectionUrl() {
return connectionUrl;
}
public void setConnectionUrl(String connectionUrl) {
this.connectionUrl = connectionUrl;
}
@XmlElement(name = "driverclass", nillable = false)
public String getDriverClass() {
return driverClass;
}
public void setDriverClass(String driverClass) {
this.driverClass = driverClass;
}
@XmlElement(name = "userName", nillable = false)
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@XmlElement(name = "pwd", nillable = false)
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@XmlAttribute(name = "typeName")
public String getDbType() {
return dbType;
}
public void setDbType(String dbType) {
this.dbType = dbType;
}
}

@ -0,0 +1,39 @@
/*
* Copyright (c) 2014, 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.core.common;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
@XmlRootElement(name = "DeviceMgtTestDBConfigurations")
public class TestDBConfigurations {
private List<TestDBConfiguration> dbTypesList;
@XmlElement(name = "DBType")
public List<TestDBConfiguration> getDbTypesList() {
return dbTypesList;
}
public void setDbTypesList(List<TestDBConfiguration> dbTypesList) {
this.dbTypesList = dbTypesList;
}
}

@ -0,0 +1,115 @@
/*
* 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.core.util;
import org.wso2.carbon.policy.mgt.common.Feature;
import java.util.ArrayList;
import java.util.List;
public class FeatureCreator {
public static List<Feature> getFeatureList() {
Feature feature1 = new Feature();
feature1.setName("Camera");
feature1.setCode("C001");
feature1.setDescription("Camera");
feature1.setRuleValue("permit_override");
Feature feature2 = new Feature();
feature2.setName("LOCK");
feature2.setCode("L001");
feature2.setDescription("Lock the phone");
feature2.setRuleValue("deny_override");
Feature feature3 = new Feature();
feature3.setName("WIFI");
feature3.setCode("W001");
feature3.setDescription("Wifi configuration for the device");
feature3.setRuleValue("all_available");
Feature feature4 = new Feature();
feature4.setName("RING");
feature4.setCode("R001");
feature4.setDescription("Ring the mobile");
feature4.setRuleValue("first_applicable");
Feature feature5 = new Feature();
feature5.setName("LDAP");
feature5.setCode("L002");
feature5.setDescription("LDAP Configurations");
feature5.setRuleValue("all_available");
Feature feature6 = new Feature();
feature6.setName("VPN");
feature6.setCode("V001");
feature6.setDescription("VPN config for accessing the company network from out side");
feature6.setRuleValue("all_available");
Feature feature7 = new Feature();
feature7.setName("PASSWORD");
feature7.setCode("P001");
feature7.setDescription("Setting the password for the mobile");
feature7.setRuleValue("first_applicable");
Feature feature8 = new Feature();
feature8.setName("WIPE");
feature8.setCode("W002");
feature8.setDescription("Wiping the company profile created to access the company secure data");
feature8.setRuleValue("permit_override");
Feature feature9 = new Feature();
feature9.setName("ENCRYPTION");
feature9.setCode("E001");
feature9.setDescription("Adding the encryption for the phone and SD card.");
feature9.setRuleValue("permit_override");
Feature feature10 = new Feature();
feature10.setName("APP");
feature10.setCode("A001");
feature10.setDescription("Installing an application to the phone");
feature10.setRuleValue("permit_override");
Feature feature11 = new Feature();
feature11.setName("EMAIL");
feature11.setCode("E002");
feature11.setDescription("Email configurations of the phone.");
feature11.setRuleValue("all_applicable");
List<Feature> featureList = new ArrayList<Feature>();
featureList.add(feature1);
featureList.add(feature2);
featureList.add(feature3);
featureList.add(feature4);
featureList.add(feature5);
featureList.add(feature6);
featureList.add(feature7);
featureList.add(feature8);
featureList.add(feature9);
featureList.add(feature10);
featureList.add(feature11);
return featureList;
}
}

@ -0,0 +1,32 @@
#
# Copyright 2009 WSO2, Inc. (http://wso2.com)
#
# Licensed 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.
#
#
# This is the log4j configuration file used by WSO2 Carbon
#
# IMPORTANT : Please do not remove or change the names of any
# of the Appenders defined here. The layout pattern & log file
# can be changed using the WSO2 Carbon Management Console, and those
# settings will override the settings in this file.
#
log4j.rootLogger=DEBUG, STD_OUT
# Redirect log messages to console
log4j.appender.STD_OUT=org.apache.log4j.ConsoleAppender
log4j.appender.STD_OUT.Target=System.out
log4j.appender.STD_OUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STD_OUT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

@ -0,0 +1,213 @@
-- -----------------------------------------------------
-- Table `DM_DEVICE_TYPE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DM_DEVICE_TYPE` (
`ID` INT(11) NOT NULL ,
`NAME` VARCHAR(300) NULL DEFAULT NULL ,
PRIMARY KEY (`ID`) )
;
-- -----------------------------------------------------
-- Table `DM_DEVICE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DM_DEVICE` (
`ID` VARCHAR(20) NOT NULL ,
`DESCRIPTION` TEXT NULL DEFAULT NULL ,
`NAME` VARCHAR(100) NULL DEFAULT NULL ,
`DATE_OF_ENROLLMENT` BIGINT(20) NULL DEFAULT NULL ,
`DATE_OF_LAST_UPDATE` BIGINT(20) NULL DEFAULT NULL ,
`OWNERSHIP` VARCHAR(45) NULL DEFAULT NULL ,
`STATUS` VARCHAR(15) NULL DEFAULT NULL ,
`DEVICE_TYPE_ID` INT(11) NULL DEFAULT NULL ,
`DEVICE_IDENTIFICATION` VARCHAR(300) NULL DEFAULT NULL ,
`OWNER` VARCHAR(45) NULL DEFAULT NULL ,
`TENANT_ID` INT(11) NULL DEFAULT '0' ,
PRIMARY KEY (`ID`) ,
CONSTRAINT `fk_DM_DEVICE_DM_DEVICE_TYPE2`
FOREIGN KEY (`DEVICE_TYPE_ID` )
REFERENCES `DM_DEVICE_TYPE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
;
-- -----------------------------------------------------
-- Table `DM_PROFILE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DM_PROFILE` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`PROFILE_NAME` VARCHAR(45) NOT NULL ,
`TENANT_ID` INT NOT NULL ,
`DEVICE_TYPE_ID` INT NOT NULL ,
`CREATED_TIME` DATETIME NOT NULL ,
`UPDATED_TIME` DATETIME NOT NULL ,
PRIMARY KEY (`ID`) ,
CONSTRAINT `DM_PROFILE_DEVICE_TYPE`
FOREIGN KEY (`DEVICE_TYPE_ID` )
REFERENCES `DM_DEVICE_TYPE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
;
-- -----------------------------------------------------
-- Table `DM_POLICY`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DM_POLICY` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`NAME` VARCHAR(45) NULL DEFAULT NULL ,
`TENANT_ID` INT(11) NOT NULL ,
`PROFILE_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
CONSTRAINT `FK_DM_PROFILE_DM_POLICY`
FOREIGN KEY (`PROFILE_ID` )
REFERENCES `DM_PROFILE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
;
-- -----------------------------------------------------
-- Table `DM_DEVICE_POLICY`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DM_DEVICE_POLICY` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`DEVICE_ID` VARCHAR(20) NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
CONSTRAINT `FK_POLICY_DEVICE_POLICY`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_DEVICE_DEVICE_POLICY`
FOREIGN KEY (`DEVICE_ID` )
REFERENCES `DM_DEVICE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION);
;
-- -----------------------------------------------------
-- Table `DM_DEVICE_TYPE_POLICY`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DM_DEVICE_TYPE_POLICY` (
`ID` INT(11) NOT NULL ,
`DEVICE_TYPE_ID` INT(11) NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
CONSTRAINT `FK_DEVICE_TYPE_POLICY`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_DEVICE_TYPE_POLICY_DEVICE_TYPE`
FOREIGN KEY (`DEVICE_TYPE_ID` )
REFERENCES `DM_DEVICE_TYPE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION);
;
-- -----------------------------------------------------
-- Table `DM_FEATURES`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DM_FEATURES` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`NAME` VARCHAR(256) NOT NULL ,
`CODE` VARCHAR(45) NULL DEFAULT NULL ,
`DESCRIPTION` TEXT NULL DEFAULT NULL ,
`EVALUVATION_RULE` VARCHAR(60) NOT NULL ,
PRIMARY KEY (`ID`) );
;
-- -----------------------------------------------------
-- Table `DM_PROFILE_FEATURES`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `DM_PROFILE_FEATURES` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`PROFILE_ID` INT(11) NOT NULL ,
`FEATURE_ID` INT(11) NOT NULL ,
`CONTENT` BLOB NULL DEFAULT NULL ,
PRIMARY KEY (`ID`) ,
CONSTRAINT `fk_DM_POLICY_FEATURES_DM_FEATURES1`
FOREIGN KEY (`FEATURE_ID` )
REFERENCES `DM_FEATURES` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_DM_PROFILE_DM_POLICY_FEATURES`
FOREIGN KEY (`PROFILE_ID` )
REFERENCES `DM_PROFILE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION);
;
-- -----------------------------------------------------
-- Table `DM_ROLE_POLICY`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS DM_ROLE_POLICY (
`ID` INT(11) NOT NULL ,
`ROLE_NAME` VARCHAR(45) NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
CONSTRAINT `FK_ROLE_POLICY_POLICY`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION);
;
-- -----------------------------------------------------
-- Table `DM_LOCATION`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS DM_LOCATION (
`LAT` VARCHAR(45) NOT NULL ,
`LONG` VARCHAR(45) NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
CONSTRAINT `FK_DM_POLICY_DM_LOCATION`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION);
;
-- -----------------------------------------------------
-- Table `DM_TIME`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS DM_TIME (
`STARTING_TIME` DATETIME NOT NULL ,
`ENDING_TIME` DATETIME NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
CONSTRAINT `FK_DM_POLICY_DM_TIME`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION);
;

@ -0,0 +1,247 @@
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
DROP SCHEMA IF EXISTS `WSO2CDM` ;
CREATE SCHEMA IF NOT EXISTS `WSO2CDM` DEFAULT CHARACTER SET latin1 ;
USE `WSO2CDM` ;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_DEVICE_TYPE`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `WSO2CDM`.`DM_DEVICE_TYPE` ;
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_DEVICE_TYPE` (
`ID` INT(11) NOT NULL ,
`NAME` VARCHAR(300) NULL DEFAULT NULL ,
PRIMARY KEY (`ID`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_DEVICE`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `WSO2CDM`.`DM_DEVICE` ;
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_DEVICE` (
`ID` VARCHAR(20) NOT NULL ,
`DESCRIPTION` TEXT NULL DEFAULT NULL ,
`NAME` VARCHAR(100) NULL DEFAULT NULL ,
`DATE_OF_ENROLLMENT` BIGINT(20) NULL DEFAULT NULL ,
`DATE_OF_LAST_UPDATE` BIGINT(20) NULL DEFAULT NULL ,
`OWNERSHIP` VARCHAR(45) NULL DEFAULT NULL ,
`STATUS` VARCHAR(15) NULL DEFAULT NULL ,
`DEVICE_TYPE_ID` INT(11) NULL DEFAULT NULL ,
`DEVICE_IDENTIFICATION` VARCHAR(300) NULL DEFAULT NULL ,
`OWNER` VARCHAR(45) NULL DEFAULT NULL ,
`TENANT_ID` INT(11) NULL DEFAULT '0' ,
PRIMARY KEY (`ID`) ,
INDEX `fk_DM_DEVICE_DM_DEVICE_TYPE2` (`DEVICE_TYPE_ID` ASC) ,
CONSTRAINT `fk_DM_DEVICE_DM_DEVICE_TYPE2`
FOREIGN KEY (`DEVICE_TYPE_ID` )
REFERENCES `WSO2CDM`.`DM_DEVICE_TYPE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_PROFILE`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `WSO2CDM`.`DM_PROFILE` ;
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_PROFILE` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`PROFILE_NAME` VARCHAR(45) NOT NULL ,
`TENANT_ID` INT NOT NULL ,
`DEVICE_TYPE_ID` INT NOT NULL ,
`CREATED_TIME` DATETIME NOT NULL ,
`UPDATED_TIME` DATETIME NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `DM_PROFILE_DEVICE_TYPE` (`DEVICE_TYPE_ID` ASC) ,
CONSTRAINT `DM_PROFILE_DEVICE_TYPE`
FOREIGN KEY (`DEVICE_TYPE_ID` )
REFERENCES `WSO2CDM`.`DM_DEVICE_TYPE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_POLICY`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `WSO2CDM`.`DM_POLICY` ;
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_POLICY` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`NAME` VARCHAR(45) NULL DEFAULT NULL ,
`TENANT_ID` INT(11) NOT NULL ,
`PROFILE_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `FK_DM_PROFILE_DM_POLICY` (`PROFILE_ID` ASC) ,
CONSTRAINT `FK_DM_PROFILE_DM_POLICY`
FOREIGN KEY (`PROFILE_ID` )
REFERENCES `WSO2CDM`.`DM_PROFILE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_DEVICE_POLICY`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `WSO2CDM`.`DM_DEVICE_POLICY` ;
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_DEVICE_POLICY` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`DEVICE_ID` VARCHAR(20) NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `FK_POLICY_DEVICE_POLICY` (`POLICY_ID` ASC) ,
INDEX `FK_DEVICE_DEVICE_POLICY` (`DEVICE_ID` ASC) ,
CONSTRAINT `FK_POLICY_DEVICE_POLICY`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `WSO2CDM`.`DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_DEVICE_DEVICE_POLICY`
FOREIGN KEY (`DEVICE_ID` )
REFERENCES `WSO2CDM`.`DM_DEVICE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_DEVICE_TYPE_POLICY`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `WSO2CDM`.`DM_DEVICE_TYPE_POLICY` ;
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_DEVICE_TYPE_POLICY` (
`ID` INT(11) NOT NULL ,
`DEVICE_TYPE_ID` INT(11) NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `FK_DEVICE_TYPE_POLICY` (`POLICY_ID` ASC) ,
INDEX `FK_DEVICE_TYPE_POLICY_DEVICE_TYPE` (`DEVICE_TYPE_ID` ASC) ,
CONSTRAINT `FK_DEVICE_TYPE_POLICY`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `WSO2CDM`.`DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_DEVICE_TYPE_POLICY_DEVICE_TYPE`
FOREIGN KEY (`DEVICE_TYPE_ID` )
REFERENCES `WSO2CDM`.`DM_DEVICE_TYPE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_FEATURES`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `WSO2CDM`.`DM_FEATURES` ;
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_FEATURES` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`NAME` VARCHAR(256) NOT NULL ,
`CODE` VARCHAR(45) NULL DEFAULT NULL ,
`DESCRIPTION` TEXT NULL DEFAULT NULL ,
`EVALUVATION_RULE` VARCHAR(60) NOT NULL ,
PRIMARY KEY (`ID`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_PROFILE_FEATURES`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `WSO2CDM`.`DM_PROFILE_FEATURES` ;
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_PROFILE_FEATURES` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`PROFILE_ID` INT(11) NOT NULL ,
`FEATURE_ID` INT(11) NOT NULL ,
`CONTENT` BLOB NULL DEFAULT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `fk_DM_POLICY_FEATURES_DM_FEATURES1` (`FEATURE_ID` ASC) ,
INDEX `FK_DM_PROFILE_DM_POLICY_FEATURES` (`PROFILE_ID` ASC) ,
CONSTRAINT `fk_DM_POLICY_FEATURES_DM_FEATURES1`
FOREIGN KEY (`FEATURE_ID` )
REFERENCES `WSO2CDM`.`DM_FEATURES` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_DM_PROFILE_DM_POLICY_FEATURES`
FOREIGN KEY (`PROFILE_ID` )
REFERENCES `WSO2CDM`.`DM_PROFILE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_ROLE_POLICY`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `WSO2CDM`.`DM_ROLE_POLICY` ;
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_ROLE_POLICY` (
`ID` INT(11) NOT NULL ,
`ROLE_NAME` VARCHAR(45) NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `FK_ROLE_POLICY_POLICY` (`POLICY_ID` ASC) ,
CONSTRAINT `FK_ROLE_POLICY_POLICY`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `WSO2CDM`.`DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_LOCATION`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `WSO2CDM`.`DM_LOCATION` ;
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_LOCATION` (
`LAT` VARCHAR(45) NOT NULL ,
`LONG` VARCHAR(45) NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
INDEX `FK_DM_POLICY_DM_LOCATION` (`POLICY_ID` ASC) ,
CONSTRAINT `FK_DM_POLICY_DM_LOCATION`
FOREIGN KEY (`POLICY_ID` )
REFERENCES `WSO2CDM`.`DM_POLICY` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `WSO2CDM`.`DM_TIME`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `WSO2CDM`.`DM_TIME` ;
CREATE TABLE IF NOT EXISTS `WSO2CDM`.`DM_TIME` (
`STARTING_TIME` DATETIME NOT NULL ,
`ENDING_TIME` DATETIME NOT NULL ,
`POLICY_ID` INT(11) NOT NULL ,
INDEX `FK_DM_POLICY_DM_TIME` (`POLICY_ID` ASC) ,
CONSTRAINT `FK_DM_POLICY_DM_TIME`
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;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Copyright (c) 2014, 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.
-->
<DeviceMgtTestDBConfigurations>
<DBType typeName="MySql">
<connectionurl>jdbc:mysql://10.100.0.47:3306/WSO2CDM</connectionurl>
<driverclass>com.mysql.jdbc.Driver</driverclass>
<userName>root</userName>
<pwd>root</pwd>
</DBType>
<DBType typeName="H2">
<connectionurl>jdbc:h2:mem:cdm-test-db;DB_CLOSE_DELAY=-1</connectionurl>
<driverclass>org.h2.Driver</driverclass>
<userName>wso2carbon</userName>
<pwd>wso2carbon</pwd>
</DBType>
</DeviceMgtTestDBConfigurations>

@ -0,0 +1,31 @@
<!--
~ Copyright (c) 2014, 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.
-->
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="CDM-core-initializer">
<parameter name="useDefaultListeners" value="false"/>
<test name="DAO Unit Tests" preserve-order="true">
<parameter name="dbType" value="H2"/>
<classes>
<class name="org.wso2.carbon.policy.mgt.core.PolicyDAOTestCase"/>
</classes>
</test>
</suite>

@ -36,8 +36,8 @@
<url>http://wso2.org</url> <url>http://wso2.org</url>
<modules> <modules>
<module>org.wso2.carbon.policy.mgt.core</module>
<module>org.wso2.carbon.policy.mgt.common</module> <module>org.wso2.carbon.policy.mgt.common</module>
<module>org.wso2.carbon.policy.mgt.core</module>
<module>org.wso2.carbon.policy.information.point</module> <module>org.wso2.carbon.policy.information.point</module>
<module>org.wso2.carbon.simple.policy.decision.point</module> <module>org.wso2.carbon.simple.policy.decision.point</module>
<module>org.wso2.carbon.complex.policy.decision.point</module> <module>org.wso2.carbon.complex.policy.decision.point</module>

Loading…
Cancel
Save