/** SpagoBI, the Open Source Business Intelligence suite Copyright (C) 2012 Engineering Ingegneria Informatica S.p.A. - SpagoBI Competency Center This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. **/ package it.eng.spagobi.studio.utils.services.serverobjects; import it.eng.spagobi.sdk.datasets.bo.SDKDataSet; import it.eng.spagobi.sdk.datasets.bo.SDKDataSetParameter; import it.eng.spagobi.sdk.datasets.bo.SDKDataStoreMetadata; import it.eng.spagobi.sdk.documents.bo.SDKDocument; import it.eng.spagobi.sdk.documents.bo.SDKTemplate; import it.eng.spagobi.sdk.exceptions.MissingParameterValue; import it.eng.spagobi.sdk.proxy.DataSetsSDKServiceProxy; import it.eng.spagobi.server.services.api.ISpagoBIServerDatasetServiceProxy; import it.eng.spagobi.server.services.api.bo.IDataSet; import it.eng.spagobi.server.services.api.bo.IDataSetParameter; import it.eng.spagobi.server.services.api.bo.IDataStoreMetadata; import it.eng.spagobi.server.services.api.bo.IDocument; import it.eng.spagobi.server.services.api.bo.ITemplate; import it.eng.spagobi.server.services.api.exception.MissingParValueException; import it.eng.spagobi.server.services.api.exception.NoServerException; import it.eng.spagobi.studio.utils.bo.DataStoreMetadata; import it.eng.spagobi.studio.utils.bo.Dataset; import it.eng.spagobi.studio.utils.services.ProxyHandler; import it.eng.spagobi.studio.utils.services.ServerObjectsTranslator; import java.rmi.RemoteException; import java.util.Vector; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ServerDatasets implements ISpagoBIServerDatasetServiceProxy { private static Logger logger = LoggerFactory.getLogger(ServerDatasets.class); ProxyHandler proxyHandler = null; public Integer saveNewDocument(IDocument newDocument, ITemplate template, Integer functionalityId) throws RemoteException{ Integer returnCode = null; SDKDocument sdkDocument = ServerObjectsTranslator.createSDKDocument(newDocument); SDKTemplate sdkTemplate = ServerObjectsTranslator.createSDKTemplate(template); if(proxyHandler.getDocumentsServiceProxy() != null) returnCode = proxyHandler.getDocumentsServiceProxy().saveNewDocument(sdkDocument, sdkTemplate, functionalityId); return returnCode; } public void uploadTemplate(Integer id, ITemplate template) throws RemoteException{ SDKTemplate sdkTemplate = ServerObjectsTranslator.createSDKTemplate(template); if(proxyHandler.getDocumentsServiceProxy() != null) proxyHandler.getDocumentsServiceProxy().uploadTemplate(id, sdkTemplate); return; } public IDataSet[] getDataSetList() throws RemoteException{ IDataSet[] toReturn = null; SDKDataSet[] sdkDatasets = null; if(proxyHandler.getDataSetsSDKServiceProxy() != null) sdkDatasets = proxyHandler.getDataSetsSDKServiceProxy().getDataSets(); if(sdkDatasets != null){ toReturn = new Dataset[sdkDatasets.length]; for (int i = 0; i < sdkDatasets.length; i++) { SDKDataSet sdkDs = sdkDatasets[i]; toReturn[i] = new Dataset(sdkDs); } } return toReturn; } public IDataSet getDataSet(Integer id) throws RemoteException{ Dataset toReturn = null; SDKDataSet sdkDataset = null; if(proxyHandler.getDataSetsSDKServiceProxy() != null) sdkDataset = proxyHandler.getDataSetsSDKServiceProxy().getDataSet(id); if(sdkDataset != null){ toReturn = new Dataset(sdkDataset); } return toReturn; } public Integer saveDataSet(IDataSet newDataset) throws RemoteException{ Integer returnCode = null; SDKDataSet sdkDataSet = ServerObjectsTranslator.createSDKDataSet(newDataset); if(proxyHandler.getDocumentsServiceProxy() != null) returnCode = proxyHandler.getDataSetsSDKServiceProxy().saveDataset(sdkDataSet); return returnCode; } public String executeDataSet(String dataSetLabel, IDataSetParameter[] parameters) throws RemoteException{ String returnCode = null; SDKDataSetParameter[] sdkParArray = null; if(parameters != null){ sdkParArray = new SDKDataSetParameter[parameters.length]; for (int i = 0; i < sdkParArray.length; i++) { IDataSetParameter dsP = parameters[i]; sdkParArray[i] = ServerObjectsTranslator.createSDKDataSetParameter(dsP); } } if(proxyHandler.getDataSetsSDKServiceProxy() != null) returnCode = proxyHandler.getDataSetsSDKServiceProxy().executeDataSet(dataSetLabel, sdkParArray); return returnCode; } public IDataStoreMetadata getDataStoreMetadata(Integer datasetId) throws NoServerException, MissingParValueException{ logger.debug("IN"); SDKDataStoreMetadata sdkDataStoreMetadata=null; IDataStoreMetadata toReturn=null; try{ // Server server = new ServerHandler().getCurrentActiveServer(projectName); // SDKProxyFactory proxyFactory=new SDKProxyFactory(server); // DataSetsSDKServiceProxy datasetsServiceProxy=proxyFactory.getDataSetsSDKServiceProxy(); DataSetsSDKServiceProxy proxy = proxyHandler.getDataSetsSDKServiceProxy(); SDKDataSet sdkDataSet=proxy.getDataSet(datasetId); sdkDataStoreMetadata=proxy.getDataStoreMetadata(sdkDataSet); } catch (Exception e) { if(e instanceof MissingParameterValue){ throw new MissingParValueException(); } else{ logger.error("No comunication with SpagoBI server, could not retrieve dataset metadata informations", e); throw(new NoServerException(e)); } } if(sdkDataStoreMetadata!=null){ toReturn=new DataStoreMetadata(sdkDataStoreMetadata); } logger.debug("OUT"); return toReturn; } public Vector<IDataSet> getAllDatasets() throws NoServerException{ logger.debug("IN"); Vector<IDataSet> toReturn=new Vector<IDataSet>(); SDKDataSet[] sdkDataSets=null; try{ // Server server = new ServerHandler().getCurrentActiveServer(projectName); // SDKProxyFactory proxyFactory=new SDKProxyFactory(server); // DataSetsSDKServiceProxy datasetsServiceProxy=proxyFactory.getDataSetsSDKServiceProxy(); DataSetsSDKServiceProxy proxy = proxyHandler.getDataSetsSDKServiceProxy(); sdkDataSets=proxy.getDataSets(); } catch (Exception e) { logger.error("No comunication with SpagoBI server, could not retrieve dataset informations", e); throw(new NoServerException(e)); } for (int i = 0; i < sdkDataSets.length; i++) { SDKDataSet sdkDataSet=sdkDataSets[i]; IDataSet dataset=new Dataset(sdkDataSet); if(dataset!=null){ toReturn.add(dataset); } } logger.debug("OUT"); return toReturn; } public ProxyHandler getProxyHandler() { return proxyHandler; } public void setProxyHandler(ProxyHandler proxyHandler) { this.proxyHandler = proxyHandler; } }