mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge pull request #980 from sinthuja/origin-wso2-master
Adding first cut of operation management testcases.
This commit is contained in:
commit
26f72a10c7
@ -21,17 +21,21 @@ import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManager;
|
||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
||||
import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
|
||||
import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
|
||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||
import org.wso2.carbon.device.mgt.core.task.impl.DeviceTaskManagerServiceImpl;
|
||||
|
||||
public class DeviceManagementRepositoryTests{
|
||||
|
||||
private DeviceManagementPluginRepository repository;
|
||||
|
||||
@BeforeClass
|
||||
public void initRepository() {
|
||||
public void init() throws Exception {
|
||||
this.repository = new DeviceManagementPluginRepository();
|
||||
DeviceManagementDataHolder.getInstance().setDeviceTaskManagerService(new DeviceTaskManagerServiceImpl());
|
||||
DeviceManagementDataHolder.getInstance().setTaskService(new TestTaskServiceImpl());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@ -24,6 +24,9 @@ import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubsc
|
||||
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TestDeviceManagementService implements DeviceManagementService {
|
||||
|
||||
private String providerType;
|
||||
@ -33,6 +36,7 @@ public class TestDeviceManagementService implements DeviceManagementService {
|
||||
providerType = deviceType;
|
||||
this.tenantDomain = tenantDomain;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return providerType;
|
||||
@ -40,7 +44,18 @@ public class TestDeviceManagementService implements DeviceManagementService {
|
||||
|
||||
@Override
|
||||
public OperationMonitoringTaskConfig getOperationMonitoringConfig() {
|
||||
return null;
|
||||
OperationMonitoringTaskConfig taskConfig = new OperationMonitoringTaskConfig();
|
||||
taskConfig.setEnabled(true);
|
||||
taskConfig.setFrequency(3000);
|
||||
List<MonitoringOperation> monitoringOperations = new ArrayList<>();
|
||||
for (int i = 0; i < 5; i++) {
|
||||
MonitoringOperation monitoringOperation = new MonitoringOperation();
|
||||
monitoringOperation.setTaskName("OPERATION-" + i);
|
||||
monitoringOperation.setRecurrentTimes(i);
|
||||
monitoringOperations.add(monitoringOperation);
|
||||
}
|
||||
taskConfig.setMonitoringOperation(monitoringOperations);
|
||||
return taskConfig;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -0,0 +1,123 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 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.device.mgt.core;
|
||||
|
||||
import org.wso2.carbon.ntask.common.TaskException;
|
||||
import org.wso2.carbon.ntask.core.TaskInfo;
|
||||
import org.wso2.carbon.ntask.core.TaskManager;
|
||||
import org.wso2.carbon.ntask.core.service.TaskService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class TestTaskServiceImpl implements TaskService {
|
||||
@Override
|
||||
public TaskManager getTaskManager(String s) throws TaskException {
|
||||
return new TaskManager() {
|
||||
@Override
|
||||
public void initStartupTasks() throws TaskException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void scheduleTask(String s) throws TaskException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rescheduleTask(String s) throws TaskException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteTask(String s) throws TaskException {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pauseTask(String s) throws TaskException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resumeTask(String s) throws TaskException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerTask(TaskInfo taskInfo) throws TaskException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaskState getTaskState(String s) throws TaskException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaskInfo getTask(String s) throws TaskException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskInfo> getAllTasks() throws TaskException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTaskScheduled(String s) throws TaskException {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskManager> getAllTenantTaskManagersForType(String s) throws TaskException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerTaskType(String s) throws TaskException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getRegisteredTaskTypes() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serverInitialized() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isServerInit() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaskServiceConfiguration getServerConfiguration() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runAfterRegistrationActions() throws TaskException {
|
||||
|
||||
}
|
||||
}
|
||||
@ -32,6 +32,7 @@ import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.core.TestUtils;
|
||||
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.core.dao.GroupManagementDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory;
|
||||
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
@ -56,10 +57,11 @@ public abstract class BaseDeviceManagementTest {
|
||||
this.initializeCarbonContext();
|
||||
}
|
||||
|
||||
public void initDataSource() throws Exception {
|
||||
protected void initDataSource() throws Exception {
|
||||
this.dataSource = this.getDataSource(this.readDataSourceConfig());
|
||||
DeviceManagementDAOFactory.init(dataSource);
|
||||
GroupManagementDAOFactory.init(dataSource);
|
||||
OperationManagementDAOFactory.init(dataSource);
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
@ -130,15 +132,13 @@ public abstract class BaseDeviceManagementTest {
|
||||
try {
|
||||
conn = getDataSource().getConnection();
|
||||
conn.setAutoCommit(false);
|
||||
|
||||
//TODO:FIX ME
|
||||
// this.cleanupEnrolmentData(conn);
|
||||
// this.cleanApplicationMappingData(conn);
|
||||
// this.cleanApplicationData(conn);
|
||||
// this.cleanupDeviceData(conn);
|
||||
// this.cleanupDeviceTypeData(conn);
|
||||
this.cleanupGroupData(conn);
|
||||
|
||||
String[] cleanupTables = new String[]{"DM_DEVICE_OPERATION_RESPONSE","DM_ENROLMENT_OP_MAPPING", "DM_CONFIG_OPERATION",
|
||||
"DM_POLICY_OPERATION", "DM_COMMAND_OPERATION", "DM_PROFILE_OPERATION", "DM_DEVICE_GROUP_MAP",
|
||||
"DM_GROUP", "DM_ENROLMENT", "DM_DEVICE_APPLICATION_MAPPING",
|
||||
"DM_APPLICATION", "DM_DEVICE", "DM_DEVICE_TYPE"};
|
||||
for (String table : cleanupTables) {
|
||||
this.cleanData(conn, table);
|
||||
}
|
||||
conn.commit();
|
||||
} catch (SQLException e) {
|
||||
try {
|
||||
@ -162,44 +162,13 @@ public abstract class BaseDeviceManagementTest {
|
||||
}
|
||||
}
|
||||
|
||||
private void cleanApplicationMappingData(Connection conn) throws SQLException {
|
||||
try (PreparedStatement stmt = conn.prepareStatement("DELETE FROM DM_DEVICE_APPLICATION_MAPPING")) {
|
||||
private void cleanData(Connection conn, String tableName) throws SQLException {
|
||||
try (PreparedStatement stmt = conn.prepareStatement("DELETE FROM " + tableName)) {
|
||||
stmt.execute();
|
||||
}
|
||||
}
|
||||
|
||||
private void cleanApplicationData(Connection conn) throws SQLException {
|
||||
try (PreparedStatement stmt = conn.prepareStatement("DELETE FROM DM_APPLICATION")) {
|
||||
stmt.execute();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void cleanupEnrolmentData(Connection conn) throws SQLException {
|
||||
try (PreparedStatement stmt = conn.prepareStatement("DELETE FROM DM_ENROLMENT")) {
|
||||
stmt.execute();
|
||||
}
|
||||
}
|
||||
|
||||
private void cleanupDeviceData(Connection conn) throws SQLException {
|
||||
try (PreparedStatement stmt = conn.prepareStatement("DELETE FROM DM_DEVICE")) {
|
||||
stmt.execute();
|
||||
}
|
||||
}
|
||||
|
||||
private void cleanupDeviceTypeData(Connection conn) throws SQLException {
|
||||
try (PreparedStatement stmt = conn.prepareStatement("DELETE FROM DM_DEVICE_TYPE")) {
|
||||
stmt.execute();
|
||||
}
|
||||
}
|
||||
|
||||
private void cleanupGroupData(Connection conn) throws SQLException {
|
||||
try (PreparedStatement stmt = conn.prepareStatement("DELETE FROM DM_GROUP")) {
|
||||
stmt.execute();
|
||||
}
|
||||
}
|
||||
|
||||
public DataSource getDataSource() {
|
||||
protected DataSource getDataSource() {
|
||||
return dataSource;
|
||||
}
|
||||
|
||||
|
||||
@ -16,12 +16,15 @@
|
||||
package org.wso2.carbon.device.mgt.core.common;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
public class TestDataHolder {
|
||||
@ -35,7 +38,6 @@ public class TestDataHolder {
|
||||
public static DeviceType initialTestDeviceType;
|
||||
|
||||
public static Device generateDummyDeviceData(String deviceType) {
|
||||
|
||||
Device device = new Device();
|
||||
EnrolmentInfo enrolmentInfo = new EnrolmentInfo();
|
||||
enrolmentInfo.setDateOfEnrolment(new Date().getTime());
|
||||
@ -50,6 +52,25 @@ public class TestDataHolder {
|
||||
return device;
|
||||
}
|
||||
|
||||
public static List<Device> generateDummyDeviceData(List<DeviceIdentifier> deviceIds) {
|
||||
List<Device> devices = new ArrayList<>();
|
||||
for (DeviceIdentifier deviceId : deviceIds) {
|
||||
Device device = new Device();
|
||||
EnrolmentInfo enrolmentInfo = new EnrolmentInfo();
|
||||
enrolmentInfo.setDateOfEnrolment(new Date().getTime());
|
||||
enrolmentInfo.setDateOfLastUpdate(new Date().getTime());
|
||||
enrolmentInfo.setOwner(OWNER);
|
||||
enrolmentInfo.setOwnership(EnrolmentInfo.OwnerShip.BYOD);
|
||||
enrolmentInfo.setStatus(EnrolmentInfo.Status.CREATED);
|
||||
device.setEnrolmentInfo(enrolmentInfo);
|
||||
device.setDescription("Test Description");
|
||||
device.setDeviceIdentifier(deviceId.getId());
|
||||
device.setType(deviceId.getType());
|
||||
devices.add(device);
|
||||
}
|
||||
return devices;
|
||||
}
|
||||
|
||||
public static DeviceType generateDeviceTypeData(String devTypeName) {
|
||||
DeviceType deviceType = new DeviceType();
|
||||
deviceType.setName(devTypeName);
|
||||
@ -57,11 +78,9 @@ public class TestDataHolder {
|
||||
}
|
||||
|
||||
public static Application generateApplicationDummyData(String appIdentifier) {
|
||||
|
||||
Application application = new Application();
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty("test1", "testVal");
|
||||
|
||||
application.setName("SimpleCalculator");
|
||||
application.setCategory("TestCategory");
|
||||
application.setApplicationIdentifier(appIdentifier);
|
||||
@ -70,7 +89,6 @@ public class TestDataHolder {
|
||||
application.setImageUrl("http://test.org/image/");
|
||||
application.setLocationUrl("http://test.org/location/");
|
||||
application.setAppProperties(properties);
|
||||
|
||||
return application;
|
||||
}
|
||||
|
||||
|
||||
@ -25,6 +25,7 @@ import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.GroupPaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.IllegalTransactionStateException;
|
||||
import org.wso2.carbon.device.mgt.common.TransactionManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||
import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
|
||||
@ -54,20 +55,20 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
GroupManagementDAOFactory.beginTransaction();
|
||||
groupId = groupDAO.addGroup(deviceGroup, TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.commitTransaction();
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
log.debug("Group added to database. ID: " + groupId);
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.rollbackTransaction();
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while adding device type '" + deviceGroup.getName() + "'.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while initiating transaction.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
|
||||
DeviceGroup group = getGroupById(groupId);
|
||||
Assert.assertNotNull(group, "Group is null");
|
||||
log.debug("Group name: " + group.getName());
|
||||
@ -81,19 +82,20 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
request.setGroupName(null);
|
||||
request.setOwner(null);
|
||||
List<DeviceGroup> groups = groupDAO.getGroups(request, TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
Assert.assertNotEquals(groups.size(), 0, "No groups found");
|
||||
Assert.assertNotNull(groups.get(0), "Group is null");
|
||||
log.debug("No of Groups found: " + groups.size());
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while find group by name.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (SQLException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while opening a connection to the data source.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@ -109,18 +111,19 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
}
|
||||
GroupManagementDAOFactory.commitTransaction();
|
||||
List<String> roles = groupDAO.getRoles(groupId, TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
Assert.assertEquals(roles, addedRoles, "Added roles are not equal to returned roles.");
|
||||
log.debug("Group shared with roles.");
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while find group by name.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while opening a connection to the data source.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@ -131,19 +134,20 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
List<String> roles = groupDAO.getRoles(groupId, TestDataHolder.SUPER_TENANT_ID);
|
||||
roles.remove(0);
|
||||
List<DeviceGroup> deviceGroups = groupDAO.getGroups(roles.toArray(new String[roles.size()]), TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
Assert.assertEquals(deviceGroups.size(), 1, "Unexpected number of device groups found with role.");
|
||||
Assert.assertEquals(deviceGroups.get(0).getGroupId(), groupId, "Unexpected groupId found with role.");
|
||||
log.debug("Group found for given roles.");
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while getting groups shared with roles.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (SQLException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while opening a connection to the data source.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@ -157,18 +161,19 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
}
|
||||
GroupManagementDAOFactory.commitTransaction();
|
||||
List<String> roles = groupDAO.getRoles(groupId, TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
Assert.assertNotEquals(roles, rolesToRemove, "Roles not removed.");
|
||||
log.debug("Group unshared with given roles.");
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while find group by name.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while opening a connection to the data source.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@ -181,36 +186,38 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
GroupManagementDAOFactory.beginTransaction();
|
||||
groupDAO.addDevice(deviceGroup.getGroupId(), initialTestDevice.getId(), TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.commitTransaction();
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
log.debug("Device added to group.");
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.rollbackTransaction();
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while adding device '" + initialTestDevice.getName() + "'.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while initiating transaction.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
|
||||
try {
|
||||
GroupManagementDAOFactory.openConnection();
|
||||
List<Device> groupedDevices = groupDAO.getDevices(deviceGroup.getGroupId(), 0, 10, TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
Assert.assertNotEquals(groupedDevices.size(), 0, "No device found");
|
||||
Assert.assertNotNull(groupedDevices.get(0), "Device is null");
|
||||
Assert.assertEquals(groupedDevices.get(0).getId(), initialTestDevice.getId(), "Device ids not matched");
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while retrieving group details.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (SQLException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while opening a connection to the data source.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@ -223,18 +230,19 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
GroupManagementDAOFactory.beginTransaction();
|
||||
groupDAO.removeDevice(deviceGroup.getGroupId(), initialTestDevice.getId(), TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.commitTransaction();
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
log.debug("Device added to group.");
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.rollbackTransaction();
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while adding device '" + initialTestDevice.getDeviceIdentifier() + "'.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while initiating transaction.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@ -250,18 +258,19 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
GroupManagementDAOFactory.beginTransaction();
|
||||
groupDAO.updateGroup(group, groupId, TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.commitTransaction();
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
log.debug("Group updated");
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.rollbackTransaction();
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while updating group details.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while initiating transaction.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
|
||||
group = getGroupById(groupId);
|
||||
@ -278,18 +287,19 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
GroupManagementDAOFactory.beginTransaction();
|
||||
groupDAO.deleteGroup(group.getGroupId(), TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.commitTransaction();
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
log.debug("Group deleted");
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.rollbackTransaction();
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while updating group details.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while initiating transaction.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
group = getGroupById(groupId);
|
||||
Assert.assertNull(group, "Group is not deleted");
|
||||
@ -298,17 +308,19 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
private DeviceGroup getGroupById(int groupId) {
|
||||
try {
|
||||
GroupManagementDAOFactory.openConnection();
|
||||
return groupDAO.getGroup(groupId, TestDataHolder.SUPER_TENANT_ID);
|
||||
DeviceGroup deviceGroup = groupDAO.getGroup(groupId, TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
return deviceGroup;
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while retrieving group details.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (SQLException e) {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
String msg = "Error occurred while opening a connection to the data source.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -0,0 +1,232 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 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.device.mgt.core.operation;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.InvalidDeviceException;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.ActivityStatus;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager;
|
||||
import org.wso2.carbon.device.mgt.core.TestDeviceManagementService;
|
||||
import org.wso2.carbon.device.mgt.core.authorization.DeviceAccessAuthorizationServiceImpl;
|
||||
import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
|
||||
import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
|
||||
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
|
||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementServiceComponent;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.CommandOperation;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.ConfigOperation;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.PolicyOperation;
|
||||
import org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl;
|
||||
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderServiceImpl;
|
||||
import org.wso2.carbon.registry.core.config.RegistryContext;
|
||||
import org.wso2.carbon.registry.core.exceptions.RegistryException;
|
||||
import org.wso2.carbon.registry.core.internal.RegistryDataHolder;
|
||||
import org.wso2.carbon.registry.core.jdbc.realm.InMemoryRealmService;
|
||||
import org.wso2.carbon.registry.core.service.RegistryService;
|
||||
import org.wso2.carbon.user.core.service.RealmService;
|
||||
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
public class OperationManagementTests{
|
||||
private static final Log log = LogFactory.getLog(OperationManagementTests.class);
|
||||
|
||||
private static final String DEVICE_TYPE = "OP_TEST_TYPE";
|
||||
private static final String DEVICE_ID_PREFIX = "OP-TEST-DEVICE-ID-";
|
||||
private static final String COMMAND_OPERATON_CODE = "COMMAND-TEST";
|
||||
private static final String POLICY_OPERATION_CODE = "POLICY-TEST";
|
||||
private static final String CONFIG_OPERATION_CODE = "CONFIG-TEST";
|
||||
private static final String PROFILE_OPERATION_CODE = "PROFILE-TEST";
|
||||
private static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
|
||||
private static final int NO_OF_DEVICES = 5;
|
||||
private static final String ADMIN_USER = "admin";
|
||||
private static final String NON_ADMIN_USER = "test";
|
||||
|
||||
private List<DeviceIdentifier> deviceIds = new ArrayList<>();
|
||||
private OperationManager operationMgtService;
|
||||
|
||||
@BeforeClass
|
||||
public void init() throws Exception {
|
||||
DeviceConfigurationManager.getInstance().initConfig();
|
||||
log.info("Initializing");
|
||||
for (int i = 0; i < NO_OF_DEVICES; i++) {
|
||||
deviceIds.add(new DeviceIdentifier(DEVICE_ID_PREFIX + i, DEVICE_TYPE));
|
||||
}
|
||||
List<Device> devices = TestDataHolder.generateDummyDeviceData(this.deviceIds);
|
||||
DeviceManagementProviderService deviceMgtService = new DeviceManagementProviderServiceImpl();
|
||||
DeviceManagementServiceComponent.notifyStartupListeners();
|
||||
DeviceManagementDataHolder.getInstance().setDeviceManagementProvider(deviceMgtService);
|
||||
DeviceManagementDataHolder.getInstance().setRegistryService(getRegistryService());
|
||||
DeviceManagementDataHolder.getInstance().setDeviceAccessAuthorizationService(new DeviceAccessAuthorizationServiceImpl());
|
||||
DeviceManagementDataHolder.getInstance().setGroupManagementProviderService(new GroupManagementProviderServiceImpl());
|
||||
DeviceManagementDataHolder.getInstance().setDeviceTaskManagerService(null);
|
||||
deviceMgtService.registerDeviceType(new TestDeviceManagementService(DEVICE_TYPE,
|
||||
MultitenantConstants.SUPER_TENANT_DOMAIN_NAME));
|
||||
for (Device device : devices) {
|
||||
deviceMgtService.enrollDevice(device);
|
||||
}
|
||||
List<Device> returnedDevices = deviceMgtService.getAllDevices(DEVICE_TYPE);
|
||||
for (Device device : returnedDevices) {
|
||||
if (!device.getDeviceIdentifier().startsWith(DEVICE_ID_PREFIX)) {
|
||||
throw new Exception("Incorrect device with ID - " + device.getDeviceIdentifier() + " returned!");
|
||||
}
|
||||
}
|
||||
this.operationMgtService = new OperationManagerImpl(DEVICE_TYPE);
|
||||
}
|
||||
|
||||
private RegistryService getRegistryService() throws RegistryException {
|
||||
RealmService realmService = new InMemoryRealmService();
|
||||
RegistryDataHolder.getInstance().setRealmService(realmService);
|
||||
DeviceManagementDataHolder.getInstance().setRealmService(realmService);
|
||||
InputStream is = this.getClass().getClassLoader().getResourceAsStream("carbon-home/repository/conf/registry.xml");
|
||||
RegistryContext context = RegistryContext.getBaseInstance(is, realmService);
|
||||
context.setSetup(true);
|
||||
return context.getEmbeddedRegistryService();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addCommandOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
|
||||
Activity activity = this.operationMgtService.addOperation(getOperation(new CommandOperation(), Operation.Type.COMMAND, COMMAND_OPERATON_CODE),
|
||||
this.deviceIds);
|
||||
validateOperationResponse(activity);
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "addCommandOperation")
|
||||
public void addPolicyOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
|
||||
Activity activity = this.operationMgtService.addOperation(getOperation(new PolicyOperation(), Operation.Type.POLICY, POLICY_OPERATION_CODE),
|
||||
this.deviceIds);
|
||||
validateOperationResponse(activity);
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "addPolicyOperation")
|
||||
public void addConfigOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
|
||||
Activity activity = this.operationMgtService.addOperation(getOperation(new ConfigOperation(), Operation.Type.CONFIG, CONFIG_OPERATION_CODE),
|
||||
this.deviceIds);
|
||||
validateOperationResponse(activity);
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "addConfigOperation")
|
||||
public void addProfileOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
|
||||
Activity activity = this.operationMgtService.addOperation(getOperation(new ProfileOperation(), Operation.Type.PROFILE, PROFILE_OPERATION_CODE),
|
||||
this.deviceIds);
|
||||
validateOperationResponse(activity);
|
||||
}
|
||||
|
||||
private Operation getOperation(Operation operation, Operation.Type type, String code) {
|
||||
String date = new SimpleDateFormat(DATE_FORMAT_NOW).format(new Date());
|
||||
operation.setCreatedTimeStamp(date);
|
||||
operation.setType(type);
|
||||
operation.setCode(code);
|
||||
return operation;
|
||||
}
|
||||
|
||||
private void validateOperationResponse(Activity activity) {
|
||||
Assert.assertEquals(activity.getActivityStatus().size(), NO_OF_DEVICES, "The operation reponse for add operation only have - " +
|
||||
activity.getActivityStatus().size());
|
||||
for (ActivityStatus status : activity.getActivityStatus()) {
|
||||
Assert.assertEquals(status.getStatus(), ActivityStatus.Status.PENDING);
|
||||
}
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "addProfileOperation")
|
||||
public void getOperations() throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
|
||||
for (DeviceIdentifier deviceIdentifier : deviceIds) {
|
||||
List operations = this.operationMgtService.getOperations(deviceIdentifier);
|
||||
Assert.assertEquals(operations.size(), 4, "The operations should be 4, but found only " + operations.size());
|
||||
}
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "getOperations")
|
||||
public void getPendingOperations() throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
|
||||
for (DeviceIdentifier deviceIdentifier : deviceIds) {
|
||||
List operations = this.operationMgtService.getPendingOperations(deviceIdentifier);
|
||||
Assert.assertEquals(operations.size(), 4, "The pending operations should be 4, but found only " + operations.size());
|
||||
}
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "getPendingOperations")
|
||||
public void getPaginatedRequestAsAdmin() throws OperationManagementException {
|
||||
PrivilegedCarbonContext.startTenantFlow();
|
||||
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID, true);
|
||||
PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(ADMIN_USER);
|
||||
PaginationRequest request = new PaginationRequest(1, 2);
|
||||
request.setDeviceType(DEVICE_TYPE);
|
||||
request.setOwner(ADMIN_USER);
|
||||
for (DeviceIdentifier deviceIdentifier : deviceIds) {
|
||||
PaginationResult result = this.operationMgtService.getOperations(deviceIdentifier, request);
|
||||
Assert.assertEquals(result.getRecordsFiltered(), 4);
|
||||
Assert.assertEquals(result.getData().size(), 2);
|
||||
Assert.assertEquals(result.getRecordsTotal(), 4);
|
||||
}
|
||||
PrivilegedCarbonContext.endTenantFlow();
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "getPendingOperations")
|
||||
public void getPaginatedRequestAsNonAdmin() throws OperationManagementException {
|
||||
PrivilegedCarbonContext.startTenantFlow();
|
||||
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID, true);
|
||||
PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(NON_ADMIN_USER);
|
||||
PaginationRequest request = new PaginationRequest(1, 2);
|
||||
request.setDeviceType(DEVICE_TYPE);
|
||||
request.setOwner(ADMIN_USER);
|
||||
for (DeviceIdentifier deviceIdentifier : deviceIds) {
|
||||
try {
|
||||
this.operationMgtService.getOperations(deviceIdentifier, request);
|
||||
} catch (OperationManagementException ex) {
|
||||
if (ex.getMessage() == null){
|
||||
Assert.assertTrue(ex.getMessage().contains("User '" + NON_ADMIN_USER + "' is not authorized"));
|
||||
}
|
||||
}
|
||||
}
|
||||
PrivilegedCarbonContext.endTenantFlow();
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = "getPaginatedRequestAsAdmin")
|
||||
public void updateOperation() throws OperationManagementException {
|
||||
DeviceIdentifier deviceIdentifier = this.deviceIds.get(0);
|
||||
List operations = this.operationMgtService.getPendingOperations(deviceIdentifier);
|
||||
Assert.assertTrue(operations!= null && operations.size()==4);
|
||||
Operation operation = (Operation) operations.get(0);
|
||||
operation.setStatus(Operation.Status.COMPLETED);
|
||||
operation.setOperationResponse("The operation is successfully completed");
|
||||
this.operationMgtService.updateOperation(deviceIdentifier, operation);
|
||||
List pendingOperations = this.operationMgtService.getPendingOperations(deviceIdentifier);
|
||||
Assert.assertEquals(pendingOperations.size(), 3);
|
||||
}
|
||||
}
|
||||
@ -25,7 +25,7 @@ import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.FeatureManager;
|
||||
import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
|
||||
|
||||
public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTest {
|
||||
public class DeviceManagementProviderServiceTest {
|
||||
|
||||
private static final Log log = LogFactory.getLog(DeviceManagementProviderServiceTest.class);
|
||||
private DeviceManagementProviderService providerService;
|
||||
@ -34,9 +34,7 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes
|
||||
|
||||
|
||||
@BeforeClass
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
this.initDataSource();
|
||||
this.providerService = new DeviceManagementProviderServiceImpl();
|
||||
}
|
||||
|
||||
@ -82,8 +80,4 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes
|
||||
}
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public void cleanResources() {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,429 @@
|
||||
CREATE TABLE IF NOT EXISTS REG_CLUSTER_LOCK (
|
||||
REG_LOCK_NAME VARCHAR (20),
|
||||
REG_LOCK_STATUS VARCHAR (20),
|
||||
REG_LOCKED_TIME TIMESTAMP,
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (REG_LOCK_NAME)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_LOG (
|
||||
REG_LOG_ID INTEGER AUTO_INCREMENT,
|
||||
REG_PATH VARCHAR (2000),
|
||||
REG_USER_ID VARCHAR (31) NOT NULL,
|
||||
REG_LOGGED_TIME TIMESTAMP NOT NULL,
|
||||
REG_ACTION INTEGER NOT NULL,
|
||||
REG_ACTION_DATA VARCHAR (500),
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (REG_LOG_ID, REG_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS REG_LOG_IND_BY_REG_LOGTIME ON REG_LOG(REG_LOGGED_TIME, REG_TENANT_ID);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_PATH(
|
||||
REG_PATH_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
REG_PATH_VALUE VARCHAR(2000) NOT NULL,
|
||||
REG_PATH_PARENT_ID INT,
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
CONSTRAINT PK_REG_PATH PRIMARY KEY(REG_PATH_ID, REG_TENANT_ID)
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS REG_PATH_IND_BY_NAME ON REG_PATH(REG_PATH_VALUE, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_PATH_IND_BY_PARENT_ID ON REG_PATH(REG_PATH_PARENT_ID, REG_TENANT_ID);
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_CONTENT (
|
||||
REG_CONTENT_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
REG_CONTENT_DATA LONGBLOB,
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
CONSTRAINT PK_REG_CONTENT PRIMARY KEY(REG_CONTENT_ID, REG_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_CONTENT_HISTORY (
|
||||
REG_CONTENT_ID INTEGER NOT NULL,
|
||||
REG_CONTENT_DATA LONGBLOB,
|
||||
REG_DELETED SMALLINT,
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
CONSTRAINT PK_REG_CONTENT_HISTORY PRIMARY KEY(REG_CONTENT_ID, REG_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_RESOURCE (
|
||||
REG_PATH_ID INTEGER NOT NULL,
|
||||
REG_NAME VARCHAR(256),
|
||||
REG_VERSION INTEGER NOT NULL AUTO_INCREMENT,
|
||||
REG_MEDIA_TYPE VARCHAR(500),
|
||||
REG_CREATOR VARCHAR(31) NOT NULL,
|
||||
REG_CREATED_TIME TIMESTAMP NOT NULL,
|
||||
REG_LAST_UPDATOR VARCHAR(31),
|
||||
REG_LAST_UPDATED_TIME TIMESTAMP NOT NULL,
|
||||
REG_DESCRIPTION VARCHAR(1000),
|
||||
REG_CONTENT_ID INTEGER,
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
REG_UUID VARCHAR(100) NOT NULL,
|
||||
CONSTRAINT PK_REG_RESOURCE PRIMARY KEY(REG_VERSION, REG_TENANT_ID)
|
||||
);
|
||||
|
||||
ALTER TABLE REG_RESOURCE ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||
ALTER TABLE REG_RESOURCE ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_FK_BY_CONTENT_ID FOREIGN KEY (REG_CONTENT_ID, REG_TENANT_ID) REFERENCES REG_CONTENT (REG_CONTENT_ID, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_NAME ON REG_RESOURCE(REG_NAME, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_PATH_ID_NAME ON REG_RESOURCE(REG_PATH_ID, REG_NAME, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_UUID ON REG_RESOURCE(REG_UUID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_TENANT ON REG_RESOURCE(REG_TENANT_ID, REG_UUID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_TYPE ON REG_RESOURCE(REG_TENANT_ID, REG_MEDIA_TYPE);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_RESOURCE_HISTORY (
|
||||
REG_PATH_ID INTEGER NOT NULL,
|
||||
REG_NAME VARCHAR(256),
|
||||
REG_VERSION INTEGER NOT NULL,
|
||||
REG_MEDIA_TYPE VARCHAR(500),
|
||||
REG_CREATOR VARCHAR(31) NOT NULL,
|
||||
REG_CREATED_TIME TIMESTAMP NOT NULL,
|
||||
REG_LAST_UPDATOR VARCHAR(31),
|
||||
REG_LAST_UPDATED_TIME TIMESTAMP NOT NULL,
|
||||
REG_DESCRIPTION VARCHAR(1000),
|
||||
REG_CONTENT_ID INTEGER,
|
||||
REG_DELETED SMALLINT,
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
REG_UUID VARCHAR(100) NOT NULL,
|
||||
CONSTRAINT PK_REG_RESOURCE_HISTORY PRIMARY KEY(REG_VERSION, REG_TENANT_ID)
|
||||
);
|
||||
|
||||
ALTER TABLE REG_RESOURCE_HISTORY ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_HIST_FK_BY_PATHID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||
ALTER TABLE REG_RESOURCE_HISTORY ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_HIST_FK_BY_CONTENT_ID FOREIGN KEY (REG_CONTENT_ID, REG_TENANT_ID) REFERENCES REG_CONTENT_HISTORY (REG_CONTENT_ID, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_HISTORY_IND_BY_NAME ON REG_RESOURCE_HISTORY(REG_NAME, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_HISTORY_IND_BY_PATH_ID_NAME ON REG_RESOURCE(REG_PATH_ID, REG_NAME, REG_TENANT_ID);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_COMMENT (
|
||||
REG_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
REG_COMMENT_TEXT VARCHAR(500) NOT NULL,
|
||||
REG_USER_ID VARCHAR(31) NOT NULL,
|
||||
REG_COMMENTED_TIME TIMESTAMP NOT NULL,
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
CONSTRAINT PK_REG_COMMENT PRIMARY KEY(REG_ID, REG_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_RESOURCE_COMMENT (
|
||||
REG_COMMENT_ID INTEGER NOT NULL,
|
||||
REG_VERSION INTEGER,
|
||||
REG_PATH_ID INTEGER,
|
||||
REG_RESOURCE_NAME VARCHAR(256),
|
||||
REG_TENANT_ID INTEGER DEFAULT 0
|
||||
);
|
||||
|
||||
ALTER TABLE REG_RESOURCE_COMMENT ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_COMMENT_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||
ALTER TABLE REG_RESOURCE_COMMENT ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_COMMENT_FK_BY_COMMENT_ID FOREIGN KEY (REG_COMMENT_ID, REG_TENANT_ID) REFERENCES REG_COMMENT (REG_ID, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_COMMENT_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_RESOURCE_COMMENT(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_COMMENT_IND_BY_VERSION ON REG_RESOURCE_COMMENT(REG_VERSION, REG_TENANT_ID);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_RATING (
|
||||
REG_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
REG_RATING INTEGER NOT NULL,
|
||||
REG_USER_ID VARCHAR(31) NOT NULL,
|
||||
REG_RATED_TIME TIMESTAMP NOT NULL,
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
CONSTRAINT PK_REG_RATING PRIMARY KEY(REG_ID, REG_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_RESOURCE_RATING (
|
||||
REG_RATING_ID INTEGER NOT NULL,
|
||||
REG_VERSION INTEGER,
|
||||
REG_PATH_ID INTEGER,
|
||||
REG_RESOURCE_NAME VARCHAR(256),
|
||||
REG_TENANT_ID INTEGER DEFAULT 0
|
||||
);
|
||||
|
||||
ALTER TABLE REG_RESOURCE_RATING ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_RATING_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||
ALTER TABLE REG_RESOURCE_RATING ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_RATING_FK_BY_RATING_ID FOREIGN KEY (REG_RATING_ID, REG_TENANT_ID) REFERENCES REG_RATING (REG_ID, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_RATING_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_RESOURCE_RATING(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_RATING_IND_BY_VERSION ON REG_RESOURCE_RATING(REG_VERSION, REG_TENANT_ID);
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_TAG (
|
||||
REG_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
REG_TAG_NAME VARCHAR(500) NOT NULL,
|
||||
REG_USER_ID VARCHAR(31) NOT NULL,
|
||||
REG_TAGGED_TIME TIMESTAMP NOT NULL,
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
CONSTRAINT PK_REG_TAG PRIMARY KEY(REG_ID, REG_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_RESOURCE_TAG (
|
||||
REG_TAG_ID INTEGER NOT NULL,
|
||||
REG_VERSION INTEGER,
|
||||
REG_PATH_ID INTEGER,
|
||||
REG_RESOURCE_NAME VARCHAR(256),
|
||||
REG_TENANT_ID INTEGER DEFAULT 0
|
||||
);
|
||||
|
||||
ALTER TABLE REG_RESOURCE_TAG ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_TAG_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||
ALTER TABLE REG_RESOURCE_TAG ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_TAG_FK_BY_TAG_ID FOREIGN KEY (REG_TAG_ID, REG_TENANT_ID) REFERENCES REG_TAG (REG_ID, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_TAG_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_RESOURCE_TAG(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_TAG_IND_BY_VERSION ON REG_RESOURCE_TAG(REG_VERSION, REG_TENANT_ID);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_PROPERTY (
|
||||
REG_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
REG_NAME VARCHAR(100) NOT NULL,
|
||||
REG_VALUE VARCHAR(1000),
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
CONSTRAINT PK_REG_PROPERTY PRIMARY KEY(REG_ID, REG_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_RESOURCE_PROPERTY (
|
||||
REG_PROPERTY_ID INTEGER NOT NULL,
|
||||
REG_VERSION INTEGER,
|
||||
REG_PATH_ID INTEGER,
|
||||
REG_RESOURCE_NAME VARCHAR(256),
|
||||
REG_TENANT_ID INTEGER DEFAULT 0
|
||||
);
|
||||
|
||||
ALTER TABLE REG_RESOURCE_PROPERTY ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_PROPERTY_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||
ALTER TABLE REG_RESOURCE_PROPERTY ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_PROPERTY_FK_BY_TAG_ID FOREIGN KEY (REG_PROPERTY_ID, REG_TENANT_ID) REFERENCES REG_PROPERTY (REG_ID, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_PROPERTY_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_RESOURCE_PROPERTY(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_RESOURCE_PROPERTY_IND_BY_VERSION ON REG_RESOURCE_PROPERTY(REG_VERSION, REG_TENANT_ID);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_ASSOCIATION (
|
||||
REG_ASSOCIATION_ID INTEGER AUTO_INCREMENT,
|
||||
REG_SOURCEPATH VARCHAR (2000) NOT NULL,
|
||||
REG_TARGETPATH VARCHAR (2000) NOT NULL,
|
||||
REG_ASSOCIATION_TYPE VARCHAR (2000) NOT NULL,
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (REG_ASSOCIATION_ID, REG_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS REG_SNAPSHOT (
|
||||
REG_SNAPSHOT_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
REG_PATH_ID INTEGER NOT NULL,
|
||||
REG_RESOURCE_NAME VARCHAR (256),
|
||||
REG_RESOURCE_VIDS LONGBLOB NOT NULL,
|
||||
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||
CONSTRAINT PK_REG_SNAPSHOT PRIMARY KEY(REG_SNAPSHOT_ID, REG_TENANT_ID)
|
||||
);
|
||||
|
||||
ALTER TABLE REG_SNAPSHOT ADD CONSTRAINT IF NOT EXISTS REG_SNAPSHOT_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||
CREATE INDEX IF NOT EXISTS REG_SNAPSHOT_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_SNAPSHOT(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID);
|
||||
|
||||
-- ################################
|
||||
-- USER MANAGER TABLES
|
||||
-- ################################
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_TENANT (
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_DOMAIN_NAME VARCHAR(255) NOT NULL,
|
||||
UM_EMAIL VARCHAR(255),
|
||||
UM_ACTIVE BOOLEAN DEFAULT FALSE,
|
||||
UM_CREATED_DATE TIMESTAMP NOT NULL,
|
||||
UM_USER_CONFIG LONGBLOB NOT NULL,
|
||||
PRIMARY KEY (UM_ID),
|
||||
UNIQUE(UM_DOMAIN_NAME));
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_DOMAIN(
|
||||
UM_DOMAIN_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_DOMAIN_NAME VARCHAR(255),
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (UM_DOMAIN_ID, UM_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS INDEX_UM_TENANT_UM_DOMAIN_NAME ON UM_TENANT (UM_DOMAIN_NAME);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_USER (
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_USER_NAME VARCHAR(255) NOT NULL,
|
||||
UM_USER_PASSWORD VARCHAR(255) NOT NULL,
|
||||
UM_SALT_VALUE VARCHAR(31),
|
||||
UM_REQUIRE_CHANGE BOOLEAN DEFAULT FALSE,
|
||||
UM_CHANGED_TIME TIMESTAMP NOT NULL,
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID),
|
||||
UNIQUE(UM_USER_NAME, UM_TENANT_ID));
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_SYSTEM_USER (
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_USER_NAME VARCHAR(255) NOT NULL,
|
||||
UM_USER_PASSWORD VARCHAR(255) NOT NULL,
|
||||
UM_SALT_VALUE VARCHAR(31),
|
||||
UM_REQUIRE_CHANGE BOOLEAN DEFAULT FALSE,
|
||||
UM_CHANGED_TIME TIMESTAMP NOT NULL,
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID),
|
||||
UNIQUE(UM_USER_NAME, UM_TENANT_ID));
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_USER_ATTRIBUTE (
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_ATTR_NAME VARCHAR(255) NOT NULL,
|
||||
UM_ATTR_VALUE VARCHAR(1024),
|
||||
UM_PROFILE_ID VARCHAR(255),
|
||||
UM_USER_ID INTEGER,
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID),
|
||||
FOREIGN KEY (UM_USER_ID, UM_TENANT_ID) REFERENCES UM_USER(UM_ID, UM_TENANT_ID));
|
||||
|
||||
CREATE INDEX IF NOT EXISTS UM_USER_ID_INDEX ON UM_USER_ATTRIBUTE(UM_USER_ID);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_ROLE (
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_ROLE_NAME VARCHAR(255) NOT NULL,
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
UM_SHARED_ROLE BOOLEAN DEFAULT FALSE,
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID),
|
||||
UNIQUE(UM_ROLE_NAME, UM_TENANT_ID));
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_MODULE(
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_MODULE_NAME VARCHAR(100),
|
||||
UNIQUE(UM_MODULE_NAME),
|
||||
PRIMARY KEY(UM_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_MODULE_ACTIONS(
|
||||
UM_ACTION VARCHAR(255) NOT NULL,
|
||||
UM_MODULE_ID INTEGER NOT NULL,
|
||||
PRIMARY KEY(UM_ACTION, UM_MODULE_ID),
|
||||
FOREIGN KEY (UM_MODULE_ID) REFERENCES UM_MODULE(UM_ID) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_PERMISSION (
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_RESOURCE_ID VARCHAR(255) NOT NULL,
|
||||
UM_ACTION VARCHAR(255) NOT NULL,
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
UM_MODULE_ID INTEGER DEFAULT 0,
|
||||
UNIQUE(UM_RESOURCE_ID,UM_ACTION, UM_TENANT_ID),
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID));
|
||||
|
||||
CREATE INDEX IF NOT EXISTS INDEX_UM_PERMISSION_UM_RESOURCE_ID_UM_ACTION ON UM_PERMISSION (UM_RESOURCE_ID, UM_ACTION, UM_TENANT_ID);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_ROLE_PERMISSION (
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_PERMISSION_ID INTEGER NOT NULL,
|
||||
UM_ROLE_NAME VARCHAR(255) NOT NULL,
|
||||
UM_IS_ALLOWED SMALLINT NOT NULL,
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
UM_DOMAIN_ID INTEGER,
|
||||
FOREIGN KEY (UM_PERMISSION_ID, UM_TENANT_ID) REFERENCES UM_PERMISSION(UM_ID, UM_TENANT_ID) ON DELETE CASCADE,
|
||||
FOREIGN KEY (UM_DOMAIN_ID, UM_TENANT_ID) REFERENCES UM_DOMAIN(UM_DOMAIN_ID, UM_TENANT_ID) ON DELETE CASCADE,
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID));
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_USER_PERMISSION (
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_PERMISSION_ID INTEGER NOT NULL,
|
||||
UM_USER_NAME VARCHAR(255) NOT NULL,
|
||||
UM_IS_ALLOWED SMALLINT NOT NULL,
|
||||
UNIQUE (UM_PERMISSION_ID, UM_USER_NAME, UM_TENANT_ID),
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
FOREIGN KEY (UM_PERMISSION_ID, UM_TENANT_ID) REFERENCES UM_PERMISSION(UM_ID, UM_TENANT_ID) ON DELETE CASCADE,
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID));
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_USER_ROLE (
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_ROLE_ID INTEGER NOT NULL,
|
||||
UM_USER_ID INTEGER NOT NULL,
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
UNIQUE (UM_USER_ID, UM_ROLE_ID, UM_TENANT_ID),
|
||||
FOREIGN KEY (UM_ROLE_ID, UM_TENANT_ID) REFERENCES UM_ROLE(UM_ID, UM_TENANT_ID),
|
||||
FOREIGN KEY (UM_USER_ID, UM_TENANT_ID) REFERENCES UM_USER(UM_ID, UM_TENANT_ID),
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID));
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_SHARED_USER_ROLE(
|
||||
UM_ROLE_ID INTEGER NOT NULL,
|
||||
UM_USER_ID INTEGER NOT NULL,
|
||||
UM_USER_TENANT_ID INTEGER NOT NULL,
|
||||
UM_ROLE_TENANT_ID INTEGER NOT NULL,
|
||||
UNIQUE(UM_USER_ID,UM_ROLE_ID,UM_USER_TENANT_ID, UM_ROLE_TENANT_ID),
|
||||
FOREIGN KEY(UM_ROLE_ID,UM_ROLE_TENANT_ID) REFERENCES UM_ROLE(UM_ID,UM_TENANT_ID) ON DELETE CASCADE ,
|
||||
FOREIGN KEY(UM_USER_ID,UM_USER_TENANT_ID) REFERENCES UM_USER(UM_ID,UM_TENANT_ID) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_ACCOUNT_MAPPING(
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_USER_NAME VARCHAR(255) NOT NULL,
|
||||
UM_TENANT_ID INTEGER NOT NULL,
|
||||
UM_USER_STORE_DOMAIN VARCHAR(100),
|
||||
UM_ACC_LINK_ID INTEGER NOT NULL,
|
||||
UNIQUE(UM_USER_NAME, UM_TENANT_ID, UM_USER_STORE_DOMAIN, UM_ACC_LINK_ID),
|
||||
FOREIGN KEY (UM_TENANT_ID) REFERENCES UM_TENANT(UM_ID) ON DELETE CASCADE,
|
||||
PRIMARY KEY (UM_ID)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_DIALECT(
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_DIALECT_URI VARCHAR(255) NOT NULL,
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
UNIQUE(UM_DIALECT_URI, UM_TENANT_ID),
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_CLAIM(
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_DIALECT_ID INTEGER NOT NULL,
|
||||
UM_CLAIM_URI VARCHAR(255) NOT NULL,
|
||||
UM_DISPLAY_TAG VARCHAR(255),
|
||||
UM_DESCRIPTION VARCHAR(255),
|
||||
UM_MAPPED_ATTRIBUTE_DOMAIN VARCHAR(255),
|
||||
UM_MAPPED_ATTRIBUTE VARCHAR(255),
|
||||
UM_REG_EX VARCHAR(255),
|
||||
UM_SUPPORTED SMALLINT,
|
||||
UM_REQUIRED SMALLINT,
|
||||
UM_DISPLAY_ORDER INTEGER,
|
||||
UM_CHECKED_ATTRIBUTE SMALLINT,
|
||||
UM_READ_ONLY SMALLINT,
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
UNIQUE(UM_DIALECT_ID, UM_CLAIM_URI,UM_MAPPED_ATTRIBUTE_DOMAIN, UM_TENANT_ID),
|
||||
FOREIGN KEY(UM_DIALECT_ID, UM_TENANT_ID) REFERENCES UM_DIALECT(UM_ID, UM_TENANT_ID),
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_PROFILE_CONFIG(
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_DIALECT_ID INTEGER,
|
||||
UM_PROFILE_NAME VARCHAR(255),
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
FOREIGN KEY(UM_DIALECT_ID, UM_TENANT_ID) REFERENCES UM_DIALECT(UM_ID, UM_TENANT_ID),
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_HYBRID_ROLE(
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_ROLE_NAME VARCHAR(255),
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_HYBRID_USER_ROLE(
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_USER_NAME VARCHAR(255),
|
||||
UM_ROLE_ID INTEGER NOT NULL,
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
UM_DOMAIN_ID INTEGER,
|
||||
UNIQUE (UM_USER_NAME, UM_ROLE_ID, UM_TENANT_ID,UM_DOMAIN_ID),
|
||||
FOREIGN KEY (UM_ROLE_ID, UM_TENANT_ID) REFERENCES UM_HYBRID_ROLE(UM_ID, UM_TENANT_ID) ON DELETE CASCADE,
|
||||
FOREIGN KEY (UM_DOMAIN_ID, UM_TENANT_ID) REFERENCES UM_DOMAIN(UM_DOMAIN_ID, UM_TENANT_ID) ON DELETE CASCADE,
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_HYBRID_REMEMBER_ME (
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_USER_NAME VARCHAR(255) NOT NULL,
|
||||
UM_COOKIE_VALUE VARCHAR(1024),
|
||||
UM_CREATED_TIME TIMESTAMP,
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_SYSTEM_ROLE(
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_ROLE_NAME VARCHAR(255),
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS UM_SYSTEM_USER_ROLE(
|
||||
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||
UM_USER_NAME VARCHAR(255),
|
||||
UM_ROLE_ID INTEGER NOT NULL,
|
||||
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||
UNIQUE (UM_USER_NAME, UM_ROLE_ID, UM_TENANT_ID),
|
||||
FOREIGN KEY (UM_ROLE_ID, UM_TENANT_ID) REFERENCES UM_SYSTEM_ROLE(UM_ID, UM_TENANT_ID),
|
||||
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||
);
|
||||
@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
|
||||
<DeviceMgtConfiguration>
|
||||
<ManagementRepository>
|
||||
<DataSourceConfiguration>
|
||||
<JndiLookupDefinition>
|
||||
<Name>jdbc/DM_DS</Name>
|
||||
</JndiLookupDefinition>
|
||||
</DataSourceConfiguration>
|
||||
</ManagementRepository>
|
||||
<PushNotificationConfiguration>
|
||||
<SchedulerBatchSize>1000</SchedulerBatchSize>
|
||||
<SchedulerBatchDelayMills>60000</SchedulerBatchDelayMills>
|
||||
<SchedulerTaskInitialDelay>60000</SchedulerTaskInitialDelay>
|
||||
<SchedulerTaskEnabled>true</SchedulerTaskEnabled>
|
||||
<PushNotificationProviders>
|
||||
<Provider>org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.FCMBasedPushNotificationProvider</Provider>
|
||||
<!--<Provider>org.wso2.carbon.device.mgt.mobile.impl.ios.apns.APNSBasedPushNotificationProvider</Provider>-->
|
||||
<Provider>org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.MQTTBasedPushNotificationProvider</Provider>
|
||||
<Provider>org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.HTTPBasedPushNotificationProvider</Provider>
|
||||
<Provider>org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.XMPPBasedPushNotificationProvider</Provider>
|
||||
</PushNotificationProviders>
|
||||
</PushNotificationConfiguration>
|
||||
<PullNotificationConfiguration>
|
||||
<Enabled>false</Enabled>
|
||||
</PullNotificationConfiguration>
|
||||
<IdentityConfiguration>
|
||||
<ServerUrl>https://localhost:9443</ServerUrl>
|
||||
<AdminUsername>admin</AdminUsername>
|
||||
<AdminPassword>admin</AdminPassword>
|
||||
</IdentityConfiguration>
|
||||
<PolicyConfiguration>
|
||||
<MonitoringClass>org.wso2.carbon.policy.mgt</MonitoringClass>
|
||||
<MonitoringEnable>true</MonitoringEnable>
|
||||
<MonitoringFrequency>60000</MonitoringFrequency>
|
||||
<MaxRetries>5</MaxRetries>
|
||||
<MinRetriesToMarkUnreachable>8</MinRetriesToMarkUnreachable>
|
||||
<MinRetriesToMarkInactive>20</MinRetriesToMarkInactive>
|
||||
<!--Set the policy evaluation point name-->
|
||||
<!--Simple -> Simple policy evaluation point-->
|
||||
<!--Merged -> Merged policy evaluation point -->
|
||||
<PolicyEvaluationPoint>Simple</PolicyEvaluationPoint>
|
||||
</PolicyConfiguration>
|
||||
<!-- Default Page size configuration for paginated DM APIs-->
|
||||
<PaginationConfiguration>
|
||||
<DeviceListPageSize>20</DeviceListPageSize>
|
||||
<GroupListPageSize>20</GroupListPageSize>
|
||||
<NotificationListPageSize>20</NotificationListPageSize>
|
||||
<ActivityListPageSize>20</ActivityListPageSize>
|
||||
<OperationListPageSize>20</OperationListPageSize>
|
||||
<TopicListPageSize>20</TopicListPageSize>
|
||||
</PaginationConfiguration>
|
||||
<!--This specifies whether to enable the DeviceStatus Task in this node. In clustered setup only master node
|
||||
should have to run this task.-->
|
||||
<DeviceStatusTaskConfig>
|
||||
<Enable>true</Enable>
|
||||
</DeviceStatusTaskConfig>
|
||||
<!--This controls the in-memory device cache which is local to this node. Setting it enable will activate the
|
||||
device caching for upto configured expiry-time in seconds. In clustered setup all worker nodes can enable the
|
||||
device-cache to improve performance. -->
|
||||
<DeviceCacheConfiguration>
|
||||
<Enable>true</Enable>
|
||||
<ExpiryTime>600</ExpiryTime>
|
||||
<!--This configuration specifies the number of cache entries in device cache. default capacity is 10000 entries.
|
||||
This can be configured to higher number if cache eviction happens due to large number of devices in the
|
||||
server environment-->
|
||||
<Capacity>10000</Capacity>
|
||||
</DeviceCacheConfiguration>
|
||||
<CertificateCacheConfiguration>
|
||||
<Enable>true</Enable>
|
||||
<ExpiryTime>86400</ExpiryTime>
|
||||
</CertificateCacheConfiguration>
|
||||
<GeoLocationConfiguration>
|
||||
<isEnabled>false</isEnabled>
|
||||
<PublishLocationOperationResponse>false</PublishLocationOperationResponse>
|
||||
</GeoLocationConfiguration>
|
||||
<DefaultGroupsConfiguration>BYOD,COPE</DefaultGroupsConfiguration>
|
||||
</DeviceMgtConfiguration>
|
||||
|
||||
@ -28,7 +28,13 @@
|
||||
<registryRoot>/</registryRoot>
|
||||
|
||||
<dbConfig name="wso2registry">
|
||||
<dataSource>jdbc/WSO2CarbonDB</dataSource>
|
||||
<url>jdbc:h2:./target/databasetest/CARBON_TEST</url>
|
||||
<!--userName>sa</userName>
|
||||
<password>sa</password-->
|
||||
<driverName>org.h2.Driver</driverName>
|
||||
<maxActive>80</maxActive>
|
||||
<maxWait>60000</maxWait>
|
||||
<minIdle>5</minIdle>
|
||||
</dbConfig>
|
||||
|
||||
<!--<handler class="org.wso2.carbon.registry.extensions.handlers.SynapseRepositoryHandler">
|
||||
|
||||
@ -89,7 +89,8 @@
|
||||
<Property name="WriteGroups">true</Property>
|
||||
<Property name="UserNameUniqueAcrossTenants">false</Property>
|
||||
<Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="PasswordJavaRegExViolationErrorMsg">Password length should be between 5 to 30 characters</Property>
|
||||
<Property name="PasswordJavaRegExViolationErrorMsg">Password length should be between 5 to 30 characters
|
||||
</Property>
|
||||
<Property name="PasswordJavaScriptRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="UsernameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
|
||||
<Property name="UsernameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
|
||||
@ -24,15 +24,7 @@ CREATE TABLE IF NOT EXISTS DM_ROLE_GROUP_MAP (
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_DM_ROLE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE (
|
||||
ID INTEGER auto_increment NOT NULL,
|
||||
SERIAL_NUMBER VARCHAR(500) DEFAULT NULL,
|
||||
CERTIFICATE BLOB DEFAULT NULL,
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID)
|
||||
REFERENCES DM_GROUP (ID) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
||||
@ -45,7 +37,17 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
||||
TENANT_ID INTEGER 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
|
||||
REFERENCES DM_DEVICE_TYPE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT uk_DM_DEVICE UNIQUE (NAME, DEVICE_TYPE_ID, DEVICE_IDENTIFICATION, TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_PROPERTIES (
|
||||
DEVICE_TYPE_NAME VARCHAR(300) NOT NULL,
|
||||
DEVICE_IDENTIFICATION VARCHAR(300) NOT NULL,
|
||||
PROPERTY_NAME VARCHAR(100) DEFAULT 0,
|
||||
PROPERTY_VALUE VARCHAR(100) DEFAULT NULL,
|
||||
TENANT_ID VARCHAR(100) DEFAULT NULL,
|
||||
PRIMARY KEY (DEVICE_TYPE_NAME, DEVICE_IDENTIFICATION, PROPERTY_NAME, TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_MAP (
|
||||
@ -55,9 +57,9 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_MAP (
|
||||
TENANT_ID INTEGER DEFAULT 0,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_DEVICE2 FOREIGN KEY (DEVICE_ID)
|
||||
REFERENCES DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
REFERENCES DM_DEVICE (ID) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
REFERENCES DM_GROUP (ID) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_OPERATION (
|
||||
@ -72,6 +74,7 @@ CREATE TABLE IF NOT EXISTS DM_OPERATION (
|
||||
CREATE TABLE IF NOT EXISTS DM_CONFIG_OPERATION (
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
OPERATION_CONFIG BLOB DEFAULT NULL,
|
||||
ENABLED BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
PRIMARY KEY (OPERATION_ID),
|
||||
CONSTRAINT fk_dm_operation_config FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
@ -114,7 +117,8 @@ CREATE TABLE IF NOT EXISTS DM_ENROLMENT (
|
||||
TENANT_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_device_enrolment FOREIGN KEY (DEVICE_ID) REFERENCES
|
||||
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT uk_dm_device_enrolment UNIQUE (DEVICE_ID, OWNER, OWNERSHIP, TENANT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_ENROLMENT_OP_MAPPING (
|
||||
@ -122,6 +126,9 @@ CREATE TABLE IF NOT EXISTS DM_ENROLMENT_OP_MAPPING (
|
||||
ENROLMENT_ID INTEGER NOT NULL,
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
STATUS VARCHAR(50) NULL,
|
||||
PUSH_NOTIFICATION_STATUS VARCHAR(50) NULL,
|
||||
CREATED_TIMESTAMP INT NOT NULL,
|
||||
UPDATED_TIMESTAMP INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_device_operation_mapping_device FOREIGN KEY (ENROLMENT_ID) REFERENCES
|
||||
DM_ENROLMENT (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
@ -133,12 +140,16 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_OPERATION_RESPONSE (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
ENROLMENT_ID INTEGER NOT NULL,
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
EN_OP_MAP_ID INTEGER NOT NULL,
|
||||
OPERATION_RESPONSE LONGBLOB DEFAULT NULL,
|
||||
RECEIVED_TIMESTAMP TIMESTAMP NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_device_operation_response_enrollment FOREIGN KEY (ENROLMENT_ID) REFERENCES
|
||||
DM_ENROLMENT (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_device_operation_response_operation FOREIGN KEY (OPERATION_ID) REFERENCES
|
||||
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT fk_dm_en_op_map_response FOREIGN KEY (EN_OP_MAP_ID) REFERENCES
|
||||
DM_ENROLMENT_OP_MAPPING (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
-- POLICY RELATED TABLES --
|
||||
@ -147,21 +158,12 @@ 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 ,
|
||||
DEVICE_TYPE VARCHAR(300) 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
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
NAME VARCHAR(45) DEFAULT NULL ,
|
||||
@ -181,9 +183,6 @@ CREATE TABLE IF NOT EXISTS DM_POLICY (
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_POLICY (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
DEVICE_ID INT(11) NOT NULL ,
|
||||
@ -203,35 +202,23 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_POLICY (
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE_POLICY (
|
||||
ID INT(11) NOT NULL ,
|
||||
DEVICE_TYPE_ID INT(11) NOT NULL ,
|
||||
DEVICE_TYPE VARCHAR(300) 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
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_PROFILE_FEATURES (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT,
|
||||
PROFILE_ID INT(11) NOT NULL,
|
||||
FEATURE_CODE VARCHAR(100) NOT NULL,
|
||||
DEVICE_TYPE_ID INT NOT NULL,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL,
|
||||
TENANT_ID INT(11) NOT NULL ,
|
||||
CONTENT BLOB NULL DEFAULT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
@ -242,9 +229,6 @@ CREATE TABLE IF NOT EXISTS DM_PROFILE_FEATURES (
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_ROLE_POLICY (
|
||||
ID INT(11) NOT NULL AUTO_INCREMENT ,
|
||||
ROLE_NAME VARCHAR(45) NOT NULL ,
|
||||
@ -257,9 +241,6 @@ CREATE TABLE IF NOT EXISTS DM_ROLE_POLICY (
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_USER_POLICY (
|
||||
ID INT NOT NULL AUTO_INCREMENT ,
|
||||
POLICY_ID INT NOT NULL ,
|
||||
@ -272,7 +253,6 @@ CREATE TABLE IF NOT EXISTS DM_USER_POLICY (
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_POLICY_APPLIED (
|
||||
ID INT NOT NULL AUTO_INCREMENT ,
|
||||
DEVICE_ID INT NOT NULL ,
|
||||
@ -292,8 +272,6 @@ CREATE TABLE IF NOT EXISTS DM_USER_POLICY (
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_CRITERIA (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
TENANT_ID INT NOT NULL,
|
||||
@ -301,8 +279,6 @@ CREATE TABLE IF NOT EXISTS DM_CRITERIA (
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_CRITERIA (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
CRITERIA_ID INT NOT NULL,
|
||||
@ -348,16 +324,14 @@ CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_STATUS (
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_CHANGE_MGT (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
POLICY_ID INT NOT NULL,
|
||||
DEVICE_TYPE_ID INT NOT NULL,
|
||||
DEVICE_TYPE VARCHAR(300) NOT NULL ,
|
||||
TENANT_ID INT(11) NOT NULL,
|
||||
PRIMARY KEY (ID)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_FEATURES (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
COMPLIANCE_STATUS_ID INT NOT NULL,
|
||||
@ -372,20 +346,6 @@ CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_FEATURES (
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_ENROLMENT (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INTEGER NOT NULL,
|
||||
OWNER VARCHAR(50) NOT NULL,
|
||||
OWNERSHIP VARCHAR(45) DEFAULT NULL,
|
||||
STATUS VARCHAR(50) NULL,
|
||||
DATE_OF_ENROLMENT TIMESTAMP DEFAULT NULL,
|
||||
DATE_OF_LAST_UPDATE TIMESTAMP DEFAULT NULL,
|
||||
TENANT_ID INT NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
CONSTRAINT fk_dm_device_enrolment FOREIGN KEY (DEVICE_ID) REFERENCES
|
||||
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_APPLICATION (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
NAME VARCHAR(150) NOT NULL,
|
||||
@ -424,7 +384,7 @@ CREATE TABLE IF NOT EXISTS DM_NOTIFICATION (
|
||||
OPERATION_ID INTEGER NOT NULL,
|
||||
TENANT_ID INTEGER NOT NULL,
|
||||
STATUS VARCHAR(10) NULL,
|
||||
DESCRIPTION VARCHAR(100) NULL,
|
||||
DESCRIPTION VARCHAR(1000) NULL,
|
||||
PRIMARY KEY (NOTIFICATION_ID),
|
||||
CONSTRAINT fk_dm_device_notification FOREIGN KEY (DEVICE_ID) REFERENCES
|
||||
DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
@ -433,8 +393,6 @@ CREATE TABLE IF NOT EXISTS DM_NOTIFICATION (
|
||||
);
|
||||
-- NOTIFICATION TABLE END --
|
||||
|
||||
DROP TABLE IF EXISTS DM_DEVICE_INFO;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_INFO (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INT NULL,
|
||||
@ -448,10 +406,6 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_INFO (
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS DM_DEVICE_LOCATION;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_LOCATION (
|
||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||
DEVICE_ID INT NULL,
|
||||
@ -472,7 +426,6 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_LOCATION (
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_DETAIL (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
DEVICE_ID INT NOT NULL,
|
||||
@ -500,9 +453,7 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_DETAIL (
|
||||
ON UPDATE NO ACTION
|
||||
);
|
||||
|
||||
|
||||
-- POLICY AND DEVICE GROUP MAPPING --
|
||||
|
||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_POLICY (
|
||||
ID INT NOT NULL AUTO_INCREMENT,
|
||||
DEVICE_GROUP_ID INT NOT NULL,
|
||||
@ -512,20 +463,21 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_POLICY (
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_POLICY
|
||||
FOREIGN KEY (DEVICE_GROUP_ID)
|
||||
REFERENCES DM_GROUP (ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION,
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE ,
|
||||
CONSTRAINT FK_DM_DEVICE_GROUP_DM_POLICY
|
||||
FOREIGN KEY (POLICY_ID , DEVICE_GROUP_ID)
|
||||
REFERENCES DM_POLICY (ID , ID)
|
||||
ON DELETE NO ACTION
|
||||
ON UPDATE NO ACTION
|
||||
FOREIGN KEY (POLICY_ID)
|
||||
REFERENCES DM_POLICY (ID)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE
|
||||
);
|
||||
|
||||
-- END OF POLICY AND DEVICE GROUP MAPPING --
|
||||
|
||||
CREATE VIEW DEVICES_VIEW_1 AS
|
||||
-- DASHBOARD RELATED VIEWS --
|
||||
CREATE VIEW POLICY_COMPLIANCE_INFO AS
|
||||
SELECT
|
||||
DEVICE_INFO.DEVICE_ID,
|
||||
DEVICE_INFO.DEVICE_IDENTIFICATION,
|
||||
DEVICE_INFO.PLATFORM,
|
||||
DEVICE_INFO.OWNERSHIP,
|
||||
DEVICE_INFO.CONNECTIVITY_STATUS,
|
||||
@ -535,10 +487,11 @@ DEVICE_INFO.TENANT_ID
|
||||
FROM
|
||||
(SELECT
|
||||
DM_DEVICE.ID AS DEVICE_ID,
|
||||
DM_DEVICE.DEVICE_IDENTIFICATION,
|
||||
DM_DEVICE_TYPE.NAME AS PLATFORM,
|
||||
DM_ENROLMENT.OWNERSHIP AS OWNERSHIP,
|
||||
DM_ENROLMENT.OWNERSHIP,
|
||||
DM_ENROLMENT.STATUS AS CONNECTIVITY_STATUS,
|
||||
DM_DEVICE.TENANT_ID AS TENANT_ID
|
||||
DM_DEVICE.TENANT_ID
|
||||
FROM DM_DEVICE, DM_DEVICE_TYPE, DM_ENROLMENT
|
||||
WHERE DM_DEVICE.DEVICE_TYPE_ID = DM_DEVICE_TYPE.ID AND DM_DEVICE.ID = DM_ENROLMENT.DEVICE_ID) DEVICE_INFO
|
||||
LEFT JOIN
|
||||
@ -546,7 +499,33 @@ LEFT JOIN
|
||||
DEVICE_ID,
|
||||
POLICY_ID,
|
||||
STATUS AS IS_COMPLIANT
|
||||
FROM
|
||||
DM_POLICY_COMPLIANCE_STATUS) DEVICE_WITH_POLICY_INFO
|
||||
FROM DM_POLICY_COMPLIANCE_STATUS) DEVICE_WITH_POLICY_INFO
|
||||
ON DEVICE_INFO.DEVICE_ID = DEVICE_WITH_POLICY_INFO.DEVICE_ID
|
||||
ORDER BY DEVICE_INFO.DEVICE_ID;
|
||||
|
||||
CREATE VIEW FEATURE_NON_COMPLIANCE_INFO AS
|
||||
SELECT
|
||||
DM_DEVICE.ID AS DEVICE_ID,
|
||||
DM_DEVICE.DEVICE_IDENTIFICATION,
|
||||
DM_DEVICE_DETAIL.DEVICE_MODEL,
|
||||
DM_DEVICE_DETAIL.VENDOR,
|
||||
DM_DEVICE_DETAIL.OS_VERSION,
|
||||
DM_ENROLMENT.OWNERSHIP,
|
||||
DM_ENROLMENT.OWNER,
|
||||
DM_ENROLMENT.STATUS AS CONNECTIVITY_STATUS,
|
||||
DM_POLICY_COMPLIANCE_STATUS.POLICY_ID,
|
||||
DM_DEVICE_TYPE.NAME AS PLATFORM,
|
||||
DM_POLICY_COMPLIANCE_FEATURES.FEATURE_CODE,
|
||||
DM_POLICY_COMPLIANCE_FEATURES.STATUS AS IS_COMPLAINT,
|
||||
DM_DEVICE.TENANT_ID
|
||||
FROM
|
||||
DM_POLICY_COMPLIANCE_FEATURES, DM_POLICY_COMPLIANCE_STATUS, DM_ENROLMENT, DM_DEVICE, DM_DEVICE_TYPE, DM_DEVICE_DETAIL
|
||||
WHERE
|
||||
DM_POLICY_COMPLIANCE_FEATURES.COMPLIANCE_STATUS_ID = DM_POLICY_COMPLIANCE_STATUS.ID AND
|
||||
DM_POLICY_COMPLIANCE_STATUS.ENROLMENT_ID = DM_ENROLMENT.ID AND
|
||||
DM_POLICY_COMPLIANCE_STATUS.DEVICE_ID = DM_DEVICE.ID AND
|
||||
DM_DEVICE.DEVICE_TYPE_ID = DM_DEVICE_TYPE.ID AND
|
||||
DM_DEVICE.ID = DM_DEVICE_DETAIL.DEVICE_ID
|
||||
ORDER BY TENANT_ID, DEVICE_ID;
|
||||
|
||||
-- END OF DASHBOARD RELATED VIEWS --
|
||||
|
||||
@ -40,6 +40,7 @@
|
||||
<classes>
|
||||
<class name="org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceTest"/>
|
||||
<class name="org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderServiceTest"/>
|
||||
<class name="org.wso2.carbon.device.mgt.core.operation.OperationManagementTests"/>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
||||
|
||||
@ -0,0 +1,80 @@
|
||||
<!--
|
||||
~ Copyright (c) 2005-2011, 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.
|
||||
-->
|
||||
<UserManager>
|
||||
<Realm>
|
||||
<Configuration>
|
||||
<AddAdmin>true</AddAdmin>
|
||||
<AdminRole>admin</AdminRole>
|
||||
<AdminUser>
|
||||
<UserName>admin</UserName>
|
||||
<Password>admin</Password>
|
||||
</AdminUser>
|
||||
<EveryOneRoleName>everyone</EveryOneRoleName>
|
||||
<ReadOnly>false</ReadOnly>
|
||||
<MaxUserNameListLength>500</MaxUserNameListLength>
|
||||
<Property name="url">jdbc:h2:target/databasetest/CARBON_TEST</Property>
|
||||
<Property name="driverName">org.h2.Driver</Property>
|
||||
<Property name="maxActive">50</Property>
|
||||
<Property name="maxWait">60000</Property>
|
||||
<Property name="minIdle">5</Property>
|
||||
</Configuration>
|
||||
<UserStoreManager class="org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager">
|
||||
<Property name="TenantManager">org.wso2.carbon.user.core.tenant.JDBCTenantManager</Property>
|
||||
<Property name="ReadOnly">false</Property>
|
||||
<Property name="MaxUserNameListLength">100</Property>
|
||||
<Property name="IsEmailUserName">false</Property>
|
||||
<Property name="DomainCalculation">default</Property>
|
||||
<Property name="PasswordDigest">SHA-256</Property>
|
||||
<Property name="StoreSaltedPassword">true</Property>
|
||||
<Property name="ReadGroups">true</Property>
|
||||
<Property name="WriteGroups">true</Property>
|
||||
<Property name="UserNameUniqueAcrossTenants">false</Property>
|
||||
<Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="PasswordJavaRegExViolationErrorMsg">Password length should be between 5 to 30 characters
|
||||
</Property>
|
||||
<Property name="PasswordJavaScriptRegEx">^[\S]{5,30}$</Property>
|
||||
<Property name="UsernameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
|
||||
<Property name="UsernameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
<Property name="RolenameJavaRegEx">^[^~!#$;%^*+={}\\|\\\\<>,\'\"]{3,30}$</Property>
|
||||
<Property name="RolenameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||
<Property name="UserRolesCacheEnabled">true</Property>
|
||||
<Property name="MaxRoleNameListLength">100</Property>
|
||||
<Property name="MaxUserNameListLength">100</Property>
|
||||
<Property name="SharedGroupEnabled">false</Property>
|
||||
<Property name="SCIMEnabled">false</Property>
|
||||
<Property name="CaseSensitiveUsername">true</Property>
|
||||
<Property name="MultiAttributeSeparator">,</Property>
|
||||
<Property name="BulkImportSupported">true</Property>
|
||||
</UserStoreManager>
|
||||
<AuthorizationManager
|
||||
class="org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager">
|
||||
<Property name="AuthorizationCacheEnabled">true</Property>
|
||||
</AuthorizationManager>
|
||||
</Realm>
|
||||
<SystemPermission>
|
||||
<Permission>login</Permission>
|
||||
<Permission>manage-configuration</Permission>
|
||||
<Permission>manage-security</Permission>
|
||||
<Permission>upload-services</Permission>
|
||||
<Permission>manage-services</Permission>
|
||||
<Permission>manage-lc-configuration</Permission>
|
||||
<Permission>manage-mediation</Permission>
|
||||
<Permission>monitor-system</Permission>
|
||||
<Permission>delegate-identity</Permission>
|
||||
</SystemPermission>
|
||||
</UserManager>
|
||||
Loading…
Reference in New Issue
Block a user