prabathabey 10 years ago
commit b5eb0f0eb8

@ -15,13 +15,18 @@
*/
package org.wso2.carbon.device.mgt.core;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.spi.DeviceManagerService;
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
import java.util.HashMap;
import java.util.Map;
public class DeviceManagementRepository {
private static final Log log = LogFactory.getLog(DeviceManagerUtil.class);
private Map<String, DeviceManagerService> providers;
public DeviceManagementRepository() {
@ -29,7 +34,13 @@ public class DeviceManagementRepository {
}
public void addDeviceManagementProvider(DeviceManagerService provider) {
providers.put(provider.getProviderType(), provider);
String deviceType = provider.getProviderType();
providers.put(deviceType, provider);
try {
DeviceManagerUtil.registerDeviceType(deviceType);
} catch (DeviceManagementException e) {
log.error("Exception occured while registering the device type.",e);
}
}
public DeviceManagerService getDeviceManagementProvider(String type) {

@ -36,7 +36,8 @@ public class DeviceManagerImpl implements DeviceManager{
private DeviceManagementConfig config;
private DeviceManagementRepository pluginRepository;
public DeviceManagerImpl(DeviceManagementConfig config, DeviceManagementRepository pluginRepository) {
public DeviceManagerImpl(DeviceManagementConfig config,
DeviceManagementRepository pluginRepository) {
this.config = config;
this.pluginRepository = pluginRepository;
this.deviceDAO = DeviceManagementDAOFactory.getDeviceDAO();
@ -50,10 +51,12 @@ public class DeviceManagerImpl implements DeviceManager{
boolean status = dms.enrollDevice(device);
try {
this.getDeviceTypeDAO().getDeviceType();
org.wso2.carbon.device.mgt.core.dto.Device deviceDto = DeviceManagementDAOUtil.convertDevice(
org.wso2.carbon.device.mgt.core.dto.Device deviceDto =
DeviceManagementDAOUtil.convertDevice(
device);
Integer deviceTypeId = this.getDeviceDAO().getDeviceTypeIdByDeviceTypeName(device.getType());
Integer deviceTypeId =
this.getDeviceTypeDAO().getDeviceTypeIdByDeviceTypeName(device.getType());
deviceDto.setDeviceType(deviceTypeId);
this.getDeviceDAO().addDevice(deviceDto);
} catch (DeviceManagementDAOException e) {
@ -99,7 +102,8 @@ public class DeviceManagerImpl implements DeviceManager{
}
@Override
public boolean setActive(DeviceIdentifier deviceId, boolean status) throws DeviceManagementException {
public boolean setActive(DeviceIdentifier deviceId, boolean status)
throws DeviceManagementException {
DeviceManagerService dms =
this.getPluginRepository().getDeviceManagementProvider(deviceId.getType());
return dms.setActive(deviceId, status);
@ -127,7 +131,8 @@ public class DeviceManagerImpl implements DeviceManager{
}
@Override
public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType) throws DeviceManagementException {
public boolean setOwnership(DeviceIdentifier deviceId, String ownershipType)
throws DeviceManagementException {
DeviceManagerService dms =
this.getPluginRepository().getDeviceManagementProvider(deviceId.getType());
return dms.setOwnership(deviceId, ownershipType);

@ -36,6 +36,4 @@ public interface DeviceDAO {
Device getDeviceByDeviceId(Long deviceId) throws DeviceManagementDAOException;
List<Device> getDevices() throws DeviceManagementDAOException;
Integer getDeviceTypeIdByDeviceTypeName(String type) throws DeviceManagementDAOException;
}

@ -36,4 +36,6 @@ public interface DeviceTypeDAO {
DeviceIdentifier getDeviceType() throws DeviceManagementDAOException;
Integer getDeviceTypeIdByDeviceTypeName(String type) throws DeviceManagementDAOException;
}

@ -102,38 +102,6 @@ public class DeviceDAOImpl implements DeviceDAO {
return null;
}
@Override
public Integer getDeviceTypeIdByDeviceTypeName(String type) throws DeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet resultSet = null;
Integer deviceTypeId = null;
try {
conn = this.getConnection();
String createDBQuery =
"SELECT * From DM_DEVICE_TYPE DT WHERE DT.NAME=?";
stmt = conn.prepareStatement(createDBQuery);
stmt.setString(1, type);
resultSet = stmt.executeQuery();
while(resultSet.next()){
deviceTypeId = resultSet.getInt(1);
}
} catch (SQLException e) {
String msg = "Error occurred while fetch device type id for device type '" + type + "'";
log.error(msg, e);
throw new DeviceManagementDAOException(msg, e);
} finally {
DeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return deviceTypeId;
}
private Connection getConnection() throws DeviceManagementDAOException {
try {
return dataSource.getConnection();

@ -15,6 +15,8 @@
*/
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.DeviceIdentifier;
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
import org.wso2.carbon.device.mgt.core.dao.DeviceTypeDAO;
@ -24,12 +26,15 @@ import org.wso2.carbon.device.mgt.core.dto.DeviceType;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class DeviceTypeDAOImpl implements DeviceTypeDAO {
private DataSource dataSource;
private static final Log log = LogFactory.getLog(DeviceTypeDAOImpl.class);
public DeviceTypeDAOImpl(DataSource dataSource) {
this.dataSource = dataSource;
@ -44,8 +49,10 @@ public class DeviceTypeDAOImpl implements DeviceTypeDAO {
stmt.setString(1, deviceType.getName());
stmt.execute();
} catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while registering the device type '" +
deviceType.getName() + "'", e);
String msg = "Error occurred while registering the device type '" +
deviceType.getName() + "'";
log.error(msg, e);
throw new DeviceManagementDAOException(msg, e);
} finally {
DeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
@ -58,21 +65,74 @@ public class DeviceTypeDAOImpl implements DeviceTypeDAO {
@Override
public List<DeviceType> getDeviceTypes() throws DeviceManagementDAOException {
return null;
Connection conn = this.getConnection();
PreparedStatement stmt = null;
List<DeviceType> deviceTypes = new ArrayList<DeviceType>();
try {
stmt = conn.prepareStatement(
"SELECT ID AS DEVICE_TYPE_ID, NAME AS DEVICE_TYPE FROM DM_DEVICE_TYPE");
ResultSet results = stmt.executeQuery();
while (results.next()) {
DeviceType deviceType = new DeviceType();
deviceType.setId(results.getLong("DEVICE_TYPE_ID"));
deviceType.setName(results.getString("DEVICE_TYPE"));
deviceTypes.add(deviceType);
}
} catch (SQLException e) {
String msg = "Error occurred while fetching the registered device types";
log.error(msg, e);
throw new DeviceManagementDAOException(msg, e);
} finally {
DeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return deviceTypes;
}
@Override
public DeviceIdentifier getDeviceType() throws DeviceManagementDAOException {
return new DeviceIdentifier();
return null;
}
@Override
public Integer getDeviceTypeIdByDeviceTypeName(String type)
throws DeviceManagementDAOException {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet resultSet = null;
Integer deviceTypeId = null;
try {
conn = this.getConnection();
String createDBQuery =
"SELECT * From DM_DEVICE_TYPE DT WHERE DT.NAME=?";
stmt = conn.prepareStatement(createDBQuery);
stmt.setString(1, type);
resultSet = stmt.executeQuery();
while (resultSet.next()) {
deviceTypeId = resultSet.getInt(1);
}
} catch (SQLException e) {
String msg = "Error occurred while fetch device type id for device type '" + type + "'";
log.error(msg, e);
throw new DeviceManagementDAOException(msg, e);
} finally {
DeviceManagementDAOUtil.cleanupResources(conn, stmt, null);
}
return deviceTypeId;
}
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);
String msg = "Error occurred while obtaining a connection from the device " +
"management metadata repository datasource";
log.error(msg, e);
throw new DeviceManagementDAOException(msg, e);
}
}
}

@ -21,7 +21,11 @@ import org.w3c.dom.Document;
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
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.DeviceManagementDAOException;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
import org.wso2.carbon.device.mgt.core.dao.DeviceTypeDAO;
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
import javax.sql.DataSource;
import javax.xml.parsers.DocumentBuilder;
@ -47,7 +51,7 @@ public final class DeviceManagerUtil {
}
/**
* Resolve data source from the data source definition
* Resolve data source from the data source definition.
*
* @param config data source configuration
* @return data source resolved from the data source definition
@ -80,4 +84,27 @@ public final class DeviceManagerUtil {
return dataSource;
}
/**
* Adds a new device type to the database if it does not exists.
*
* @param deviceTypeName device type
* @return status of the operation
*/
public static boolean registerDeviceType(String deviceTypeName) throws DeviceManagementException{
boolean status = false;
try {
DeviceTypeDAO deviceTypeDAO = DeviceManagementDAOFactory.getDeviceTypeDAO();
Integer deviceTypeId = deviceTypeDAO.getDeviceTypeIdByDeviceTypeName(deviceTypeName);
if(deviceTypeId == null){
DeviceType deviceType = new DeviceType();
deviceType.setName(deviceTypeName);
deviceTypeDAO.addDeviceType(deviceType);
}
status = true;
} catch (DeviceManagementDAOException e) {
String msg = "Error occurred while registering the device type " + deviceTypeName;
throw new DeviceManagementException(msg, e);
}
return status;
}
}

@ -1,4 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

@ -27,7 +27,7 @@ import javax.xml.bind.Unmarshaller;
import java.io.File;
/**
* Class responsible for the mobile device manager configuration initialization
* Class responsible for the mobile device manager configuration initialization.
*/
public class MobileDeviceConfigurationManager {

@ -21,7 +21,7 @@ import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
* Class for holding management repository data
* Class for holding management repository data.
*/
@XmlRootElement(name = "ManagementRepository")
public class MobileDeviceManagementRepository {

@ -20,7 +20,7 @@ import javax.xml.bind.annotation.*;
import java.util.List;
/**
* Class for hold JndiLookupDefinition of mobile-config.xml at parsing with JAXB
* Class for hold JndiLookupDefinition of mobile-config.xml at parsing with JAXB.
*/
@XmlRootElement(name = "JndiLookupDefinition")
public class JNDILookupDefinition {

@ -20,7 +20,7 @@ import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
* Class for holding data source configuration in mobile-config.xml at parsing with JAXB
* Class for holding data source configuration in mobile-config.xml at parsing with JAXB.
*/
@XmlRootElement(name = "DataSourceConfiguration")
public class MobileDataSourceConfig {

@ -49,7 +49,7 @@ public class MobileDeviceManagementDAOException extends Exception {
}
/**
* Constructs a new MobileDeviceManagementDAOException with the specified detail message
* Constructs a new MobileDeviceManagementDAOException with the specified detail message.
*
* @param message the detail message.
*/

@ -40,7 +40,7 @@ public class MobileDeviceManagementDAOUtil {
private static final Log log = LogFactory.getLog(MobileDeviceManagementDAOUtil.class);
/**
* Resolve data source from the data source definition
* Resolve data source from the data source definition.
*
* @param config Mobile data source configuration
* @return data source resolved from the data source definition
@ -128,7 +128,7 @@ public class MobileDeviceManagementDAOUtil {
}
/**
* Initializes the creation of mobile device management schema if -Dsetup has provided
* Initializes the creation of mobile device management schema if -Dsetup has provided.
*
* @param dataSource Mobile data source
*/
@ -151,7 +151,7 @@ public class MobileDeviceManagementDAOUtil {
}
/**
* Creates the mobile device management schema
* Creates the mobile device management schema.
*
* @param dataSource Mobile data source
*/

@ -22,7 +22,7 @@ import org.wso2.carbon.device.mgt.common.spi.DeviceManagerService;
import java.util.List;
/**
* This represents the iOS implementation of DeviceManagerService. *
* This represents the iOS implementation of DeviceManagerService.
*/
public class IOSDeviceManagerService implements DeviceManagerService {

@ -1,45 +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.mobile.util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document;
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
public class DeviceManagementUtil {
private static final Log log = LogFactory.getLog(DeviceManagementUtil.class);
public static Document convertToDocument(File file) throws DeviceManagementException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
try {
DocumentBuilder docBuilder = factory.newDocumentBuilder();
return docBuilder.parse(file);
} catch (Exception e) {
throw new DeviceManagementException(
"Error occurred while parsing file, while converting " +
"to a org.w3c.dom.Document : " + e.getMessage(), e);
}
}
}

@ -1,5 +1,5 @@
<!--
~ Copyright 2011-2012 WSO2, Inc. (http://wso2.com)
~ Copyright 2014 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.

@ -142,4 +142,38 @@ public class Device {
}
return responseMessage;
}
@GET
@Path("/operations/{id}")
public org.wso2.carbon.device.mgt.common.Device getOperations(@PathParam("id") String id) {
String msg = "";
DeviceManagementService dmService;
org.wso2.carbon.device.mgt.common.Device device =
new org.wso2.carbon.device.mgt.common.Device();
try {
dmService = AndroidAPIUtils.getDeviceManagementService();
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
try {
if (dmService != null) {
device = dmService.getDevice(deviceIdentifier);
if (device == null) {
Response.status(HttpStatus.SC_NOT_FOUND);
}
} else {
Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR);
}
} catch (DeviceManagementException e) {
msg = "Error occurred while fetching the device information.";
log.error(msg, e);
Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR);
}
return device;
}
}

@ -1,6 +1,6 @@
CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE
(
ID INT(11) NOT NULL,
ID INT(11) auto_increment NOT NULL,
NAME VARCHAR(300) NULL DEFAULT NULL,
PRIMARY KEY (ID)
);
@ -22,5 +22,3 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE
CONSTRAINT fk_DM_DEVICE_DM_DEVICE_TYPE2 FOREIGN KEY (DEVICE_TYPE_ID )
REFERENCES DM_DEVICE_TYPE (ID ) ON DELETE NO ACTION ON UPDATE NO ACTION
);
-- TO:DO - Remove this INSERT sql statement.
Insert into DM_DEVICE_TYPE (ID,NAME) VALUES (1, 'android');

Loading…
Cancel
Save