/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright 2008 - 2009 Pentaho Corporation. All rights reserved.
*/
package org.pentaho.pac.server.datasources;
import java.util.List;
import org.pentaho.pac.common.PentahoSecurityException;
import org.pentaho.pac.common.datasources.DuplicateDataSourceException;
import org.pentaho.pac.common.datasources.NonExistingDataSourceException;
import org.pentaho.pac.server.common.DAOException;
import org.pentaho.pac.server.common.DAOFactory;
import org.pentaho.platform.api.repository.datasource.IDatasource;
public class DataSourceMgmtService implements IDataSourceMgmtService {
IDataSourceDAO dataSourceDAO = null;
public DataSourceMgmtService() {
dataSourceDAO = DAOFactory.getDataSourceDAO();
}
public void createDataSource(IDatasource newDataSource) throws DuplicateDataSourceException, DAOException, PentahoSecurityException {
if (hasCreateDataSourcePerm(newDataSource)) {
dataSourceDAO.createDataSource(newDataSource);
} else {
throw new PentahoSecurityException();
}
}
public void deleteDataSource(String jndiName) throws NonExistingDataSourceException, DAOException, PentahoSecurityException {
IDatasource dataSource = dataSourceDAO.getDataSource(jndiName);
if (dataSource != null) {
deleteDataSource(dataSource);
} else {
throw new NonExistingDataSourceException(jndiName);
}
}
public void deleteDataSource(IDatasource dataSource) throws NonExistingDataSourceException, DAOException, PentahoSecurityException {
if (hasDeleteDataSourcePerm(dataSource)) {
dataSourceDAO.deleteDataSource(dataSource);
} else {
throw new PentahoSecurityException();
}
}
public IDatasource getDataSource(String jndiName) throws DAOException {
return dataSourceDAO.getDataSource(jndiName);
}
public List<IDatasource> getDataSources() throws DAOException {
return dataSourceDAO.getDataSources();
}
public void updateDataSource(IDatasource dataSource) throws DAOException, PentahoSecurityException, NonExistingDataSourceException {
if (hasUpdateDataSourcePerm(dataSource)) {
dataSourceDAO.updateDataSource(dataSource);
} else {
throw new PentahoSecurityException();
}
}
public void beginTransaction() throws DAOException {
dataSourceDAO.beginTransaction();
}
public void commitTransaction() throws DAOException {
dataSourceDAO.commitTransaction();
}
public void rollbackTransaction() throws DAOException {
dataSourceDAO.rollbackTransaction();
}
public void closeSession() {
dataSourceDAO.closeSession();
}
protected boolean hasCreateDataSourcePerm(IDatasource dataSource) {
return true;
}
protected boolean hasUpdateDataSourcePerm(IDatasource dataSource) {
return true;
}
protected boolean hasDeleteDataSourcePerm(IDatasource dataSource) {
return true;
}
}