127 lines
4.7 KiB
Java
127 lines
4.7 KiB
Java
|
package org.gcube.portlets.widgets.netcdfbasicwidgets.server;
|
||
|
|
||
|
import java.net.MalformedURLException;
|
||
|
import java.net.URL;
|
||
|
|
||
|
import javax.servlet.ServletException;
|
||
|
|
||
|
import org.gcube.portlets.widgets.netcdfbasicwidgets.client.rpc.NetCDFBasicWidgetService;
|
||
|
import org.gcube.portlets.widgets.netcdfbasicwidgets.server.netcdf.NetCDFResource;
|
||
|
import org.gcube.portlets.widgets.netcdfbasicwidgets.server.util.ServiceCredentials;
|
||
|
import org.gcube.portlets.widgets.netcdfbasicwidgets.shared.exception.ServiceException;
|
||
|
import org.gcube.portlets.widgets.netcdfbasicwidgets.shared.netcdf.NetCDFData;
|
||
|
import org.gcube.portlets.widgets.netcdfbasicwidgets.shared.netcdf.NetCDFId;
|
||
|
import org.gcube.portlets.widgets.netcdfbasicwidgets.shared.netcdf.NetCDFValues;
|
||
|
import org.gcube.portlets.widgets.netcdfbasicwidgets.shared.netcdf.VariableData;
|
||
|
import org.gcube.portlets.widgets.netcdfbasicwidgets.shared.session.UserInfo;
|
||
|
import org.slf4j.Logger;
|
||
|
import org.slf4j.LoggerFactory;
|
||
|
|
||
|
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @author Giancarlo Panichi
|
||
|
*
|
||
|
*
|
||
|
*/
|
||
|
@SuppressWarnings("serial")
|
||
|
public class NetCDFBasicWidgetServiceImpl extends RemoteServiceServlet implements NetCDFBasicWidgetService {
|
||
|
|
||
|
private static Logger logger = LoggerFactory.getLogger(NetCDFBasicWidgetServiceImpl.class);
|
||
|
|
||
|
/**
|
||
|
* {@inheritDoc}
|
||
|
*/
|
||
|
@Override
|
||
|
public void init() throws ServletException {
|
||
|
super.init();
|
||
|
logger.info("NetCDFBasicWidgetService started!");
|
||
|
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public UserInfo hello() throws ServiceException {
|
||
|
try {
|
||
|
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(this.getThreadLocalRequest());
|
||
|
logger.debug("hello()");
|
||
|
UserInfo userInfo = new UserInfo(serviceCredentials.getUserName(), serviceCredentials.getGroupId(),
|
||
|
serviceCredentials.getGroupName(), serviceCredentials.getScope(), serviceCredentials.getEmail(),
|
||
|
serviceCredentials.getFullName());
|
||
|
logger.debug("UserInfo: " + userInfo);
|
||
|
return userInfo;
|
||
|
} catch (ServiceException e) {
|
||
|
e.printStackTrace();
|
||
|
throw e;
|
||
|
} catch (Throwable e) {
|
||
|
logger.error("Error in hello(): " + e.getLocalizedMessage(), e);
|
||
|
throw new ServiceException(e.getLocalizedMessage(), e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public NetCDFData getNetCDFFromPublicLink(String publicLink) throws ServiceException {
|
||
|
try {
|
||
|
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(this.getThreadLocalRequest());
|
||
|
URL url;
|
||
|
try {
|
||
|
url = new URL(publicLink);
|
||
|
} catch (MalformedURLException e) {
|
||
|
logger.error(e.getLocalizedMessage(), e);
|
||
|
throw new ServiceException(e.getLocalizedMessage(), e);
|
||
|
}
|
||
|
|
||
|
NetCDFResource netCDFResource = new NetCDFResource(url);
|
||
|
NetCDFData netCDFData = netCDFResource.exploreNetCDF();
|
||
|
|
||
|
SessionUtil.setNetCDFData(netCDFData, this.getThreadLocalRequest(), serviceCredentials);
|
||
|
return netCDFData;
|
||
|
} catch (ServiceException e) {
|
||
|
logger.error("Error in getCDFResourceFromPublicLink(): " + e.getLocalizedMessage(), e);
|
||
|
throw e;
|
||
|
} catch (Exception e) {
|
||
|
logger.error("Error in getCDFResourceFromPublicLink(): " + e.getLocalizedMessage(), e);
|
||
|
throw new ServiceException(e.getLocalizedMessage(), e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
@Override
|
||
|
public NetCDFValues readDataVariable(NetCDFId netCDFId, VariableData variableData, boolean sample, int limit)
|
||
|
throws ServiceException {
|
||
|
try {
|
||
|
ServiceCredentials serviceCredentials=SessionUtil.getServiceCredentials(this.getThreadLocalRequest());
|
||
|
SessionUtil.getNetCDFData(netCDFId, this.getThreadLocalRequest(), serviceCredentials);
|
||
|
|
||
|
NetCDFResource netCDFResource = new NetCDFResource(netCDFId);
|
||
|
NetCDFValues netCDFValues = netCDFResource.readDataVariable(variableData, sample, limit);
|
||
|
|
||
|
return netCDFValues;
|
||
|
} catch (ServiceException e) {
|
||
|
logger.error("Error in getCDFResourceFromItem(): " + e.getLocalizedMessage(), e);
|
||
|
throw e;
|
||
|
} catch (Exception e) {
|
||
|
logger.error("Error in getCDFResourceFromItem(): " + e.getLocalizedMessage(), e);
|
||
|
throw new ServiceException(e.getLocalizedMessage(), e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void closeNetCDF(NetCDFId netCDFId) throws ServiceException {
|
||
|
try {
|
||
|
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(this.getThreadLocalRequest());
|
||
|
SessionUtil.getNetCDFData(netCDFId, this.getThreadLocalRequest(),
|
||
|
serviceCredentials);
|
||
|
NetCDFResource netCDFResource = new NetCDFResource(netCDFId);
|
||
|
netCDFResource.close();
|
||
|
SessionUtil.removeNetCDFData(netCDFId, this.getThreadLocalRequest(), serviceCredentials);
|
||
|
} catch (ServiceException e) {
|
||
|
logger.error("Error in closeNetCDF(): " + e.getLocalizedMessage(), e);
|
||
|
throw e;
|
||
|
} catch (Exception e) {
|
||
|
logger.error("Error in closeNetCDF(): " + e.getLocalizedMessage(), e);
|
||
|
throw new ServiceException(e.getLocalizedMessage(), e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|