mirror of
https://repository.entgra.net/community/device-mgt-plugins.git
synced 2025-09-16 23:42:15 +00:00
Impproving the DAO layer, DeviceManagerService SPIs and implmenting initial bits of plugin management
This commit is contained in:
parent
33812ec50f
commit
19256e2638
@ -22,6 +22,8 @@ public class Device {
|
|||||||
|
|
||||||
private int id;
|
private int id;
|
||||||
|
|
||||||
|
private String type;
|
||||||
|
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
@ -130,4 +132,12 @@ public class Device {
|
|||||||
this.features = features;
|
this.features = features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -80,10 +80,11 @@ public interface DeviceManagerService {
|
|||||||
* Method to set the status indicating whether a particular device registered within CDM is enabled at a given
|
* Method to set the status indicating whether a particular device registered within CDM is enabled at a given
|
||||||
* moment.
|
* moment.
|
||||||
*
|
*
|
||||||
|
* @param deviceId Fully qualified device identifier
|
||||||
* @param status Indicates whether the device is active
|
* @param status Indicates whether the device is active
|
||||||
* @throws DeviceManagementException If some unusual behaviour is observed while enrolling a device
|
* @throws DeviceManagementException If some unusual behaviour is observed while enrolling a device
|
||||||
*/
|
*/
|
||||||
void setActive(boolean status) throws DeviceManagementException;
|
void setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to retrieve metadata of all devices registered within CDM corresponding to a particular device type.
|
* Method to retrieve metadata of all devices registered within CDM corresponding to a particular device type.
|
||||||
|
|||||||
@ -80,10 +80,6 @@
|
|||||||
<groupId>org.eclipse.equinox</groupId>
|
<groupId>org.eclipse.equinox</groupId>
|
||||||
<artifactId>org.eclipse.equinox.common</artifactId>
|
<artifactId>org.eclipse.equinox.common</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.wso2.carbon</groupId>
|
|
||||||
<artifactId>org.wso2.carbon.logging</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.wso2.carbon</groupId>
|
<groupId>org.wso2.carbon</groupId>
|
||||||
<artifactId>org.wso2.carbon.device.mgt.common</artifactId>
|
<artifactId>org.wso2.carbon.device.mgt.common</artifactId>
|
||||||
@ -95,29 +91,26 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.wso2.carbon</groupId>
|
<groupId>org.wso2.carbon</groupId>
|
||||||
<artifactId>org.wso2.carbon.utils</artifactId>
|
<artifactId>org.wso2.carbon.utils</artifactId>
|
||||||
<version>${carbon.platform.version}</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.core</artifactId>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.wso2.carbon</groupId>
|
<groupId>org.wso2.carbon</groupId>
|
||||||
<artifactId>org.wso2.carbon.ndatasource.core</artifactId>
|
<artifactId>org.wso2.carbon.ndatasource.core</artifactId>
|
||||||
<version>${carbon.platform.version}</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.wso2.carbon</groupId>
|
<groupId>org.wso2.carbon</groupId>
|
||||||
<artifactId>org.wso2.carbon.ndatasource.rdbms</artifactId>
|
<artifactId>org.wso2.carbon.ndatasource.rdbms</artifactId>
|
||||||
<version>${carbon.platform.version}</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.wso2.carbon</groupId>
|
<groupId>org.wso2.carbon</groupId>
|
||||||
<artifactId>org.wso2.carbon.transaction.manager</artifactId>
|
<artifactId>org.wso2.carbon.transaction.manager</artifactId>
|
||||||
<version>${carbon.platform.version}</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jboss.spec.javax.transaction</groupId>
|
<groupId>org.jboss.spec.javax.transaction</groupId>
|
||||||
<artifactId>jboss-transaction-api_1.1_spec</artifactId>
|
<artifactId>jboss-transaction-api_1.1_spec</artifactId>
|
||||||
<version>${jboss-transaction-api.version}</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.testng</groupId>
|
<groupId>org.testng</groupId>
|
||||||
|
|||||||
@ -15,8 +15,20 @@
|
|||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.mgt.core;
|
package org.wso2.carbon.device.mgt.core;
|
||||||
|
|
||||||
|
import org.wso2.carbon.device.mgt.common.spi.DeviceManagerService;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class DeviceManagementRepository {
|
public class DeviceManagementRepository {
|
||||||
|
|
||||||
|
private Map<String, DeviceManagerService> providers;
|
||||||
|
|
||||||
|
public void addDeviceManagementProvider(DeviceManagerService provider) {
|
||||||
|
providers.put(provider.getProviderType(), provider);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DeviceManagerService getDeviceManagementProvider(String type) {
|
||||||
|
return providers.get(type);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,14 +15,11 @@
|
|||||||
|
|
||||||
package org.wso2.carbon.device.mgt.core.config;
|
package org.wso2.carbon.device.mgt.core.config;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.exception.DeviceMgtDAOFactory;
|
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
||||||
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
||||||
import org.wso2.carbon.device.mgt.core.util.DeviceMgtDbCreator;
|
|
||||||
import org.wso2.carbon.utils.CarbonUtils;
|
import org.wso2.carbon.utils.CarbonUtils;
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
import javax.xml.bind.JAXBContext;
|
import javax.xml.bind.JAXBContext;
|
||||||
@ -34,16 +31,12 @@ import java.io.File;
|
|||||||
*/
|
*/
|
||||||
public class DeviceConfigurationManager {
|
public class DeviceConfigurationManager {
|
||||||
|
|
||||||
private DeviceMgtConfig currentDeviceConfig;
|
private DeviceManagementConfig currentDeviceConfig;
|
||||||
private static DeviceConfigurationManager deviceConfigManager;
|
private static DeviceConfigurationManager deviceConfigManager;
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(DeviceConfigurationManager.class);
|
|
||||||
private final String deviceMgtConfigXMLPath = CarbonUtils.getCarbonConfigDirPath() + File.separator +
|
private final String deviceMgtConfigXMLPath = CarbonUtils.getCarbonConfigDirPath() + File.separator +
|
||||||
DeviceManagementConstants.DataSourceProperties.DEVICE_CONFIG_XML_NAME;
|
DeviceManagementConstants.DataSourceProperties.DEVICE_CONFIG_XML_NAME;
|
||||||
|
|
||||||
private final String cdmSetupSql = CarbonUtils.getCarbonHome() + File.separator + "repository" + File.separator +
|
|
||||||
"conf" + File.separator + "dbscripts";
|
|
||||||
|
|
||||||
public static DeviceConfigurationManager getInstance() {
|
public static DeviceConfigurationManager getInstance() {
|
||||||
if (deviceConfigManager == null) {
|
if (deviceConfigManager == null) {
|
||||||
synchronized (DeviceConfigurationManager.class) {
|
synchronized (DeviceConfigurationManager.class) {
|
||||||
@ -55,33 +48,26 @@ public class DeviceConfigurationManager {
|
|||||||
return deviceConfigManager;
|
return deviceConfigManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public synchronized void initConfig() throws DeviceManagementException {
|
public synchronized void initConfig() throws DeviceManagementException {
|
||||||
try {
|
try {
|
||||||
File deviceMgtConfig = new File(deviceMgtConfigXMLPath);
|
File deviceMgtConfig = new File(deviceMgtConfigXMLPath);
|
||||||
Document doc = DeviceManagerUtil.convertToDocument(deviceMgtConfig);
|
Document doc = DeviceManagerUtil.convertToDocument(deviceMgtConfig);
|
||||||
/* Document doc = DeviceManagerUtil.convertToDocument(deviceMgtConfig);
|
|
||||||
//rss-config supports secure vault as it needs to be resolve when parsing
|
|
||||||
DeviceManagerUtil.secureResolveDocument(doc);*/
|
|
||||||
/* Un-marshaling RSS configuration */
|
|
||||||
JAXBContext rssContext = JAXBContext.newInstance(DeviceMgtConfig.class);
|
|
||||||
Unmarshaller unmarshaller = rssContext.createUnmarshaller();
|
|
||||||
this.currentDeviceConfig = (DeviceMgtConfig) unmarshaller.unmarshal(doc);
|
|
||||||
//set jndi data source name for future use
|
|
||||||
DeviceManagerUtil.setJndiDataSourceName(currentDeviceConfig.getDeviceMgtRepository().getDataSourceConfig().
|
|
||||||
getJndiLookupDefintion().getJndiName());
|
|
||||||
DataSource dataSource = DeviceMgtDAOFactory.resolveDataSource(this.currentDeviceConfig.getDeviceMgtRepository()
|
|
||||||
.getDataSourceConfig());
|
|
||||||
DeviceManagerUtil.setDataSource(dataSource);
|
|
||||||
|
|
||||||
|
/* Un-marshaling Device Management configuration */
|
||||||
|
JAXBContext rssContext = JAXBContext.newInstance(DeviceManagementConfig.class);
|
||||||
|
Unmarshaller unmarshaller = rssContext.createUnmarshaller();
|
||||||
|
this.currentDeviceConfig = (DeviceManagementConfig) unmarshaller.unmarshal(doc);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new DeviceManagementException("Error occurred while initializing RSS config", e);
|
throw new DeviceManagementException("Error occurred while initializing RSS config", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DeviceManagementConfig getDeviceManagementConfig() {
|
||||||
|
|
||||||
public DeviceMgtConfig getCurrentDeviceConfig() {
|
|
||||||
return currentDeviceConfig;
|
return currentDeviceConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DataSourceConfig getDataSourceConfig() {
|
||||||
|
return currentDeviceConfig.getDeviceMgtRepository().getDataSourceConfig();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||||||
* Represents Device Mgt configuration.
|
* Represents Device Mgt configuration.
|
||||||
*/
|
*/
|
||||||
@XmlRootElement(name = "DeviceMgtConfiguration")
|
@XmlRootElement(name = "DeviceMgtConfiguration")
|
||||||
public final class DeviceMgtConfig {
|
public final class DeviceManagementConfig {
|
||||||
|
|
||||||
private String deviceMgtProvider;
|
private String deviceMgtProvider;
|
||||||
|
|
||||||
@ -37,4 +37,5 @@ public class DeviceManagementRepository {
|
|||||||
public void setDataSourceConfig(DataSourceConfig dataSourceConfig) {
|
public void setDataSourceConfig(DataSourceConfig dataSourceConfig) {
|
||||||
this.dataSourceConfig = dataSourceConfig;
|
this.dataSourceConfig = dataSourceConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,16 +15,21 @@
|
|||||||
|
|
||||||
package org.wso2.carbon.device.mgt.core.dao;
|
package org.wso2.carbon.device.mgt.core.dao;
|
||||||
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.util.DeviceDAOUtil;
|
import org.wso2.carbon.device.mgt.core.dto.Device;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.Status;
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
import java.util.List;
|
||||||
|
|
||||||
public class DeviceDAO {
|
public interface DeviceDAO {
|
||||||
|
|
||||||
private DataSource dataSource;
|
void addDevice(Device device) throws DeviceManagementDAOException;
|
||||||
|
|
||||||
public DeviceDAO(DataSource dataSource) {
|
void updateDevice(Device device) throws DeviceManagementDAOException;
|
||||||
this.dataSource = dataSource;
|
|
||||||
}
|
void updateDeviceStatus(Long deviceId, Status status) throws DeviceManagementDAOException;
|
||||||
|
|
||||||
|
void deleteDevice(Long deviceId) throws DeviceManagementDAOException;
|
||||||
|
|
||||||
|
List<Device> getDeviceByDeviceId(Long deviceId) throws DeviceManagementDAOException;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,12 +16,12 @@
|
|||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.wso2.carbon.device.mgt.core.dao.exception;
|
package org.wso2.carbon.device.mgt.core.dao;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Custom exception class for data access related exceptions
|
* Custom exception class for data access related exceptions
|
||||||
*/
|
*/
|
||||||
public class DeviceDAOException extends Exception {
|
public class DeviceManagementDAOException extends Exception {
|
||||||
|
|
||||||
private String message;
|
private String message;
|
||||||
private static final long serialVersionUID = 2021891706072918864L;
|
private static final long serialVersionUID = 2021891706072918864L;
|
||||||
@ -32,7 +32,7 @@ public class DeviceDAOException extends Exception {
|
|||||||
* @param message error message
|
* @param message error message
|
||||||
* @param nestedException exception
|
* @param nestedException exception
|
||||||
*/
|
*/
|
||||||
public DeviceDAOException(String message, Exception nestedException) {
|
public DeviceManagementDAOException(String message, Exception nestedException) {
|
||||||
super(message, nestedException);
|
super(message, nestedException);
|
||||||
setErrorMessage(message);
|
setErrorMessage(message);
|
||||||
}
|
}
|
||||||
@ -43,7 +43,7 @@ public class DeviceDAOException extends Exception {
|
|||||||
* @param message the detail message.
|
* @param message the detail message.
|
||||||
* @param cause the cause of this exception.
|
* @param cause the cause of this exception.
|
||||||
*/
|
*/
|
||||||
public DeviceDAOException(String message, Throwable cause) {
|
public DeviceManagementDAOException(String message, Throwable cause) {
|
||||||
super(message, cause);
|
super(message, cause);
|
||||||
setErrorMessage(message);
|
setErrorMessage(message);
|
||||||
}
|
}
|
||||||
@ -53,7 +53,7 @@ public class DeviceDAOException extends Exception {
|
|||||||
*
|
*
|
||||||
* @param message the detail message.
|
* @param message the detail message.
|
||||||
*/
|
*/
|
||||||
public DeviceDAOException(String message) {
|
public DeviceManagementDAOException(String message) {
|
||||||
super(message);
|
super(message);
|
||||||
setErrorMessage(message);
|
setErrorMessage(message);
|
||||||
}
|
}
|
||||||
@ -63,7 +63,7 @@ public class DeviceDAOException extends Exception {
|
|||||||
*
|
*
|
||||||
* @param cause the cause of this exception.
|
* @param cause the cause of this exception.
|
||||||
*/
|
*/
|
||||||
public DeviceDAOException(Throwable cause) {
|
public DeviceManagementDAOException(Throwable cause) {
|
||||||
super(cause);
|
super(cause);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -0,0 +1,81 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
package org.wso2.carbon.device.mgt.core.dao;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.impl.DeviceDAOImpl;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.impl.DeviceTypeDAOImpl;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
|
||||||
|
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
import java.util.Hashtable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class DeviceManagementDAOFactory {
|
||||||
|
|
||||||
|
private static DataSource dataSource;
|
||||||
|
private static final Log log = LogFactory.getLog(DeviceManagementDAOFactory.class);
|
||||||
|
|
||||||
|
public static DeviceDAO getDeviceDAO() {
|
||||||
|
return new DeviceDAOImpl(dataSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DeviceTypeDAO getDeviceTypeDAO() {
|
||||||
|
return new DeviceTypeDAOImpl(dataSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void init(DataSourceConfig config) {
|
||||||
|
dataSource = resolveDataSource(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolve data source from the data source definition
|
||||||
|
*
|
||||||
|
* @param config data source configuration
|
||||||
|
* @return data source resolved from the data source definition
|
||||||
|
*/
|
||||||
|
public static DataSource resolveDataSource(DataSourceConfig config) {
|
||||||
|
DataSource dataSource = null;
|
||||||
|
if (config == null) {
|
||||||
|
throw new RuntimeException("Device Management Repository data source configuration " +
|
||||||
|
"is null and thus, is not initialized");
|
||||||
|
}
|
||||||
|
JNDILookupDefinition jndiConfig = config.getJndiLookupDefintion();
|
||||||
|
if (jndiConfig != null) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Initializing Device Management Repository data source using the JNDI " +
|
||||||
|
"Lookup Definition");
|
||||||
|
}
|
||||||
|
List<JNDILookupDefinition.JNDIProperty> jndiPropertyList =
|
||||||
|
jndiConfig.getJndiProperties();
|
||||||
|
if (jndiPropertyList != null) {
|
||||||
|
Hashtable<Object, Object> jndiProperties = new Hashtable<Object, Object>();
|
||||||
|
for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) {
|
||||||
|
jndiProperties.put(prop.getName(), prop.getValue());
|
||||||
|
}
|
||||||
|
dataSource =
|
||||||
|
DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), jndiProperties);
|
||||||
|
} else {
|
||||||
|
dataSource = DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dataSource;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,41 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.device.mgt.core.dao;
|
|
||||||
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.exception.DeviceDAOException;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.exception.DeviceDatabaseConnectionException;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dto.Device;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dto.Status;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface DeviceMgtDAO {
|
|
||||||
|
|
||||||
void addDevice(Device device) throws DeviceDAOException, DeviceManagementException;
|
|
||||||
|
|
||||||
void updateDevice(Device device) throws DeviceDAOException, DeviceManagementException;
|
|
||||||
|
|
||||||
void updateDeviceStatus(Long deviceId, Status status) throws DeviceDAOException, DeviceManagementException;
|
|
||||||
|
|
||||||
void deleteDevice(Long deviceId) throws DeviceDAOException, DeviceManagementException;
|
|
||||||
|
|
||||||
List<Device> getDeviceByDeviceId(Long deviceId) throws DeviceDAOException, DeviceManagementException;
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -18,17 +18,16 @@
|
|||||||
|
|
||||||
package org.wso2.carbon.device.mgt.core.dao;
|
package org.wso2.carbon.device.mgt.core.dao;
|
||||||
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.exception.DeviceDAOException;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.exception.DeviceDatabaseConnectionException;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface DeviceTypeMgtDAO {
|
public interface DeviceTypeDAO {
|
||||||
|
|
||||||
void addDeviceType(DeviceType deviceType) throws DeviceDAOException, DeviceDatabaseConnectionException;
|
void addDeviceType(DeviceType deviceType) throws DeviceManagementDAOException;
|
||||||
|
|
||||||
void updateDeviceType(DeviceType deviceType) throws DeviceDAOException, DeviceDatabaseConnectionException;
|
void updateDeviceType(DeviceType deviceType) throws DeviceManagementDAOException;
|
||||||
|
|
||||||
|
List<DeviceType> getDeviceTypes() throws DeviceManagementDAOException;
|
||||||
|
|
||||||
List<DeviceType> getDeviceTypes() throws DeviceDAOException, DeviceDatabaseConnectionException;
|
|
||||||
}
|
}
|
||||||
@ -1,72 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.device.mgt.core.dao.exception;
|
|
||||||
|
|
||||||
public class DeviceDatabaseConnectionException extends Exception {
|
|
||||||
|
|
||||||
private String message;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new exception with the specified detail message and nested exception.
|
|
||||||
*
|
|
||||||
* @param message error message
|
|
||||||
* @param nestedException exception
|
|
||||||
*/
|
|
||||||
public DeviceDatabaseConnectionException(String message, Exception nestedException) {
|
|
||||||
super(message, nestedException);
|
|
||||||
setErrorMessage(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new exception with the specified detail message and cause.
|
|
||||||
*
|
|
||||||
* @param message the detail message.
|
|
||||||
* @param cause the cause of this exception.
|
|
||||||
*/
|
|
||||||
public DeviceDatabaseConnectionException(String message, Throwable cause) {
|
|
||||||
super(message, cause);
|
|
||||||
setErrorMessage(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new exception with the specified detail message
|
|
||||||
*
|
|
||||||
* @param message the detail message.
|
|
||||||
*/
|
|
||||||
public DeviceDatabaseConnectionException(String message) {
|
|
||||||
super(message);
|
|
||||||
setErrorMessage(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a new exception with the specified and cause.
|
|
||||||
*
|
|
||||||
* @param cause the cause of this exception.
|
|
||||||
*/
|
|
||||||
public DeviceDatabaseConnectionException(Throwable cause) {
|
|
||||||
super(cause);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMessage() {
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setErrorMessage(String errorMessage) {
|
|
||||||
this.message = errorMessage;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,85 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.
|
|
||||||
* 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.dao.exception;
|
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
|
||||||
import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition;
|
|
||||||
import org.wso2.carbon.device.mgt.core.config.datasource.RDBMSConfig;
|
|
||||||
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
|
||||||
import java.util.Hashtable;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DAO factory class for creating RSS DAO objects.
|
|
||||||
*/
|
|
||||||
public class DeviceMgtDAOFactory {
|
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(DeviceMgtDAOFactory.class);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolve data source from the data source definition
|
|
||||||
*
|
|
||||||
* @param dataSourceDef data source configuration
|
|
||||||
* @return data source resolved from the data source definition
|
|
||||||
*/
|
|
||||||
public static DataSource resolveDataSource(DataSourceConfig dataSourceDef) {
|
|
||||||
DataSource dataSource;
|
|
||||||
if (dataSourceDef == null) {
|
|
||||||
throw new RuntimeException("RSS Management Repository data source configuration " +
|
|
||||||
"is null and thus, is not initialized");
|
|
||||||
}
|
|
||||||
JNDILookupDefinition jndiConfig = dataSourceDef.getJndiLookupDefintion();
|
|
||||||
if (jndiConfig != null) {
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("Initializing RSS Management Repository data source using the JNDI " +
|
|
||||||
"Lookup Definition");
|
|
||||||
}
|
|
||||||
List<JNDILookupDefinition.JNDIProperty> jndiPropertyList =
|
|
||||||
jndiConfig.getJndiProperties();
|
|
||||||
if (jndiPropertyList != null) {
|
|
||||||
Hashtable<Object, Object> jndiProperties = new Hashtable<Object, Object>();
|
|
||||||
for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) {
|
|
||||||
jndiProperties.put(prop.getName(), prop.getValue());
|
|
||||||
}
|
|
||||||
dataSource =
|
|
||||||
DeviceManagerUtil.lookupDataSource(jndiConfig.getJndiName(), jndiProperties);
|
|
||||||
} else {
|
|
||||||
dataSource = DeviceManagerUtil.lookupDataSource(jndiConfig.getJndiName(), null);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("No JNDI Lookup Definition found in the RSS Management Repository " +
|
|
||||||
"data source configuration. Thus, continuing with in-line data source " +
|
|
||||||
"configuration processing.");
|
|
||||||
}
|
|
||||||
RDBMSConfig rdbmsConfig = dataSourceDef.getRdbmsConfiguration();
|
|
||||||
if (rdbmsConfig == null) {
|
|
||||||
throw new RuntimeException(
|
|
||||||
"No JNDI/In-line data source configuration found. " +
|
|
||||||
"Thus, RSS Management Repository DAO is not initialized"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
dataSource =
|
|
||||||
DeviceManagerUtil.createDataSource(DeviceManagerUtil.loadDataSourceProperties(
|
|
||||||
rdbmsConfig), rdbmsConfig.getDataSourceClassName());
|
|
||||||
}
|
|
||||||
return dataSource;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -0,0 +1,108 @@
|
|||||||
|
/*
|
||||||
|
* 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.device.mgt.core.dao.impl;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.DeviceDAO;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.Device;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.Status;
|
||||||
|
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class DeviceDAOImpl implements DeviceDAO {
|
||||||
|
|
||||||
|
private DataSource dataSource;
|
||||||
|
private static final Log log = LogFactory.getLog(DeviceDAOImpl.class);
|
||||||
|
|
||||||
|
|
||||||
|
public DeviceDAOImpl(DataSource dataSource) {
|
||||||
|
this.dataSource = dataSource;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addDevice(Device device) throws DeviceManagementDAOException {
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String createDBQuery =
|
||||||
|
"INSERT INTO DM_DEVICE(DESCRIPTION, NAME, DATE_OF_ENROLLMENT, DATE_OF_LAST_UPDATE, OWNERSHIP," +
|
||||||
|
"STATUS, DEVICE_TYPE_ID, DEVICE_IDENTIFICATION, OWNER, TENANT_ID) VALUES " +
|
||||||
|
"(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||||
|
|
||||||
|
stmt = conn.prepareStatement(createDBQuery);
|
||||||
|
stmt.setString(1, device.getDescription());
|
||||||
|
stmt.setString(2, device.getName());
|
||||||
|
stmt.setLong(3, new Date().getTime());
|
||||||
|
stmt.setLong(4, new Date().getTime());
|
||||||
|
stmt.setString(5, device.getOwnerShip());
|
||||||
|
stmt.setString(6, device.getStatus().toString());
|
||||||
|
stmt.setLong(7, device.getDeviceType().getId());
|
||||||
|
stmt.setLong(8, device.getDeviceIdentificationId());
|
||||||
|
stmt.setString(9, device.getOwnerId());
|
||||||
|
stmt.setInt(10, DeviceManagementDAOUtil.getTenantId());
|
||||||
|
stmt.executeUpdate();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Failed to enroll device '" + device.getName() + "'";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementDAOException(msg, e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateDevice(Device device) throws DeviceManagementDAOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateDeviceStatus(Long deviceId, Status status) throws DeviceManagementDAOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteDevice(Long deviceId) throws DeviceManagementDAOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Device> getDeviceByDeviceId(Long deviceId)
|
||||||
|
throws DeviceManagementDAOException {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Connection getConnection() throws DeviceManagementDAOException {
|
||||||
|
try {
|
||||||
|
return dataSource.getConnection();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new DeviceManagementDAOException("Error occurred while obtaining a connection from the device " +
|
||||||
|
"management metadata repository datasource", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,116 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.device.mgt.core.dao.impl;
|
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceDAO;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceMgtDAO;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.exception.DeviceDAOException;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.exception.DeviceDatabaseConnectionException;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.util.DeviceDAOUtil;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.util.ErrorHandler;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dto.Device;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dto.Status;
|
|
||||||
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class DeviceMgtDAOImpl implements DeviceMgtDAO {
|
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(DeviceMgtDAOImpl.class);
|
|
||||||
private DataSource dataSource;
|
|
||||||
|
|
||||||
public DeviceMgtDAOImpl() {
|
|
||||||
this.dataSource = DeviceManagerUtil.getDataSource();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addDevice(Device device) throws DeviceDAOException, DeviceManagementException {
|
|
||||||
|
|
||||||
Connection conn = null;
|
|
||||||
PreparedStatement addDeviceDBStatement = null;
|
|
||||||
try {
|
|
||||||
conn = getDataSourceConnection();
|
|
||||||
conn.setAutoCommit(false);
|
|
||||||
String createDBQuery =
|
|
||||||
"INSERT INTO DM_DEVICE(DESCRIPTION,NAME,DATE_OF_ENROLLMENT,DATE_OF_LAST_UPDATE,OWNERSHIP," +
|
|
||||||
"STATUS,DEVICE_TYPE_ID,DEVICE_IDENTIFICATION,OWNER) VALUES (?,?,?,?,?,?,?,?,?)";
|
|
||||||
|
|
||||||
addDeviceDBStatement = conn.prepareStatement(createDBQuery);
|
|
||||||
addDeviceDBStatement.setString(1, device.getDescription());
|
|
||||||
addDeviceDBStatement.setString(2, device.getName());
|
|
||||||
addDeviceDBStatement.setLong(3, new Date().getTime());
|
|
||||||
addDeviceDBStatement.setLong(4, new Date().getTime());
|
|
||||||
addDeviceDBStatement.setString(5, device.getOwnerShip());
|
|
||||||
addDeviceDBStatement.setString(6, device.getStatus().toString());
|
|
||||||
addDeviceDBStatement.setLong(7, device.getDeviceType().getId());
|
|
||||||
addDeviceDBStatement.setLong(8, device.getDeviceIdentificationId());
|
|
||||||
addDeviceDBStatement.setString(9, device.getOwnerId());
|
|
||||||
addDeviceDBStatement.executeUpdate();
|
|
||||||
conn.commit();
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
DeviceDAOUtil.rollback(conn, DeviceManagementConstants.ADD_DEVICE_ENTRY);
|
|
||||||
String msg = "Failed to enroll device " + device.getName() + " to CDM";
|
|
||||||
ErrorHandler errorHandler = new ErrorHandler(msg, log);
|
|
||||||
errorHandler.handleDAOException(msg, e);
|
|
||||||
} finally {
|
|
||||||
DeviceDAOUtil.cleanupResources(null, addDeviceDBStatement, conn, DeviceManagementConstants.ADD_DEVICE_ENTRY);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateDevice(Device device) throws DeviceDAOException, DeviceManagementException {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateDeviceStatus(Long deviceId, Status status)
|
|
||||||
throws DeviceDAOException, DeviceManagementException {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteDevice(Long deviceId) throws DeviceDAOException, DeviceManagementException {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Device> getDeviceByDeviceId(Long deviceId)
|
|
||||||
throws DeviceDAOException, DeviceManagementException {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Connection getDataSourceConnection() throws DeviceManagementException {
|
|
||||||
try {
|
|
||||||
return dataSource.getConnection();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
String msg = "Error while acquiring the database connection";
|
|
||||||
throw new DeviceManagementException(msg, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,72 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
package org.wso2.carbon.device.mgt.core.dao.impl;
|
||||||
|
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.DeviceTypeDAO;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
|
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class DeviceTypeDAOImpl implements DeviceTypeDAO {
|
||||||
|
|
||||||
|
private DataSource dataSource;
|
||||||
|
|
||||||
|
public DeviceTypeDAOImpl(DataSource dataSource) {
|
||||||
|
this.dataSource = dataSource;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addDeviceType(DeviceType deviceType) throws DeviceManagementDAOException {
|
||||||
|
Connection conn = this.getConnection();
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
try {
|
||||||
|
stmt = conn.prepareStatement("INSERT INTO DM_DEVICE_TYPE (NAME) VALUES (?)");
|
||||||
|
stmt.setString(1, deviceType.getName());
|
||||||
|
stmt.execute();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new DeviceManagementDAOException("Error occurred while registering the device type '" +
|
||||||
|
deviceType.getName() + "'", e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateDeviceType(DeviceType deviceType) throws DeviceManagementDAOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DeviceType> getDeviceTypes() throws DeviceManagementDAOException {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Connection getConnection() throws DeviceManagementDAOException {
|
||||||
|
try {
|
||||||
|
return dataSource.getConnection();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new DeviceManagementDAOException("Error occurred while obtaining a connection from the device " +
|
||||||
|
"management metadata repository datasource", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,121 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2013, 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.dao.util;
|
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.wso2.carbon.base.MultitenantConstants;
|
|
||||||
import org.wso2.carbon.context.CarbonContext;
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
|
||||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagerDataHolder;
|
|
||||||
import org.wso2.carbon.user.api.TenantManager;
|
|
||||||
import org.wso2.carbon.user.api.UserStoreException;
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Util class for RSS DAO operations
|
|
||||||
*/
|
|
||||||
public class DeviceDAOUtil {
|
|
||||||
private static final Log log = LogFactory.getLog(DeviceDAOUtil.class);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clean up database resources
|
|
||||||
* @param resultSet result set to be closed
|
|
||||||
* @param statement prepared statement to be closed
|
|
||||||
* @param conn connection to be closed
|
|
||||||
* @param task occurred when clean up the resources
|
|
||||||
*/
|
|
||||||
public static synchronized void cleanupResources(ResultSet resultSet, PreparedStatement statement,
|
|
||||||
Connection conn, String task) {
|
|
||||||
if (resultSet != null) {
|
|
||||||
try {
|
|
||||||
resultSet.close();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
log.error("Error occurred while closing the result set " + task, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (statement != null) {
|
|
||||||
try {
|
|
||||||
statement.close();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
log.error("Error occurred while closing the statement " + task, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (conn != null) {
|
|
||||||
try {
|
|
||||||
conn.close();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
log.error("Error occurred while closing the connection "+ task, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Roll back database updates on error
|
|
||||||
*
|
|
||||||
* @param connection database connection
|
|
||||||
* @param task task which was executing at the error.
|
|
||||||
*/
|
|
||||||
public static synchronized void rollback(Connection connection, String task) {
|
|
||||||
if (connection != null) {
|
|
||||||
try {
|
|
||||||
connection.rollback();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
log.error("Rollback failed on " + task, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized static int getTenantId() throws DeviceManagementException {
|
|
||||||
CarbonContext ctx = CarbonContext.getThreadLocalCarbonContext();
|
|
||||||
int tenantId = ctx.getTenantId();
|
|
||||||
if (tenantId != MultitenantConstants.INVALID_TENANT_ID) {
|
|
||||||
return tenantId;
|
|
||||||
}
|
|
||||||
String tenantDomain = ctx.getTenantDomain();
|
|
||||||
if (null != tenantDomain) {
|
|
||||||
try {
|
|
||||||
TenantManager tenantManager = DeviceManagerDataHolder.getInstance().getTenantManager();
|
|
||||||
tenantId = tenantManager.getTenantId(tenantDomain);
|
|
||||||
} catch (UserStoreException e) {
|
|
||||||
throw new DeviceManagementException("Error while retrieving the tenant Id for " +
|
|
||||||
"tenant domain : " + tenantDomain, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return tenantId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static synchronized int getTenantId(String tenantDomain) throws DeviceManagementException {
|
|
||||||
int tenantId = MultitenantConstants.INVALID_TENANT_ID;
|
|
||||||
if (null != tenantDomain) {
|
|
||||||
try {
|
|
||||||
TenantManager tenantManager = DeviceManagerDataHolder.getInstance().getTenantManager();
|
|
||||||
tenantId = tenantManager.getTenantId(tenantDomain);
|
|
||||||
} catch (UserStoreException e) {
|
|
||||||
throw new DeviceManagementException("Error while retrieving the tenant Id for " +
|
|
||||||
"tenant domain : " + tenantDomain, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return tenantId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,102 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2012, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
package org.wso2.carbon.device.mgt.core.dao.util;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.wso2.carbon.context.CarbonContext;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
||||||
|
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||||
|
import org.wso2.carbon.user.api.UserStoreException;
|
||||||
|
import org.wso2.carbon.user.core.tenant.TenantManager;
|
||||||
|
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
|
||||||
|
|
||||||
|
import javax.naming.InitialContext;
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Hashtable;
|
||||||
|
|
||||||
|
public final class DeviceManagementDAOUtil {
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(DeviceManagementDAOUtil.class);
|
||||||
|
|
||||||
|
public static void cleanupResources(Connection conn, PreparedStatement 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get id of the current tenant
|
||||||
|
* @return tenant id
|
||||||
|
* @throws DeviceManagementDAOException if an error is observed when getting tenant id
|
||||||
|
*/
|
||||||
|
public static int getTenantId() throws DeviceManagementDAOException {
|
||||||
|
CarbonContext context = CarbonContext.getThreadLocalCarbonContext();
|
||||||
|
int tenantId = context.getTenantId();
|
||||||
|
if (tenantId != MultitenantConstants.INVALID_TENANT_ID) {
|
||||||
|
return tenantId;
|
||||||
|
}
|
||||||
|
String tenantDomain = context.getTenantDomain();
|
||||||
|
if (tenantDomain == null) {
|
||||||
|
String msg = "Tenant domain is not properly set and thus, is null";
|
||||||
|
throw new DeviceManagementDAOException(msg);
|
||||||
|
}
|
||||||
|
TenantManager tenantManager = DeviceManagementDataHolder.getInstance().getTenantManager();
|
||||||
|
try {
|
||||||
|
tenantId = tenantManager.getTenantId(tenantDomain);
|
||||||
|
} catch (UserStoreException e) {
|
||||||
|
String msg = "Error occurred while retrieving id from the domain of tenant " +
|
||||||
|
tenantDomain;
|
||||||
|
throw new DeviceManagementDAOException(msg);
|
||||||
|
}
|
||||||
|
return tenantId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DataSource lookupDataSource(String dataSourceName, final Hashtable<Object, Object> jndiProperties) {
|
||||||
|
try {
|
||||||
|
if (jndiProperties == null || jndiProperties.isEmpty()) {
|
||||||
|
return (DataSource) InitialContext.doLookup(dataSourceName);
|
||||||
|
}
|
||||||
|
final InitialContext context = new InitialContext(jndiProperties);
|
||||||
|
return (DataSource) context.doLookup(dataSourceName);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException("Error in looking up data source: " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,38 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.
|
|
||||||
* 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.dao.util;
|
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.exception.DeviceDAOException;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
public class ErrorHandler {
|
|
||||||
|
|
||||||
private String errorMsg = "";
|
|
||||||
private Log log;
|
|
||||||
|
|
||||||
public ErrorHandler(String msg, Log log) {
|
|
||||||
errorMsg = msg;
|
|
||||||
this.log = log;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void handleDAOException(String msg, SQLException e) throws DeviceDAOException {
|
|
||||||
|
|
||||||
log.error(msg, e);
|
|
||||||
throw new DeviceDAOException(msg, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,67 @@
|
|||||||
|
/*
|
||||||
|
* 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.device.mgt.core.internal;
|
||||||
|
|
||||||
|
import org.wso2.carbon.device.mgt.core.DeviceManagementRepository;
|
||||||
|
import org.wso2.carbon.user.core.service.RealmService;
|
||||||
|
import org.wso2.carbon.user.core.tenant.TenantManager;
|
||||||
|
|
||||||
|
public class DeviceManagementDataHolder {
|
||||||
|
|
||||||
|
private RealmService realmService;
|
||||||
|
private TenantManager tenantManager;
|
||||||
|
private DeviceManagementRepository repository;
|
||||||
|
private static DeviceManagementDataHolder thisInstance = new DeviceManagementDataHolder();
|
||||||
|
|
||||||
|
private DeviceManagementDataHolder() {}
|
||||||
|
|
||||||
|
public static DeviceManagementDataHolder getInstance() {
|
||||||
|
return thisInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RealmService getRealmService() {
|
||||||
|
return realmService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRealmService(RealmService realmService) {
|
||||||
|
this.realmService = realmService;
|
||||||
|
this.setTenantManager(realmService);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setTenantManager(RealmService realmService) {
|
||||||
|
if (realmService == null) {
|
||||||
|
throw new IllegalStateException("Realm service is not initialized properly");
|
||||||
|
}
|
||||||
|
this.tenantManager = realmService.getTenantManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TenantManager getTenantManager() {
|
||||||
|
return tenantManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DeviceManagementRepository getDeviceManagementRepository() {
|
||||||
|
return repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceManagementRepository(DeviceManagementRepository repository) {
|
||||||
|
this.repository = repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,133 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
package org.wso2.carbon.device.mgt.core.internal;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.osgi.framework.BundleContext;
|
||||||
|
import org.osgi.service.component.ComponentContext;
|
||||||
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.spi.DeviceManagerService;
|
||||||
|
import org.wso2.carbon.device.mgt.core.DeviceManagementRepository;
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
|
||||||
|
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
|
||||||
|
import org.wso2.carbon.device.mgt.core.service.DeviceManagementService;
|
||||||
|
import org.wso2.carbon.device.mgt.core.util.DeviceManagementSchemaInitializer;
|
||||||
|
import org.wso2.carbon.user.core.service.RealmService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @scr.component name="org.wso2.carbon.device.manager" immediate="true"
|
||||||
|
* @scr.reference name="user.realmservice.default"
|
||||||
|
* interface="org.wso2.carbon.user.core.service.RealmService"
|
||||||
|
* cardinality="1..1"
|
||||||
|
* policy="dynamic"
|
||||||
|
* bind="setRealmService"
|
||||||
|
* unbind="unsetRealmService"
|
||||||
|
* @scr.reference name="device.manager.service"
|
||||||
|
* interface="org.wso2.carbon.device.mgt.common.spi.DeviceManagerService"
|
||||||
|
* cardinality="1..n"
|
||||||
|
* policy="dynamic"
|
||||||
|
* bind="setDeviceManagerService"
|
||||||
|
* unbind="unsetDeviceManagerService"
|
||||||
|
*/
|
||||||
|
public class DeviceManagementServiceComponent {
|
||||||
|
|
||||||
|
private static Log log = LogFactory.getLog(DeviceManagementServiceComponent.class);
|
||||||
|
|
||||||
|
protected void activate(ComponentContext componentContext) {
|
||||||
|
try {
|
||||||
|
/* Initializing Device Management Configuration */
|
||||||
|
DeviceConfigurationManager.getInstance().initConfig();
|
||||||
|
|
||||||
|
DataSourceConfig config = DeviceConfigurationManager.getInstance().getDataSourceConfig();
|
||||||
|
DeviceManagementDAOFactory.init(config);
|
||||||
|
|
||||||
|
DeviceManagementDataHolder.getInstance().setDeviceManagementRepository(new DeviceManagementRepository());
|
||||||
|
|
||||||
|
String setupOption = System.getProperty("setup");
|
||||||
|
/* If -Dsetup option specified then create device management database schema */
|
||||||
|
if (setupOption != null) {
|
||||||
|
setupDeviceManagementSchema(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
BundleContext bundleContext = componentContext.getBundleContext();
|
||||||
|
bundleContext.registerService(DeviceManagementService.class.getName(),
|
||||||
|
new DeviceManagementService(), null);
|
||||||
|
|
||||||
|
} catch (Throwable e) {
|
||||||
|
String msg = "Error occurred while initializing device management core bundle";
|
||||||
|
log.error(msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setupDeviceManagementSchema(DataSourceConfig config) throws DeviceManagementException {
|
||||||
|
log.info("Setup option specified");
|
||||||
|
DeviceManagementSchemaInitializer initializer = new DeviceManagementSchemaInitializer(config);
|
||||||
|
log.info("Creating Meta Data tables");
|
||||||
|
try {
|
||||||
|
initializer.createRegistryDatabase();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new DeviceManagementException("Error occurred while initializing Device Management " +
|
||||||
|
"database schema", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets Device Manager services
|
||||||
|
* @param deviceManager An instance of DeviceManagerService
|
||||||
|
*/
|
||||||
|
protected void setDeviceManagerService(DeviceManagerService deviceManager) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Setting Device Management Service");
|
||||||
|
}
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceManagementRepository().
|
||||||
|
addDeviceManagementProvider(deviceManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unsets Device Management services
|
||||||
|
* @param deviceManager An instance of DeviceManagerService
|
||||||
|
*/
|
||||||
|
protected void unsetDeviceManagerService(DeviceManagerService deviceManager) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Unsetting Device Management Service");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets Realm Service
|
||||||
|
* @param realmService An instance of RealmService
|
||||||
|
*/
|
||||||
|
protected void setRealmService(RealmService realmService) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Setting Realm Service");
|
||||||
|
}
|
||||||
|
DeviceManagementDataHolder.getInstance().setRealmService(realmService);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unsets Realm Service
|
||||||
|
* @param realmService An instance of RealmService
|
||||||
|
*/
|
||||||
|
protected void unsetRealmService(RealmService realmService) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Unsetting Realm Service");
|
||||||
|
}
|
||||||
|
DeviceManagementDataHolder.getInstance().setRealmService(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,126 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.device.mgt.core.internal;
|
|
||||||
|
|
||||||
import org.wso2.carbon.context.CarbonContext;
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
|
||||||
import org.wso2.carbon.ndatasource.core.DataSourceService;
|
|
||||||
import org.wso2.carbon.securevault.SecretCallbackHandlerService;
|
|
||||||
import org.wso2.carbon.user.api.UserStoreException;
|
|
||||||
import org.wso2.carbon.user.core.service.RealmService;
|
|
||||||
import org.wso2.carbon.user.core.tenant.TenantManager;
|
|
||||||
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
|
|
||||||
import javax.transaction.TransactionManager;
|
|
||||||
|
|
||||||
public class DeviceManagerDataHolder {
|
|
||||||
|
|
||||||
private DataSourceService dataSourceService;
|
|
||||||
|
|
||||||
private RealmService realmService;
|
|
||||||
|
|
||||||
private TransactionManager transactionManager;
|
|
||||||
|
|
||||||
private SecretCallbackHandlerService secretCallbackHandlerService;
|
|
||||||
|
|
||||||
private TenantManager tenantManager;
|
|
||||||
|
|
||||||
private static DeviceManagerDataHolder thisInstance = new DeviceManagerDataHolder();
|
|
||||||
|
|
||||||
private DeviceManagerDataHolder() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DeviceManagerDataHolder getInstance() {
|
|
||||||
return thisInstance;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DataSourceService getDataSourceService() {
|
|
||||||
return dataSourceService;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDataSourceService(DataSourceService dataSourceService) {
|
|
||||||
this.dataSourceService = dataSourceService;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RealmService getRealmService() {
|
|
||||||
return realmService;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRealmService(RealmService realmService) {
|
|
||||||
this.realmService = realmService;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TransactionManager getTransactionManager() {
|
|
||||||
return transactionManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTransactionManager(TransactionManager transactionManager) {
|
|
||||||
this.transactionManager = transactionManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SecretCallbackHandlerService getSecretCallbackHandlerService() {
|
|
||||||
return secretCallbackHandlerService;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSecretCallbackHandlerService(
|
|
||||||
SecretCallbackHandlerService secretCallbackHandlerService) {
|
|
||||||
this.secretCallbackHandlerService = secretCallbackHandlerService;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setThisInstance(DeviceManagerDataHolder thisInstance) {
|
|
||||||
DeviceManagerDataHolder.thisInstance = thisInstance;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TenantManager getTenantManager() throws DeviceManagementException {
|
|
||||||
RealmService realmService = getRealmService();
|
|
||||||
if (realmService == null) {
|
|
||||||
throw new DeviceManagementException("Realm service is not initialized properly");
|
|
||||||
}
|
|
||||||
return realmService.getTenantManager();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get tenant id of the current tenant
|
|
||||||
*
|
|
||||||
* @return tenant id
|
|
||||||
* @throws DeviceManagementException if error occurred when getting tenant id
|
|
||||||
*/
|
|
||||||
public int getTenantId() throws DeviceManagementException {
|
|
||||||
CarbonContext context = CarbonContext.getThreadLocalCarbonContext();
|
|
||||||
int tenantId = context.getTenantId();
|
|
||||||
if (tenantId != MultitenantConstants.INVALID_TENANT_ID) {
|
|
||||||
return tenantId;
|
|
||||||
}
|
|
||||||
String tenantDomain = context.getTenantDomain();
|
|
||||||
if (tenantDomain == null) {
|
|
||||||
String msg = "Tenant domain is not properly set and thus, is null";
|
|
||||||
throw new DeviceManagementException(msg);
|
|
||||||
}
|
|
||||||
TenantManager tenantManager = getTenantManager();
|
|
||||||
try {
|
|
||||||
tenantId = tenantManager.getTenantId(tenantDomain);
|
|
||||||
} catch (UserStoreException e) {
|
|
||||||
String msg = "Error occurred while retrieving id from the domain of tenant " +
|
|
||||||
tenantDomain;
|
|
||||||
throw new DeviceManagementException(msg);
|
|
||||||
}
|
|
||||||
return tenantId;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,113 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
package org.wso2.carbon.device.mgt.core.internal;
|
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.osgi.framework.BundleContext;
|
|
||||||
import org.osgi.service.component.ComponentContext;
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
|
|
||||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagerService;
|
|
||||||
import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
|
|
||||||
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
|
||||||
import org.wso2.carbon.device.mgt.core.util.DeviceMgtDbCreator;
|
|
||||||
import org.wso2.carbon.utils.CarbonUtils;
|
|
||||||
|
|
||||||
import javax.naming.InitialContext;
|
|
||||||
import javax.transaction.TransactionManager;
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @scr.component name="org.wso2.carbon.device.manager" immediate="true"
|
|
||||||
* @scr.reference name="device.manager.service"
|
|
||||||
* interface="org.wso2.carbon.device.mgt.common.spi.DeviceManagerService" cardinality="1..n"
|
|
||||||
* policy="dynamic" bind="setDeviceManagerService" unbind="unsetDeviceManagerService"
|
|
||||||
*/
|
|
||||||
public class DeviceMgtServiceComponent {
|
|
||||||
|
|
||||||
private static Log log = LogFactory.getLog(DeviceMgtServiceComponent.class);
|
|
||||||
private final String deviceMgtSetupSql = CarbonUtils.getCarbonHome() + File.separator + "dbscripts" ;
|
|
||||||
|
|
||||||
protected void setDeviceManagerService(DeviceManagerService deviceManager) {
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("Setting Device Management Service");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void unsetDeviceManagerService(DeviceManagerService deviceManager) {
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("Unsetting Device Management Service");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void activate(ComponentContext componentContext) {
|
|
||||||
BundleContext bundleContext = componentContext.getBundleContext();
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
/* Looks up for the JNDI registered transaction manager */
|
|
||||||
DeviceManagerDataHolder.getInstance().setTransactionManager(this.lookupTransactionManager());
|
|
||||||
/* Initializing RSS Configuration */
|
|
||||||
DeviceConfigurationManager.getInstance().initConfig();
|
|
||||||
|
|
||||||
String setupOption = System.getProperty("setup");
|
|
||||||
//if -Dsetup option specified then create rss manager tables
|
|
||||||
if (setupOption != null) {
|
|
||||||
log.info("Setup option specified");
|
|
||||||
DeviceMgtDbCreator dbCreator = new DeviceMgtDbCreator(DeviceManagerUtil.getDataSource());
|
|
||||||
dbCreator.setRssDBScriptDirectory(deviceMgtSetupSql);
|
|
||||||
log.info("Creating Meta Data tables");
|
|
||||||
dbCreator.createRegistryDatabase();
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Throwable e) {
|
|
||||||
String msg = "Error occurred while initializing RSS Manager core bundle";
|
|
||||||
log.error(msg, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private TransactionManager lookupTransactionManager() {
|
|
||||||
TransactionManager transactionManager = null;
|
|
||||||
try {
|
|
||||||
Object txObj = InitialContext.doLookup(
|
|
||||||
DeviceManagementConstants.STANDARD_USER_TRANSACTION_JNDI_NAME);
|
|
||||||
if (txObj instanceof TransactionManager) {
|
|
||||||
transactionManager = (TransactionManager) txObj;
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("Cannot find transaction manager at: "
|
|
||||||
+ DeviceManagementConstants.STANDARD_USER_TRANSACTION_JNDI_NAME, e);
|
|
||||||
}
|
|
||||||
/* ignore, move onto next step */
|
|
||||||
}
|
|
||||||
if (transactionManager == null) {
|
|
||||||
try {
|
|
||||||
transactionManager = InitialContext.doLookup(
|
|
||||||
DeviceManagementConstants.STANDARD_TRANSACTION_MANAGER_JNDI_NAME);
|
|
||||||
} catch (Exception e) {
|
|
||||||
if (log.isDebugEnabled()) {
|
|
||||||
log.debug("Cannot find transaction manager at: " +
|
|
||||||
DeviceManagementConstants.STANDARD_TRANSACTION_MANAGER_JNDI_NAME, e);
|
|
||||||
}
|
|
||||||
/* we'll do the lookup later, maybe user provided a custom JNDI name */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return transactionManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2012, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
package org.wso2.carbon.device.mgt.core.service;
|
||||||
|
|
||||||
|
import org.wso2.carbon.core.AbstractAdmin;
|
||||||
|
|
||||||
|
public class DeviceManagementAdminService extends AbstractAdmin {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,113 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2012, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
package org.wso2.carbon.device.mgt.core.service;
|
||||||
|
|
||||||
|
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.spi.DeviceManagerService;
|
||||||
|
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class DeviceManagementService implements DeviceManagerService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getProviderType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enrollDevice(Device device) throws DeviceManagementException {
|
||||||
|
DeviceManagerService dms =
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceManagementRepository().
|
||||||
|
getDeviceManagementProvider(device.getType());
|
||||||
|
dms.enrollDevice(device);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void modifyEnrollment(Device device) throws DeviceManagementException {
|
||||||
|
DeviceManagerService dms =
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceManagementRepository().
|
||||||
|
getDeviceManagementProvider(device.getType());
|
||||||
|
dms.modifyEnrollment(device);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException {
|
||||||
|
DeviceManagerService dms =
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceManagementRepository().
|
||||||
|
getDeviceManagementProvider(deviceId.getType());
|
||||||
|
dms.disenrollDevice(deviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isRegistered(DeviceIdentifier deviceId) throws DeviceManagementException {
|
||||||
|
DeviceManagerService dms =
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceManagementRepository().
|
||||||
|
getDeviceManagementProvider(deviceId.getType());
|
||||||
|
return dms.isRegistered(deviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException {
|
||||||
|
DeviceManagerService dms =
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceManagementRepository().
|
||||||
|
getDeviceManagementProvider(deviceId.getType());
|
||||||
|
return dms.isActive(deviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException {
|
||||||
|
DeviceManagerService dms =
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceManagementRepository().
|
||||||
|
getDeviceManagementProvider(deviceId.getType());
|
||||||
|
dms.setActive(deviceId, status);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Device> getAllDevices(String type) throws DeviceManagementException {
|
||||||
|
DeviceManagerService dms =
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceManagementRepository().
|
||||||
|
getDeviceManagementProvider(type);
|
||||||
|
return dms.getAllDevices(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Device getDevice(DeviceIdentifier deviceId) throws DeviceManagementException {
|
||||||
|
DeviceManagerService dms =
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceManagementRepository().
|
||||||
|
getDeviceManagementProvider(deviceId.getType());
|
||||||
|
return dms.getDevice(deviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateDeviceInfo(Device device) throws DeviceManagementException {
|
||||||
|
DeviceManagerService dms =
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceManagementRepository().
|
||||||
|
getDeviceManagementProvider(device.getType());
|
||||||
|
dms.updateDeviceInfo(device);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOwnership(DeviceIdentifier deviceId, String ownershipType) throws DeviceManagementException {
|
||||||
|
DeviceManagerService dms =
|
||||||
|
DeviceManagementDataHolder.getInstance().getDeviceManagementRepository().
|
||||||
|
getDeviceManagementProvider(deviceId.getType());
|
||||||
|
dms.setOwnership(deviceId, ownershipType);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -17,18 +17,20 @@ package org.wso2.carbon.device.mgt.core.util;
|
|||||||
|
|
||||||
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.device.mgt.core.config.datasource.DataSourceConfig;
|
||||||
|
import org.wso2.carbon.utils.CarbonUtils;
|
||||||
import org.wso2.carbon.utils.dbcreator.DatabaseCreator;
|
import org.wso2.carbon.utils.dbcreator.DatabaseCreator;
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
public class DeviceMgtDbCreator extends DatabaseCreator {
|
public final class DeviceManagementSchemaInitializer extends DatabaseCreator {
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(DeviceMgtDbCreator.class);
|
private static final Log log = LogFactory.getLog(DeviceManagementSchemaInitializer.class);
|
||||||
private String rssDBScriptDirectory;// stores the the location of the database script that is run according to the databse type
|
private static final String setupSQLScriptLocation = CarbonUtils.getCarbonHome() + File.separator + "dbscripts" ;
|
||||||
|
|
||||||
public DeviceMgtDbCreator(DataSource dataSource) {
|
|
||||||
super(dataSource);
|
|
||||||
|
|
||||||
|
public DeviceManagementSchemaInitializer(DataSourceConfig config) {
|
||||||
|
super(DeviceManagerUtil.resolveDataSource(config));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getDbScriptLocation(String databaseType) {
|
protected String getDbScriptLocation(String databaseType) {
|
||||||
@ -36,14 +38,7 @@ public class DeviceMgtDbCreator extends DatabaseCreator {
|
|||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("Loading database script from :" + scriptName);
|
log.debug("Loading database script from :" + scriptName);
|
||||||
}
|
}
|
||||||
return rssDBScriptDirectory.replaceFirst("DBTYPE", databaseType) + scriptName;
|
return setupSQLScriptLocation.replaceFirst("DBTYPE", databaseType) + scriptName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets database scripts directory
|
|
||||||
* @param rssDBScriptDirectory database scripts location
|
|
||||||
*/
|
|
||||||
public void setRssDBScriptDirectory(String rssDBScriptDirectory) {
|
|
||||||
this.rssDBScriptDirectory = rssDBScriptDirectory;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -1,52 +1,39 @@
|
|||||||
/*
|
/**
|
||||||
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
* Copyright (c) 2012, 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
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
* http://www.apache.org/licenses/LICENSE-2.
|
*
|
||||||
* Unless required by applicable law or agreed to in writing,
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
* software distributed under the License is distributed on an
|
*
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* KIND, either express or implied. See the License for the
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* specific language governing permissions and limitations
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* under the License.
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.wso2.carbon.device.mgt.core.util;
|
package org.wso2.carbon.device.mgt.core.util;
|
||||||
|
|
||||||
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.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
import org.wso2.carbon.device.mgt.core.config.datasource.RDBMSConfig;
|
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
||||||
import org.wso2.carbon.ndatasource.common.DataSourceException;
|
import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition;
|
||||||
import org.wso2.carbon.ndatasource.rdbms.RDBMSConfiguration;
|
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
|
||||||
import org.wso2.carbon.ndatasource.rdbms.RDBMSDataSource;
|
|
||||||
import org.wso2.securevault.SecretResolver;
|
|
||||||
|
|
||||||
import javax.naming.InitialContext;
|
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.Hashtable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class DeviceManagerUtil {
|
public final class DeviceManagerUtil {
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(DeviceManagerUtil.class);
|
private static final Log log = LogFactory.getLog(DeviceManagerUtil.class);
|
||||||
private static SecretResolver secretResolver;
|
|
||||||
private static String jndiDataSourceName;
|
|
||||||
private static DataSource dataSource;
|
|
||||||
private static final String DEFAULT_PRIVILEGE_TEMPLATE_NAME = "CRUD_PRIVILEGES_DEFAULT";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Construct document from file resource
|
|
||||||
*
|
|
||||||
* @param file object
|
|
||||||
* @return Document
|
|
||||||
* @throws org.wso2.carbon.device.mgt.common.DeviceManagementException if error occurred constructing document from file resource
|
|
||||||
*/
|
|
||||||
public static Document convertToDocument(File file) throws DeviceManagementException {
|
public static Document convertToDocument(File file) throws DeviceManagementException {
|
||||||
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
||||||
factory.setNamespaceAware(true);
|
factory.setNamespaceAware(true);
|
||||||
@ -59,67 +46,38 @@ public class DeviceManagerUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DataSource lookupDataSource(String dataSourceName, final Hashtable<Object, Object> jndiProperties) {
|
/**
|
||||||
try {
|
* Resolve data source from the data source definition
|
||||||
if (jndiProperties == null || jndiProperties.isEmpty()) {
|
*
|
||||||
return (DataSource) InitialContext.doLookup(dataSourceName);
|
* @param config data source configuration
|
||||||
}
|
* @return data source resolved from the data source definition
|
||||||
final InitialContext context = new InitialContext(jndiProperties);
|
*/
|
||||||
return (DataSource) context.doLookup(dataSourceName);
|
public static DataSource resolveDataSource(DataSourceConfig config) {
|
||||||
} catch (Exception e) {
|
DataSource dataSource = null;
|
||||||
throw new RuntimeException("Error in looking up data source: " + e.getMessage(), e);
|
if (config == null) {
|
||||||
|
throw new RuntimeException("Device Management Repository data source configuration " +
|
||||||
|
"is null and thus, is not initialized");
|
||||||
|
}
|
||||||
|
JNDILookupDefinition jndiConfig = config.getJndiLookupDefintion();
|
||||||
|
if (jndiConfig != null) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Initializing Device Management Repository data source using the JNDI " +
|
||||||
|
"Lookup Definition");
|
||||||
|
}
|
||||||
|
List<JNDILookupDefinition.JNDIProperty> jndiPropertyList =
|
||||||
|
jndiConfig.getJndiProperties();
|
||||||
|
if (jndiPropertyList != null) {
|
||||||
|
Hashtable<Object, Object> jndiProperties = new Hashtable<Object, Object>();
|
||||||
|
for (JNDILookupDefinition.JNDIProperty prop : jndiPropertyList) {
|
||||||
|
jndiProperties.put(prop.getName(), prop.getValue());
|
||||||
|
}
|
||||||
|
dataSource =
|
||||||
|
DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), jndiProperties);
|
||||||
|
} else {
|
||||||
|
dataSource = DeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void setJndiDataSourceName(String jndiDataSourceName) {
|
|
||||||
DeviceManagerUtil.jndiDataSourceName = jndiDataSourceName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setDataSource(DataSource dataSource) {
|
|
||||||
DeviceManagerUtil.dataSource = dataSource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DataSource getDataSource() {
|
|
||||||
return dataSource;
|
return dataSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Properties loadDataSourceProperties(RDBMSConfig config) {
|
|
||||||
Properties props = new Properties();
|
|
||||||
List<RDBMSConfig.DataSourceProperty> dsProps = config.getDataSourceProps();
|
|
||||||
for (RDBMSConfig.DataSourceProperty dsProp : dsProps) {
|
|
||||||
props.setProperty(dsProp.getName(), dsProp.getValue());
|
|
||||||
}
|
|
||||||
return props;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create data source from properties
|
|
||||||
*
|
|
||||||
* @param properties set of data source properties
|
|
||||||
* @param dataSourceClassName data source class name
|
|
||||||
* @return DataSource
|
|
||||||
*/
|
|
||||||
public static DataSource createDataSource(Properties properties, String dataSourceClassName) {
|
|
||||||
RDBMSConfiguration config = new RDBMSConfiguration();
|
|
||||||
config.setDataSourceClassName(dataSourceClassName);
|
|
||||||
List<RDBMSConfiguration.DataSourceProperty> dsProps = new ArrayList<RDBMSConfiguration.DataSourceProperty>();
|
|
||||||
for (Map.Entry<Object, Object> entry : properties.entrySet()) {
|
|
||||||
RDBMSConfiguration.DataSourceProperty property =
|
|
||||||
new RDBMSConfiguration.DataSourceProperty();
|
|
||||||
property.setName((String) entry.getKey());
|
|
||||||
property.setValue((String) entry.getValue());
|
|
||||||
dsProps.add(property);
|
|
||||||
}
|
|
||||||
config.setDataSourceProps(dsProps);
|
|
||||||
return createDataSource(config);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DataSource createDataSource(RDBMSConfiguration config) {
|
|
||||||
try {
|
|
||||||
RDBMSDataSource dataSource = new RDBMSDataSource(config);
|
|
||||||
return dataSource.getDataSource();
|
|
||||||
} catch (DataSourceException e) {
|
|
||||||
throw new RuntimeException("Error in creating data source: " + e.getMessage(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -61,7 +61,7 @@ public class AndroidDeviceManagerService implements DeviceManagerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setActive(boolean status) throws DeviceManagementException {
|
public void setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -61,7 +61,7 @@ public class IOSDeviceManagerService implements DeviceManagerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setActive(boolean status) throws DeviceManagementException {
|
public void setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -61,7 +61,7 @@ public class WindowsDeviceManagerService implements DeviceManagerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setActive(boolean status) throws DeviceManagementException {
|
public void setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
34
pom.xml
34
pom.xml
@ -134,8 +134,6 @@
|
|||||||
<artifactId>org.eclipse.equinox.common</artifactId>
|
<artifactId>org.eclipse.equinox.common</artifactId>
|
||||||
<version>${eclipse.equinox.common.version}</version>
|
<version>${eclipse.equinox.common.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
<!--Test dependencies-->
|
<!--Test dependencies-->
|
||||||
<!--
|
<!--
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -145,13 +143,41 @@
|
|||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.testng</groupId>
|
<groupId>org.testng</groupId>
|
||||||
<artifactId>testng</artifactId>
|
<artifactId>testng</artifactId>
|
||||||
<version>${testng.version}</version>
|
<version>${testng.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.utils</artifactId>
|
||||||
|
<version>${carbon.platform.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.core</artifactId>
|
||||||
|
<version>${carbon.platform.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.ndatasource.core</artifactId>
|
||||||
|
<version>${carbon.platform.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.ndatasource.rdbms</artifactId>
|
||||||
|
<version>${carbon.platform.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.transaction.manager</artifactId>
|
||||||
|
<version>${carbon.platform.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jboss.spec.javax.transaction</groupId>
|
||||||
|
<artifactId>jboss-transaction-api_1.1_spec</artifactId>
|
||||||
|
<version>${jboss-transaction-api.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user