view Changelog @ 15:9ad6ec2d09c3

Implemented restoring artifacts from database. artifacts/trunk@30 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 07 Sep 2009 10:06:23 +0000
parents 0d16d1bb2df0
children 635310c6a20e
line wrap: on
line source
2009-09-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
	Implemented loading of artifacts from database. If the last access of an 
	artifact is too long ago for its time to life, null is returned.

	* TODO: Added remark to implement a "killer" thread which periodically cleans the
	database from outdated artifacts and calls the endOfLife() method on those.

2009-09-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java:
	Properties wrapper for SQL statements. The properties are looked up
	in resorces /sql/DRIVER.properties (DRIVER is the name of the db driver class,
	lowercased and '.' replaced by '-'. 'org.h2.Driver' turns to
	'org-h2-driver.properties', e.g.

	* artifact-database/src/main/resources/sql/org-h2-driver.properties:
	SQL statements for H2 database.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
	Artifacts are proxies/wrapped by an special Artifact implementation
	to bound db activities transparentely to the Artifact. XXX: It has
	to be evaluated if a more direct concept like extending the Artifact API
	to store itself would be more robust for future implementations.
	TODO: Loading Artifact from db is not implemented yet.

2009-09-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
	New. Used to wrap database presentations of artifacts into artifacts.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
	New. Implements a ArtifactDatabase backed by Backend.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java:
	Removed empty last line.
	
	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java:
	Wired together Backend, ArtifactDatabaseImpl and FactoryBootstrap.

2009-09-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java:
	Typo in XPath expression.

2009-09-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java(setup):
	Added the setup() method to have symmetric counter part to endOfLife().

	* artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java(timeToLiveUntouched):
	Added this method to let the factory decide how long an artifact should live in ms.
	This is not a part of the Artifact itself because this is only evaluated once when
	the artifact is created.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java:
	New. Simple base class implementation of the Artifact interface.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java:
	New. Simple base class implementation of the ArtifactFactory interface. When setup()
	on instances of this class is called, it pull ttl, name, description and
	the artifact class name from the node given. See artifactdb-example-conf.xml
	for examples.

	* artifact-database/pom.xml: Cleaned up XML. 
	Introduced dependency to apache commons dbcp, used for pooling of the 
	database connections to artifact db. 
	Added parameters for the exec:exec goal to make the project
	startable without building packages.

	* artifact-database/doc/schema.sql: Removed AUTO_INCREMENT from primary key
	to avoid compatibility issues with other non-H2 databases (PostgreSQL, Oracle, ...)
	which have no or limited support for generated keys in the JDBC driver. Now
	using an explicit sequence. TTL ist now big int to bring the resolution to ms.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java:
	Refactored a bit to make the XPath access function usable on arbitrary XML
	documents and parts of.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java:
	New. Exposes DataSource from a apache dbcp connection pool configured by the
	global configuration file. See artifactdb-example-conf.xml for examples.
	TODO: Write some documentation about this.

	* artifact-database/doc/artifactdb-example-conf.xml: Adjusted to be a more realistic
	example config file. Added references to DefaultArtifact/DefaultArtifactFactory and
	demonstrate how to configure the connection pool.

	* TODO: Add remark to document the connection file.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
	Do not crash when config does not contain any factories.

2009-09-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java (getNodeXPath):
	New method to get a single node from configuration.

	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java (endOfLife):
	New method called when artifact is going to be removed from artifact data base.

2009-09-04	Tim Englich	<tim.englich@intevation.de>

	* src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java (loa,
	* src/main/java/de/intevation/artifacts/ArtifactFactory.java (setup):
	New Parameter for Setop to put the ArtifactFactoryNode into the setup routine.

2009-09-04	Tim Englich	<tim.englich@intevation.de>

	* pom.xml: Edited
	Buildplugins for Maven-Compiler and Maven-Eclipse Plugin integrated.

2009-09-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* artifact-database/doc/artifactdb-example-conf.xml: Example for artifact db
	configuration.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java:
	New. Default implementation of ArtifactContextFactory. Creates a DefaultArtifactContext.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java:
	New. Default implementation of ArtifactContext.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
	New. Class to bootstrap the context and the artifact factories.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: Bootstrap
	factories.

	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: New.
	Loads configuration as XML from a file. The file is specified by the system
	property "artifact.database.config" and defaults to "artifactdb-conf.xml".
	The configuration can be searched via XPath.

	* artifact-database/pom.xml: Made de.intevation.artifactdatabase.App the main
	class for start up.

	* TODO: Added remark to add logging to artifact database.

2009-09-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java:
	New. Factory for a global context in the artifact data base. Useful to
	create shared ressources for artifacts like caches et al.

	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java,
	artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java,
	artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java,
	artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Uses the
	global context more consistent.

	* artifact-database/doc/schema.sql: Using BINARY instead of BLOB to
	avoid external files for each artifact blob. See H2 documentation
	for details.

2009-09-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* artifact-database/doc/schema.sql: Schema to store artifacts
	in H2 databases.

	* artifact-database/pom.xml: Added dependencies to H2 and
	restlet.

	* pom.xml: Added repository to fetch restlet.

	* README: Describe how to create a H2 database to store artifacts.
	TODO: Make it more general because description assumes usage of
	a unixoid system.

2009-09-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* artifact-database/**: created new sub project for the artefact 
	database server.

	* pom.xml: Registered new sub project and made artifacts a
	sub project, too.

	* artifacts/pom.xml: Adjusted to make a artifacts a sub project.

2009-09-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java:
	Interface of the central component of the system.

	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
	Central place to store artifacts in.

	* artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java:
	Factory to build artifacts. Works together with ArtifactDatabase.

	* artifacts/pom.xml: Simple maven file to compile the project.

2009-09-01	Sascha L. Teichmann	<sascha.teichmann@intevation.de>

	* README, Changelog, Changes, NEWS, TODO: New. Initial setup

http://dive4elements.wald.intevation.org