/*
* Copyright Javelin Software, All rights reserved.
*/
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;
/**
* PropertiesUtil is used to load and save properties to files.
*
* @author Robin Sharp
*/
public class PropertiesUtil
{
public PropertiesUtil()
{
}
public static Map getByValue( Properties properties, String value )
{
Map map = new HashMap();
Iterator iter = properties.entrySet().iterator();
do
{
if(!iter.hasNext() )
break;
java.util.Map.Entry entry = (java.util.Map.Entry)iter.next();
if(entry.getValue().equals(value ) )
map.put(entry.getKey(), entry.getValue() );
} while(true );
return map;
}
public static Properties load( Properties properties, String fileName ) throws IOException
{
if(fileName == null )
{
throw new IllegalArgumentException( "FileName is not set." );
}
else
{
return load( properties, new File(fileName ) );
}
}
public static Properties load( Properties properties, File file ) throws IOException
{
if(file == null )
{
throw new IllegalArgumentException( "File is not set." );
}
else
{
return load( properties, ((InputStream ) ( new FileInputStream(file ) )) );
}
}
public static Properties load( Properties properties, URL url ) throws IOException
{
if( url == null )
{
throw new IllegalArgumentException( "Url is not set." );
}
else
{
URLConnection connection = url.openConnection();
return load( properties, connection.getInputStream() );
}
}
public static Properties load( Properties properties, Class relativeClass, String relativeFileName ) throws IOException
{
if(relativeClass == null )
{
throw new IllegalArgumentException( "Relative Class is not set." );
}
if(relativeFileName == null )
{
throw new IllegalArgumentException( "Relative File Name is not set." );
}
else
{
return load( properties, relativeClass.getResourceAsStream(relativeFileName ) );
}
}
public static Properties load( Properties properties, InputStream inputStream ) throws IOException
{
try
{
if( properties == null )
{
throw new IllegalArgumentException( "Properties is not set." );
}
if( inputStream == null )
{
throw new IllegalArgumentException( "InputStream is not set." );
}
properties.load( new BufferedInputStream(inputStream ) );
}
finally
{
if(inputStream != null )
inputStream.close();
}
return properties;
}
public static void store( Properties properties, String fileName ) throws IOException
{
if(fileName == null )
{
throw new IllegalArgumentException( "FileName is not set." );
}
else
{
store( properties, new File(fileName ) );
return;
}
}
public static void store( Properties properties, File file )
throws IOException
{
if(file == null )
{
throw new IllegalArgumentException( "File is not set." );
} else
{
store( properties, ((OutputStream ) ( new FileOutputStream(file ) )) );
return;
}
}
public static void store( Properties properties, URL url ) throws IOException
{
if( url == null )
{
throw new IllegalArgumentException( "Url is not set." );
} else
{
URLConnection connection = url.openConnection();
connection.setDoOutput(true );
store( properties, connection.getOutputStream() );
return;
}
}
public static void store( Properties properties, Class relativeClass, String relativeFileName )
throws IOException
{
if(relativeClass == null )
throw new IllegalArgumentException( "Relative Class is not set." );
if(relativeFileName == null )
{
throw new IllegalArgumentException( "Relative File Name is not set." );
}
else
{
String className = relativeClass.getName().substring(relativeClass.getName().lastIndexOf( "." ) + 1);
URL url = relativeClass.getResource(String.valueOf(String.valueOf( className ) ).concat( ".class" ) );
String fileName = url.getFile();
fileName = String.valueOf(fileName.substring(1, fileName.length() - className.length() - 6) ) + String.valueOf(relativeFileName );
store( properties, fileName );
return;
}
}
public static void store( Properties properties, OutputStream outputStream ) throws IOException
{
try
{
if( properties == null )
{
throw new IllegalArgumentException( "Properties is not set." );
}
if( outputStream == null )
{
throw new IllegalArgumentException( "OutputStream is not set." );
}
properties.store( new BufferedOutputStream( outputStream ), null );
}
finally
{
if( outputStream != null )
{
outputStream.close();
}
}
}
public static void main(String args[])
{
try
{
System.out.println(load( new Properties(), "C:/data/ccm_wa/dordev/Countrywide~csdrzs/Countrywide/src/com/javelin/util/test.properties" ) );
System.out.println(load( new Properties(), new File( "C:/data/ccm_wa/dordev/Countrywide~csdrzs/Countrywide/src/com/javelin/util/test.properties" ) ));
System.out.println(load( new Properties(), new URL( "file:///C:/data/ccm_wa/dordev/Countrywide~csdrzs/Countrywide/src/com/javelin/util/test.properties" ) ));
System.out.println(load( new Properties(), PropertiesUtil.class, "test.properties" ) );
Properties properties = new Properties();
properties.put( "1", "2" );
properties.put( "2", "2" );
properties.put( "3", "3" );
store( properties, "C:/data/ccm_wa/dordev/Countrywide~csdrzs/Countrywide/src/com/javelin/util/test1.properties" );
store( properties, new File( "C:/data/ccm_wa/dordev/Countrywide~csdrzs/Countrywide/src/com/javelin/util/test2.properties" ) );
store( properties, PropertiesUtil.class, "test4.properties" );
System.out.println(getByValue( properties, "2" ) );
}
catch(Exception e )
{
e.printStackTrace();
}
}
}