/* * 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.common; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; import org.pentaho.pac.client.HibernateConfigurationService; import org.pentaho.pac.common.HibernateConfigurationServiceException; import org.pentaho.pac.common.NameValue; import org.pentaho.pac.server.i18n.Messages; import com.google.gwt.user.server.rpc.RemoteServiceServlet; public class HibernateConfigurationServiceImpl extends RemoteServiceServlet implements HibernateConfigurationService { private static final long serialVersionUID = 420L; List<NameValue> hibernateConfigurations = new ArrayList<NameValue>(); private static final String HIBERNATE = "/system/hibernate"; //$NON-NLS-1$ public HibernateConfigurationServiceImpl() { } public void initialize() { } public NameValue[] getAvailableHibernateConfigurations() throws HibernateConfigurationServiceException { String solutionPath = AppConfigProperties.getInstance().getSolutionPath(); if (solutionPath != null && solutionPath.length() > 0) { return getAvailableHibernateConfigurations(solutionPath); } else { throw new HibernateConfigurationServiceException(Messages .getErrorString("HibernateConfigurationService.ERROR_0001_SOLUTION_PATH_IS_NULL"));//$NON-NLS-1$ } } public NameValue[] getAvailableHibernateConfigurations(String solutionPath) throws HibernateConfigurationServiceException { return getConfigurations(solutionPath); } private NameValue[] getConfigurations(String solutionPath) throws HibernateConfigurationServiceException { if (hibernateConfigurations.size() == 0) { if (solutionPath != null && solutionPath.length() > 0) { File parent = new File(solutionPath + HIBERNATE); FilenameFilter filter = new FilenameFilter() { public boolean accept(File dir, String pathname) { return pathname.endsWith(".xml") && pathname.contains("hibernate.cfg"); //$NON-NLS-1$//$NON-NLS-2$ } }; if (parent.exists()) { for (File file : parent.listFiles(filter)) { String fileName = file.getName(); if(fileName != null && fileName.length() > 0) { String truncatedFileName = fileName.substring(0, fileName.indexOf(".hibernate"));//$NON-NLS-1$ hibernateConfigurations.add(new NameValue(truncatedFileName, fileName)); } } } else { throw new HibernateConfigurationServiceException(Messages .getErrorString("HibernateConfigurationService.ERROR_0002_NO_CONFIGURATION_FILES_FOUND_IN_PATH")); //$NON-NLS-1$ } } else { throw new HibernateConfigurationServiceException(Messages .getErrorString("HibernateConfigurationService.ERROR_0001_SOLUTION_PATH_IS_NULL")); //$NON-NLS-1$ } } return hibernateConfigurations.toArray(new NameValue[hibernateConfigurations.size()]); } }