|
|
@ -20,7 +20,9 @@ package org.wso2.carbon.device.mgt.mobile.dao.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.common.DeviceManagementException;
|
|
|
|
import org.wso2.carbon.device.mgt.mobile.common.MobileDeviceMgtPluginException;
|
|
|
|
|
|
|
|
import org.wso2.carbon.device.mgt.mobile.config.datasource.JNDILookupDefinition;
|
|
|
|
|
|
|
|
import org.wso2.carbon.device.mgt.mobile.config.datasource.MobileDataSourceConfig;
|
|
|
|
import org.wso2.carbon.device.mgt.mobile.util.MobileDeviceManagementSchemaInitializer;
|
|
|
|
import org.wso2.carbon.device.mgt.mobile.util.MobileDeviceManagementSchemaInitializer;
|
|
|
|
|
|
|
|
|
|
|
|
import javax.naming.InitialContext;
|
|
|
|
import javax.naming.InitialContext;
|
|
|
@ -30,6 +32,7 @@ import java.sql.PreparedStatement;
|
|
|
|
import java.sql.ResultSet;
|
|
|
|
import java.sql.ResultSet;
|
|
|
|
import java.sql.SQLException;
|
|
|
|
import java.sql.SQLException;
|
|
|
|
import java.util.Hashtable;
|
|
|
|
import java.util.Hashtable;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Utility method required by MobileDeviceManagement DAO classes.
|
|
|
|
* Utility method required by MobileDeviceManagement DAO classes.
|
|
|
@ -39,8 +42,8 @@ public class MobileDeviceManagementDAOUtil {
|
|
|
|
private static final Log log = LogFactory.getLog(MobileDeviceManagementDAOUtil.class);
|
|
|
|
private static final Log log = LogFactory.getLog(MobileDeviceManagementDAOUtil.class);
|
|
|
|
|
|
|
|
|
|
|
|
public static DataSource lookupDataSource(String dataSourceName,
|
|
|
|
public static DataSource lookupDataSource(String dataSourceName,
|
|
|
|
final Hashtable<Object, Object> jndiProperties)
|
|
|
|
final Hashtable<Object, Object> jndiProperties){
|
|
|
|
throws DeviceManagementException {
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
if (jndiProperties == null || jndiProperties.isEmpty()) {
|
|
|
|
if (jndiProperties == null || jndiProperties.isEmpty()) {
|
|
|
|
return (DataSource) InitialContext.doLookup(dataSourceName);
|
|
|
|
return (DataSource) InitialContext.doLookup(dataSourceName);
|
|
|
@ -50,7 +53,7 @@ public class MobileDeviceManagementDAOUtil {
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
String msg = "Error in looking up data source: " + e.getMessage();
|
|
|
|
String msg = "Error in looking up data source: " + e.getMessage();
|
|
|
|
log.error(msg, e);
|
|
|
|
log.error(msg, e);
|
|
|
|
throw new DeviceManagementException(msg, e);
|
|
|
|
throw new RuntimeException(msg + e.getMessage(), e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -87,17 +90,50 @@ public class MobileDeviceManagementDAOUtil {
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param dataSource Mobile data source
|
|
|
|
* @param dataSource Mobile data source
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public static void setupMobileDeviceManagementSchema(DataSource dataSource) throws
|
|
|
|
public static void setupMobileDeviceManagementSchema(DataSource dataSource) throws MobileDeviceMgtPluginException {
|
|
|
|
DeviceManagementException {
|
|
|
|
|
|
|
|
MobileDeviceManagementSchemaInitializer initializer =
|
|
|
|
MobileDeviceManagementSchemaInitializer initializer =
|
|
|
|
new MobileDeviceManagementSchemaInitializer(dataSource);
|
|
|
|
new MobileDeviceManagementSchemaInitializer(dataSource);
|
|
|
|
log.info("Initializing mobile device management repository database schema");
|
|
|
|
log.info("Initializing mobile device management repository database schema");
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
initializer.createRegistryDatabase();
|
|
|
|
initializer.createRegistryDatabase();
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
throw new DeviceManagementException("Error occurred while initializing Mobile Device " +
|
|
|
|
throw new MobileDeviceMgtPluginException("Error occurred while initializing Mobile Device " +
|
|
|
|
"Management database schema", e);
|
|
|
|
"Management database schema", e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Resolve data source from the data source definition
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param config data source configuration
|
|
|
|
|
|
|
|
* @return data source resolved from the data source definition
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private static DataSource resolveDataSource(MobileDataSourceConfig config) {
|
|
|
|
|
|
|
|
DataSource dataSource = null;
|
|
|
|
|
|
|
|
if (config == null) {
|
|
|
|
|
|
|
|
throw new RuntimeException(
|
|
|
|
|
|
|
|
"data source configuration " + "is null and " +
|
|
|
|
|
|
|
|
"thus, is not initialized");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
JNDILookupDefinition jndiConfig = config.getJndiLookupDefinition();
|
|
|
|
|
|
|
|
if (jndiConfig != null) {
|
|
|
|
|
|
|
|
if (log.isDebugEnabled()) {
|
|
|
|
|
|
|
|
log.debug("Initializing 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 = MobileDeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), jndiProperties);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
dataSource = MobileDeviceManagementDAOUtil.lookupDataSource(jndiConfig.getJndiName(), null);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return dataSource;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|