package com.isencia.passerelle.workbench.model.utils;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.util.Iterator;
import java.util.Properties;
public final class PropUtils {
////////////////////////////////////////////////////////////////////////
public final static Properties loadProperties(final String path) throws IOException {
final File file = new File(path);
return PropUtils.loadProperties(file);
}
////////////////////////////////////////////////////////////////////////
public final static Properties loadProperties(final File file) throws IOException {
if (!file.exists()) return new Properties();
return loadProperties(new FileInputStream(file));
}
public final static Properties loadProperties(final InputStream stream) throws IOException {
final Properties fileProps = new Properties();
try {
final BufferedInputStream in = new BufferedInputStream(stream);
fileProps.load(in);
} finally {
stream.close();
}
return fileProps;
}
////////////////////////////////////////////////////////////////////////
public final static Properties storeProperties(final Properties props,
final String path) throws IOException{
final File file = new File(path);
return PropUtils.storeProperties(props, file);
}
////////////////////////////////////////////////////////////////////////
public final static Properties storeProperties(final Properties props, final File file) throws IOException {
if (!file.getParentFile().exists()) file.getParentFile().mkdirs();
if (!file.exists()) file.createNewFile();
BufferedOutputStream out = null;
try {
final FileOutputStream os = new FileOutputStream(file);
out = new BufferedOutputStream(os);
props.store(out, "DAWB Properties. Please do not edit this file.");
} finally {
IOUtils.close(out,"Storing properties for file "+IOUtils.fileInfo(file));
}
return props;
}
public final static Properties storeKeys(final Properties props,
final File file) throws IOException{
if (!file.getParentFile().exists()) file.getParentFile().mkdirs();
if (!file.exists()) file.createNewFile();
PrintWriter out = null;
try {
out = new PrintWriter(new FileWriter(file));
final Iterator<?> it = props.keySet().iterator();
while(it.hasNext()) out.println((String)it.next());
} finally {
IOUtils.close(out,"Storing keys for file "+IOUtils.fileInfo(file));
}
return props;
}
public static final Properties loadProperties(final HttpURLConnection connection) throws IOException {
BufferedInputStream in = null;
final Properties urlProps = new Properties();
try {
final InputStream stream = connection.getInputStream();
in = new BufferedInputStream(stream);
urlProps.load(in);
} finally {
if (in!=null) {
IOUtils.close(in,"Loading properties from URL");
connection.disconnect(); // Must do for HTTP because servers have limited connections
}
}
return urlProps;
}
public static String getPropertiesAsString(Properties props) throws Exception {
final ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
props.store(out, " DAWB output properties");
} finally {
out.close();
}
return out.toString("8859_1");
}
}