// Path: be.iminds.iot.things.api/src/be/iminds/iot/things/api/sensor/temperature/Temperature.java
// public final class Temperature extends SensorValue {
// 
// 	public Temperature(double value){
// 		super(value, "\u00b0C");
// 	}
// }
// 
// Path: be.iminds.iot.things.api/src/be/iminds/iot/things/api/sensor/temperature/TemperatureSensor.java
// public interface TemperatureSensor extends Thing {
// 
//     public final static String TEMPERATURE = "temperature";
// 
//     public Temperature getTemperature();
//     
// }
// 
// Path: be.iminds.iot.things.dyamand.adapter/src/be/iminds/iot/things/dyamand/adapter/ServiceAdapter.java
// public interface ServiceAdapter {
// 
// 	/**
// 	 * @return the type string
// 	 */
// 	public String getType();
// 	
// 	/**
// 	 * @return The target interfaces to adapt to 
// 	 */
// 	public String[] getTargets();
// 	
// 	/**
// 	 * Translate the ServicePojo source to an object that implements all target interfaces 
// 	 * @param source The source service
// 	 * @return an object implementing all target interfaces
// 	 */
// 	public Object getServiceObject(final Object source) throws Exception;
// 	
// 	/**
// 	 * Translate a variable name and value to a new state variable
// 	 * @param variable state variable name
// 	 * @param value state variable value
// 	 * @return translated state variable
// 	 */
// 	public StateVariable translateStateVariable(final String variable,
// 		    final Object value) throws Exception;
// 	
// }
// 
// Path: be.iminds.iot.things.dyamand.adapter/src/be/iminds/iot/things/dyamand/adapter/StateVariable.java
// public class StateVariable {
// 
// 	public final String name;
// 	public final Object value;
// 
// 	public StateVariable(final String n, final Object v) {
// 		this.name = n;
// 		this.value = v;
// 	}
// 
// 	public String getName() {
// 		return this.name;
// 	}
// 
// 	public Object getValue() {
// 		return this.value;
// 	}
// }


import org.osgi.service.component.annotations.Component;
import be.iminds.iot.things.api.sensor.temperature.Temperature;
import be.iminds.iot.things.api.sensor.temperature.TemperatureSensor;
import be.iminds.iot.things.dyamand.adapter.ServiceAdapter;
import be.iminds.iot.things.dyamand.adapter.StateVariable;
import org.dyamand.sensors.environment.TemperatureSensorServiceType;
/*******************************************************************************
 *  Copyright (c) 2015, Tim Verbelen
 *  Internet Based Communication Networks and Services research group (IBCN),
 *  Department of Information Technology (INTEC), Ghent University - iMinds.
 *  All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *     - Redistributions of source code must retain the above copyright notice,
 *       this list of conditions and the following disclaimer.
 *     - Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     - Neither the name of Ghent University - iMinds, nor the names of its 
 *       contributors may be used to endorse or promote products derived from 
 *       this software without specific prior written permission.
 *
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 *  POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
package be.iminds.iot.things.dyamand.adapters;



@Component(property={"aiolos.proxy=false"})
public class TemperatureSensorAdapter implements ServiceAdapter {

	@Override
	public String getType(){
		return "temperature";
	}
	
    @Override
    public String[] getTargets() {
    	return new String[]{
			be.iminds.iot.things.api.Thing.class.getName(),
			be.iminds.iot.things.api.sensor.temperature.TemperatureSensor.class.getName()};
    }

	@Override
	public Object getServiceObject(final Object source) throws Exception {
		if (!(source instanceof org.dyamand.sensors.environment.TemperatureSensor)) {
			throw new Exception("Cannot translate object!");
		}
// Path: be.iminds.iot.things.api/src/be/iminds/iot/things/api/sensor/temperature/Temperature.java
// public final class Temperature extends SensorValue {
// 
// 	public Temperature(double value){
// 		super(value, "\u00b0C");
// 	}
// }
// 
// Path: be.iminds.iot.things.api/src/be/iminds/iot/things/api/sensor/temperature/TemperatureSensor.java
// public interface TemperatureSensor extends Thing {
// 
//     public final static String TEMPERATURE = "temperature";
// 
//     public Temperature getTemperature();
//     
// }
// 
// Path: be.iminds.iot.things.dyamand.adapter/src/be/iminds/iot/things/dyamand/adapter/ServiceAdapter.java
// public interface ServiceAdapter {
// 
// 	/**
// 	 * @return the type string
// 	 */
// 	public String getType();
// 	
// 	/**
// 	 * @return The target interfaces to adapt to 
// 	 */
// 	public String[] getTargets();
// 	
// 	/**
// 	 * Translate the ServicePojo source to an object that implements all target interfaces 
// 	 * @param source The source service
// 	 * @return an object implementing all target interfaces
// 	 */
// 	public Object getServiceObject(final Object source) throws Exception;
// 	
// 	/**
// 	 * Translate a variable name and value to a new state variable
// 	 * @param variable state variable name
// 	 * @param value state variable value
// 	 * @return translated state variable
// 	 */
// 	public StateVariable translateStateVariable(final String variable,
// 		    final Object value) throws Exception;
// 	
// }
// 
// Path: be.iminds.iot.things.dyamand.adapter/src/be/iminds/iot/things/dyamand/adapter/StateVariable.java
// public class StateVariable {
// 
// 	public final String name;
// 	public final Object value;
// 
// 	public StateVariable(final String n, final Object v) {
// 		this.name = n;
// 		this.value = v;
// 	}
// 
// 	public String getName() {
// 		return this.name;
// 	}
// 
// 	public Object getValue() {
// 		return this.value;
// 	}
// }


// Path: be.iminds.iot.things.dyamand.adapter/src/be/iminds/iot/things/dyamand/adapters/TemperatureSensorAdapter.java
import org.osgi.service.component.annotations.Component;
import be.iminds.iot.things.api.sensor.temperature.Temperature;
import be.iminds.iot.things.api.sensor.temperature.TemperatureSensor;
import be.iminds.iot.things.dyamand.adapter.ServiceAdapter;
import be.iminds.iot.things.dyamand.adapter.StateVariable;
import org.dyamand.sensors.environment.TemperatureSensorServiceType;

/*******************************************************************************
 *  Copyright (c) 2015, Tim Verbelen
 *  Internet Based Communication Networks and Services research group (IBCN),
 *  Department of Information Technology (INTEC), Ghent University - iMinds.
 *  All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *     - Redistributions of source code must retain the above copyright notice,
 *       this list of conditions and the following disclaimer.
 *     - Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     - Neither the name of Ghent University - iMinds, nor the names of its 
 *       contributors may be used to endorse or promote products derived from 
 *       this software without specific prior written permission.
 *
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 *  POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
package be.iminds.iot.things.dyamand.adapters;



@Component(property={"aiolos.proxy=false"})
public class TemperatureSensorAdapter implements ServiceAdapter {

	@Override
	public String getType(){
		return "temperature";
	}
	
    @Override
    public String[] getTargets() {
    	return new String[]{
			be.iminds.iot.things.api.Thing.class.getName(),
			be.iminds.iot.things.api.sensor.temperature.TemperatureSensor.class.getName()};
    }

	@Override
	public Object getServiceObject(final Object source) throws Exception {
		if (!(source instanceof org.dyamand.sensors.environment.TemperatureSensor)) {
			throw new Exception("Cannot translate object!");
		}
		final TemperatureSensor sensor = new TemperatureSensor() {