001 /****************************************************************************** 002 * Copyright (C) MActor Developers. All rights reserved. * 003 * ---------------------------------------------------------------------------* 004 * This file is part of MActor. * 005 * * 006 * MActor is free software; you can redistribute it and/or modify * 007 * it under the terms of the GNU General Public License as published by * 008 * the Free Software Foundation; either version 2 of the License, or * 009 * (at your option) any later version. * 010 * * 011 * MActor is distributed in the hope that it will be useful, * 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 014 * GNU General Public License for more details. * 015 * * 016 * You should have received a copy of the GNU General Public License * 017 * along with MActor; if not, write to the Free Software * 018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * 019 ******************************************************************************/ 020 package org.mactor.framework.data; 021 022 import org.mactor.framework.MactorException; 023 024 public class DataProviderFactory { 025 public static final String SQL = "sql"; 026 public static final String FILE = "file"; 027 public static DataProvider getDataProvider(String dataSource) throws MactorException { 028 String[] parts = parse(dataSource); 029 if (FILE.equals(parts[0])) 030 return new CsvDataProvider(parts[1]); 031 else if (SQL.equals(parts[0])) 032 return new SqlDataProvider(parts[1]); 033 else { 034 throw new MactorException("Unsupported data source type '" + parts[0] + "'"); 035 } 036 } 037 private static String[] parse(String dataSource) throws MactorException { 038 if (dataSource == null || dataSource.trim().length() == 0) 039 throw new MactorException("Unparseable data source string '" + dataSource + "'"); 040 String[] parsed = new String[2]; 041 int split = dataSource.indexOf(":"); 042 if (split < 0 || split + 2 >= dataSource.length()) 043 throw new MactorException("Unparseable data source string '" + dataSource + "'"); 044 parsed[0] = dataSource.substring(0, split); 045 parsed[1] = dataSource.substring(split + 1, dataSource.length()); 046 return parsed; 047 } 048 }