<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE project PUBLIC "-//Brains2b.org//Project v0.31" "http://www.brains2b.org/project/v0.31/project.dtd">
<?xml-stylesheet type="text/xsl" href="http://www.brains2b.org/project/v0.31/project.xsl"?>
<project trackerid="15" date="13-07-2007">
	<name>ResX</name>
	<version>1.06</version>
	<status>stable</status>
	<startdate>22-11-2006</startdate>
	<description>ResX is a ResourceBundle implementation which makes use of a database connection.</description>
	<longdescription>
	This is by far the smallest component I made and does one simple thing: It overwrites java.util.ResourceBundle 
	to get the internationalistation information from a datasource instead of a properties file or class. Having written 
	java applications that extensively used a database, I did not find it very helpfull getting my resources from another source. 
	It supprised me that there is hardly any performance loss noticable getting resources from the database
	<p>The implementation stays pretty close to the ResourceBundle implementation and will check first for
	other types like <code>java.util.ListResourceBundle</code> and <code>java.util.PropertyResourceBundle</code>
	before checking for the database. Unfortunatly the getBundle() methods in ResourceBundle are final and cannot be reimplemented. 
	Therefor new methods where implemented getExtBundle(String) and getExtBundle(String,Locale) to get the information from the database.</p>
	</longdescription>
	<type>component</type>
	<usage>The use of ResX is simple: create the LOCALIZED_RESOURCE table
	from the scripts directory (there is a script for oracle and an ANSI-script). 
	<p>In your code add the appropriate JDBC connection information:</p>
	<code>System.setProperty("sql.driver","oracle.jdbc.driver.OracleDriver");
	System.setProperty("sql.url", "jdbc:oracle:thin:@server:1521:database");
	System.setProperty("sql.user","SCOTT");
	System.setProperty("sql.password","TIGER");</code>
	<p>You can also use a properties-file called <code>connection.properties</code> in the directory you start your application from
	which contains the properties as described above</p>
	<p>You can now load the resource bundle by simply calling:
	<BR/><code>ResourceBundle rb = ExtResourceBundle.getExtBundle("bundleName")</code></p>
	<p>As you can see getExtBundle() methods return a normal ResourceBundle which can be used
	as any other resource bundle</p>
	</usage>
	<files>
		<file>
			<name>ResX 1.06</name>
			<date>22-11-2006</date>
			<zip>ResX-1.06.zip</zip>
			<zip-src>ResX-src-1.06.zip</zip-src>
			<tar>ResX-1.06.tar.gz</tar>
			<tar-src>ResX-src-1.06.tar.gz</tar-src>
		</file>
		<file>
			<name>ResX 0.15</name>
			<date>19-04-2004</date>
			<zip>ResX-0.15.zip</zip>
			<zip-src/>
			<tar>ResX-0.15.tar.gz</tar>
			<tar-src/>
		</file>
	</files>
	<references>
		<document>
			<name>Examples for reimplementing ExtResourceBundle</name>
			<url>http://www.brains2b.org/project/ResX/resx-overwrite-howto.html</url>
		</document>
		<component name="Track" version="0.20+" offline="true"/>
		<component name="Babel" version="0.10+" offline="true"/>
	</references>
	<releases>
		<new version="1.06">
			<item>Changes to Manifest to include version</item>
			<item>Desynchronized the storage, using HashMap instead of Hashtable</item>
		</new>
		<new version="0.15">
			<item>Bug fixed in getKeys() which returned double keys from parent</item>
		</new>
	</releases>
	<document>
		<name>overwriting ResX</name>
		<url>http://www.brains2b.org/project/ResX/resx-overwrite-howto.html</url>
	</document>
</project>