/*******************************************************************************
* Copyright 2010 Simon Mieth
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package org.kabeja.tools;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
/**
* @author <a href="mailto:simon.mieth@gmx.de">Simon Mieth</a>
*
*/
public class ConfigHelper {
public static final String JAVA_14_SAX_DRIVER = "org.apache.crimson.parser.XMLReaderImpl";
public static final String JAVA_15_SAX_DRIVER = "com.sun.org.apache.xerces.internal.parsers.SAXParser";
public static String getSAXSDDriver() {
// check for version 1.4 and above
String ver = System.getProperty("java.version");
String parser = null;
try {
parser = SAXParserFactory.newInstance().newSAXParser()
.getXMLReader().getClass().getName();
XMLReader r = XMLReaderFactory.createXMLReader(parser);
} catch (SAXException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
// if (ver.startsWith("1.2") || ver.startsWith("1.3")) {
// parser = System.getProperty("org.xml.sax.driver");
// } else if (ver.startsWith("1.4")) {
// // jdk 1.4 uses crimson
// parser = JAVA_14_SAX_DRIVER;
// } else if (ver.startsWith("1.5")) {
// parser = JAVA_15_SAX_DRIVER;
// }
return parser;
}
public static Map<String,String> getProperties(ClassLoader cl, String resource) {
Properties properties = new Properties();
InputStream in = getConfigAsStream(cl, resource);
if (in != null) {
try {
properties.load(in);
} catch (IOException e) {
e.printStackTrace();
}
}
Map<String,String> map = new HashMap<String,String>();
for(Map.Entry<Object,Object> e:properties.entrySet()){
map.put(e.getKey().toString(), e.getValue().toString());
}
return map;
}
public static InputStream getConfigAsStream(ClassLoader cl, String resource) {
File f = new File(resource);
if (f.exists()) {
try {
return new FileInputStream(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} else {
if (!resource.startsWith("/")) {
resource = "/" + resource;
}
return cl.getResourceAsStream(resource);
}
return null;
}
}