/*
* Copyright 2013, Cristiano Costantini, Giuseppe Gerla, Michele Ficarra, Sergio Ciampi, Stefano
* Cigheri.
*
* 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 com.google.developers.gdgfirenze.admin.server;
import com.google.developers.gdgfirenze.admin.client.service.GwtSensormixService;
import com.google.developers.gdgfirenze.model.AbstractSample;
import com.google.developers.gdgfirenze.model.SampleReport;
import com.google.developers.gdgfirenze.model.Sensor;
import com.google.developers.gdgfirenze.service.SensormixService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.osgi.util.tracker.ServiceTracker;
import java.util.Date;
import java.util.List;
import java.util.logging.Logger;
import javax.servlet.ServletException;
/**
* The server side implementation of the RPC service.
*/
@SuppressWarnings("serial")
public class SensormixServiceProxy extends RemoteServiceServlet implements GwtSensormixService {
/** The Constant logger. */
private static final Logger logger = Logger.getLogger(SensormixServiceProxy.class.getName());
/** The tracker. */
private ServiceTracker tracker = null;
/*
* (non-Javadoc)
*
* @see com.google.developers.gdgfirenze.service.SensormixService#countSamples(java.lang.String,
* java.lang.String, java.util.Date, java.util.Date)
*/
@Override
public long countSamples(String sensorId, String sampleType, Date from, Date to) {
return getService().countSamples(sensorId, sampleType, from, to);
}
/*
* (non-Javadoc)
*
* @see javax.servlet.GenericServlet#destroy()
*/
@Override
public void destroy() {
super.destroy();
if (tracker != null) {
tracker.close();
}
}
/*
* (non-Javadoc)
*
* @see
* com.google.developers.gdgfirenze.service.SensormixService#getSampleReport(java.lang.String,
* java.lang.String, java.util.Date, java.util.Date)
*/
@Override
public SampleReport getSampleReport(String sensorId, String sampleType, Date from, Date to) {
return getService().getSampleReport(sensorId, sampleType, from, to);
}
/*
* (non-Javadoc)
*
* @see com.google.developers.gdgfirenze.service.SensormixService#getSamples(java.lang.String,
* java.lang.String, java.util.Date, java.util.Date, java.lang.Long, java.lang.Long)
*/
@Override
public List<AbstractSample> getSamples(String sensorId, String sampleType, Date from, Date to,
Long limitFrom, Long limitCount) {
final List<AbstractSample> samples = getService().getSamples(sensorId, sampleType, from, to,
limitFrom, limitCount);
if (samples != null) {
logger.info("Sending " + samples.size() + " samples to GWT");
} else {
logger.warning("Samples are null!");
}
return samples;
}
/*
* (non-Javadoc)
*
* @see com.google.developers.gdgfirenze.service.SensormixService#getSensors(java.util.List,
* java.util.Date, java.util.Date)
*/
@Override
public List<Sensor> getSensors(List<String> sensorIds, Date from, Date to) {
final List<Sensor> sensors = getService().getSensors(sensorIds, from, to);
if (sensors != null) {
logger.info("Sending " + sensors.size() + " sensor to GWT");
} else {
logger.warning("Sensors are null!");
}
return sensors;
}
/*
* (non-Javadoc)
*
* @see javax.servlet.GenericServlet#init()
*/
@Override
public void init() throws ServletException {
super.init();
final BundleContext context = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
tracker = new ServiceTracker(context, SensormixService.class.getName(), null);
tracker.open();
}
/*
* (non-Javadoc)
*
* @see com.google.developers.gdgfirenze.service.SensormixService#listSamplesTypes()
*/
@Override
public List<String> listSamplesTypes() {
return getService().listSamplesTypes();
}
/*
* (non-Javadoc)
*
* @see com.google.developers.gdgfirenze.service.SensormixService#listSensorsIds()
*/
@Override
public List<String> listSensorsIds() {
final List<String> listSensorsIds = getService().listSensorsIds();
if (listSensorsIds != null) {
logger.info("Sending " + listSensorsIds.size() + " sensor ids to GWT");
} else {
logger.warning("Sensor IDs are null!");
}
return listSensorsIds;
}
/*
* (non-Javadoc)
*
* @see com.google.developers.gdgfirenze.service.SensormixService#recordSamples(java.util.List)
*/
@Override
public void recordSamples(List<AbstractSample> samples) {
getService().recordSamples(samples);
}
/*
* (non-Javadoc)
*
* @see
* com.google.developers.gdgfirenze.service.SensormixService#registerSensor(com.google.developers
* .gdgfirenze.model.Sensor)
*/
@Override
public void registerSensor(Sensor sensor) {
getService().registerSensor(sensor);
}
/**
* Gets the service.
*
* @return the service
*/
private SensormixService getService() {
try {
return (SensormixService) tracker.waitForService(10000);
} catch (InterruptedException e) {
throw new RuntimeException("Error accessing OSGi service for SensormixService", e);
}
}
}