Mercurial > dive4elements > framework
view ChangeLog @ 178:535e4ea2ef9b
Added code to get the attribute of a collection item
artifacts/trunk@1404 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 06 Mar 2011 10:27:16 +0000 |
parents | 77cd37a93fca |
children | 644fd11ddd9f |
line wrap: on
line source
2011-03-06 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added code to get the attribute of a collection item. * artifact-database/src/main/resources/sql/org-h2-driver.properties, artifact-database/src/main/resources/sql/org-postgresql-driver.properties: Added SQL statements to get the attribute column of a collection item given the collection and the artifact uuid. 2011-03-06 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added new method isValidIdentifier() to check if identifier is valid. Its a wrapper around StringUtils.checkUUID() to make it more symmetric to newIdentifier() which wraps StringUtils.newUUID(). 2011-03-04 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: TODO: Parse incoming document for an initial attribute of an collection item. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added code to add a collection item to a collection. * artifact-database/src/main/resources/sql/org-h2-driver.properties, artifact-database/src/main/resources/sql/org-postgresql-driver.properties: Added SQL statements to handle creation of collection items. 2011-03-04 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added code to delete a collection. * artifact-database/src/main/resources/sql/org-h2-driver.properties, artifact-database/src/main/resources/sql/org-postgresql-driver.properties: Added SQL statements to delete collections. 2011-03-04 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/SQLExecutor.java: New. Helper class to simplify the database connection stuff like get a connection, prepare statements, commit, rollback in error cases and so on. This reduces the code repetition and complexity in the backend significantly. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Use the new helper. (Should really have done this before!) * artifacts/src/main/java/de/intevation/artifacts/ArtifactCollectionFactory.java: Removed empty line at end of file. 2011-03-04 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/resources/sql/org-h2-driver.properties, artifact-database/src/main/resources/sql/org-postgresql-driver.properties: Argh! s/OUTER LEFT/LEFT OUTER/ solves the collection listing problem. 2011-03-04 Ingo Weinzierl <ingo@intevation.de> * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: Added a method that creates the CREATE document for creating new artifact collections. 2011-03-04 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/pom.xml: Lifted H2 to version 1.3.152. This hopefully eliminates the problem with the left outer join in listing of the user collections. 2011-03-04 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/resources/sql/org-h2-driver.properties, artifact-database/src/main/resources/sql/org-postgresql-driver.properties: Added new statement to extract the creation time for a given collection. XXX: listing of collection does not. Need to look at that. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollectionFactory.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactCollectionFactory.java artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java: Repaired parameter propagation of creation times and collection names. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Adjusted the backend to propagate the creation time and the collection names. 2011-03-04 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: The createCollection() method returns a document that will now contain the uuid of the created artifact collection. 2011-03-04 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: If there is no creation time of a collection, we just add an empty string to the collection node in listCollections(). A NullPointerException is avoided! 2011-03-03 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/resources/sql/org-h2-driver.properties, artifact-database/src/main/resources/sql/org-postgresql-driver.properties: Added SQL statements to list collections. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added code to make collections accessible. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Bind backend functionality to REST. 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Implemented the interface method addCollectionArtifact(). 2011-03-03 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/LazyBackendUser.java: New: Helper for lazy loading users. 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Introduced the ArtifactCollectionFactory as parameter of listCollections(). * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Implemented the interface method listCollections(). 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/doc/example-conf/conf.xml: Corrected the attribute name of the artifact collection in the example node for the artifact collection factory. 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Two things: the collection get names specified in the incoming document of the POST request, and the deleteCollection() interface method is now implemented. 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Bugfixes while collection creation: Create a Connection object before setting its attributes and corrected the order of the values inserted into the SQL statement. 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: The roles of users are stored into and loaded from database now. 2011-03-03 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/resources/sql/org-h2-driver.properties, artifact-database/src/main/resources/sql/org-postgresql-driver.properties: Added SQL statements to create collections. * artifacts/src/main/java/de/intevation/artifacts/ArtifactCollectionFactory.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java: Added name to collection. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollectionFactory.java: Adjusted factory api to cope with names. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Implemented create collection. * database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Adjusted the backend call. 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Changed the method signature of createCollection(). The Backend needs the ArtifactCollectionFactory to create new instances of artifact collections. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Implemented the interface method createCollection(). 2011-03-03 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/UserFactory.java: Throw out useless stuff from interface. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java: Adjusted default implementation. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Use user factory to create new users. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Call the backend with the new semantic. 2011-03-03 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added stubs for the collection handling. * artifact-database/doc/schema-pg.sql, artifact-database/doc/schema-h2.sql: Added missing attribute column to the collection item table. 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/doc/example-conf/conf.xml: Added a node that configures a default artifact collection factory. * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: The artifact collection factory (currently just a single one) is read from configuration and setup with its parameters. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Fetch the configured artifact collection factory from bootstrap. 2011-03-03 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, artifacts/src/main/java/de/intevation/artifacts/UserFactory.java: Propagate delete user errors correctly. 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java, artifacts/src/main/java/de/intevation/artifacts/UserFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Adapted the signature of deleteUser(). These methods don't await a User object any longer but just its identifier. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Performance improvement: there is no need to fetch the user that we want to delete from database before deleting it. Now, we just call the deleteUser() method of the UserFactory with the identifier of the user. 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Implemented the deleteUser() interface method. This operation will now remove the specified user, its collections and the artifacts stored in these collections. 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Bugfix: Replaced wrong SQL statements with the correct ones. 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Implemented the listUsers() interface method. This operation will now return a list of users as document. 2011-03-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Implemented the createUser() interface method. Calling this method will trigger the backend to create a new user described in the document given in the POST request. 2011-03-02 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added code to load all users from database. 2011-03-02 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added code to load user from database. * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: Added method to reconstruct XML documents from byte arrays and input streams 2011-03-02 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added code to delete a user, his/her collections and quarantee that the artifacts exclusivly owner by the user are going to be deleted from the artifact database. * artifact-database/src/main/resources/sql/org-h2-driver.properties, artifact-database/src/main/resources/sql/org-postgresql-driver.properties: Various SQL statements to cope with outdating artifacts and deleting users and collections. 2011-03-02 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseOutResource.java: New. Abstract class that should be used as the base class for the artifact and collection out resource. The most stuff to handle the output is done in this class. Concrete subclasses are needed to call the correct methods in the artifact database. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionOutResource.java: New. The OUT Resource for collections. It implements the two abstract methods of BaseOutResource. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java: This class inherits from BaseOutResource now. The most code has been removed. Just the two abstract methods of BaseOutResource are implemented here. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Added the CollectionOutResource. 2011-03-02 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java: New. A Rest resource that handles operations for a specific collection. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Added the CollectionResource. 2011-03-02 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ListCollectionsResource.java: New. A Rest resource that lists all collections of a specific user. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Added the ListCollectionsResource. 2011-03-02 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateCollectionResource.java: New. A Rest resource that might be used to create new collection that are owned by a specific user. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Added the CreateCollectionResource. 2011-03-02 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java, artifacts/src/main/java/de/intevation/artifacts/UserFactory.java: Removed needless imports. 2011-03-02 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Call database to create a new user. 2011-03-02 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/UserResource.java: New. A Rest resource that handles actions for a specific user. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Added the UserResource. 2011-03-02 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ListUsersResource.java: New. A Rest resource that lists all users provided by the artifact database. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Added the ListUsersResource. 2011-03-02 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: Added a convinience method to transform an document into a byte array. Useful for storing documents as blob database columns. 2011-03-02 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java: Wired Backend with DefaultUserFactory via the singleton. 2011-03-02 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/resources/sql/org-h2-driver.properties, artifact-database/src/main/resources/sql/org-postgresql-driver.properties: Fixed typo in keys. * artifacts/src/main/java/de/intevation/artifacts/UserFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java: Removed superfluous identifier in createUser(). * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added stubs for handling of users. 2011-03-02 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: Removed duplicated method to list users. 2011-03-02 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java: Added a new method getArtifactDatabase() that retrieves the artifact database which is used in all subclasses of this resource. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateUserResource.java: Use getArtifactDatabase() to retrieve the artifact database. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java: New. A resource that is used to create new users. The information about the user need to be included in the POST data of the request. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Added the CreateUserResource. 2011-03-02 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java, artifacts/src/main/java/de/intevation/artifacts/UserFactory.java: Added a setup method like the artifact factories have. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Added an import statement for the UserFactory that was missing here. * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: The setup() method of the UserFactory is called after the concrete factory class has been instantiated. 2011-03-02 Ingo Weinzierl <ingo@intevation.de> * artifacts/pom.xml: Bugfix: We are able to compile the artifacts package with local modifications again. 2011-03-01 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Made it a singleton. * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: Use the singleton Backend. 2011-03-01 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Setup the user factory. * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: New method to retrieve the user factory. 2011-03-01 Ingo Weinzierl <ingo@intevation.de> * artifact-database/doc/example-conf/conf.xml: Added a user-factory configuration. 2011-03-01 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: Added the registration of the UserFactory to the bootstrap process. 2011-03-01 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/resources/sql/org-h2-driver.properties, artifact-database/src/main/resources/sql/org-postgresql-driver.properties: Added SQL statements to handle users in database. * artifact-database/doc/schema-pg.sql, artifact-database/doc/schema-h2.sql: Added missing UNIQUE constraints. 2011-03-01 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUser.java: Added a new constructor to create new DefaultUsers with an identifier, a name and a role. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java: New. A default implementation of a UserFactory that creates DefaultUsers. 2011-03-01 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollectionFactory.java: A default implementation of an ArtifactCollectionFactory. 2011-03-01 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/doc/schema-pg.sql, artifact-database/doc/schema-h2.sql: Extended db scheme to cope with collections, collection items and users. 2011-03-01 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java: Typo fix. * artifacts/src/main/java/de/intevation/artifacts/ArtifactCollectionFactory.java: Added method to figure out TTL of a collection. 2011-03-01 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java: A default implementation of a ArtifactCollection. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUser.java: A default implementation of a User. 2011-03-01 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java: Added creation time. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Typo fixes. 2011-03-01 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: Added external API for users and collections. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Trivial implementation. 2011-03-01 Sascha L. Teichmann <sascha.teichmann@intevation.de> * src/main/java/de/intevation/artifacts/UserFactory.java, src/main/java/de/intevation/artifacts/ArtifactCollection.java: Added missing call contexts to API. 2011-03-01 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/ArtifactCollectionFactory.java: New: factory to create new collections. * artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java: New: Bundles artifacts to be owned by a user. * artifacts/src/main/java/de/intevation/artifacts/UserFactory.java: New: Creates a new user. * artifacts/src/main/java/de/intevation/artifacts/User.java: New: Model of a user. * artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Typo fix. 2011-02-18 Ingo Weinzierl <ingo@intevation.de> * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: Added XPath constants and some method that retrieve important nodes of the DESCRIBE document. 2011-02-16 Ingo Weinzierl <ingo@intevation.de> * artifacts-common/src/main/java/de/intevation/artifacts/common/ArtifactNamespaceContext.java: New. Added the namespace context here to make it available in clients as well. * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: New. This class provides functions that help working with the artifact protocol. Currently, there is just a single function to create a new CREATE document. 2011-02-10 Ingo Weinzierl <ingo@intevation.de> * artifacts-common/src/main/resources/de/intevation/artifacts/common/Common.gwt.xml: A module description that is used by GWT. * artifacts-common/pom.xml: The resulting jar archive of the 'package' target will now contain the compiled classes as well as the source files. Furthermore, the sources are compiled with Java-1.6. These two things are required for the jar to be included by GWT as module. 2011-02-10 Ingo Weinzierl <ingo@intevation.de> * artifacts-common/src/main/java/de/intevation/artifacts/common/model/User.java, artifacts-common/src/main/java/de/intevation/artifacts/common/model/DefaultUser.java: The interface description and a default implementation of a user. 2011-02-07 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java: Added a method to add new StateData objects to the State. * artifact-database/src/main/java/de/intevation/artifactdatabase/data/StateData.java: Added a new method to the StateData interface to set the value of the object. * artifact-database/src/main/java/de/intevation/artifactdatabase/data/DefaultStateData.java: New. A default implementation of the StateData. 2011-02-07 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java: Added new methods to append the current state and the reachable states to a root node. 2011-02-07 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/state/StateEngine.java: There is a new method that returns a state based on its ID. * artifact-database/src/main/java/de/intevation/artifactdatabase/transition/TransitionEngine.java: There is a new method that retrieves the reachable states of a specific state. 2011-02-04 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java: New. This class provides functions that should help creating the artifact protocol documents of the services describe, feed, advance and out. 2011-02-04 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java: Implements the method setup() - the ID and the description of the state are extracted at this place. * artifact-database/src/main/java/de/intevation/artifactdatabase/state/StateEngine.java: Added a method to retrieve the states of a specified artifact. * artifact-database/pom.xml: Added a dependency to the artifacts-common package. 2011-02-04 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java: New. An abstract implementation of a State. Some basic getter and setter methods are implemented - setup() and describe() need to be implemented by concrete subclasses. 2011-02-03 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/state/StateEngine.java, artifact-database/src/main/java/de/intevation/artifactdatabase/transition/TransitionEngine.java: Implementations to store the provided states and transitions of the artifact server. These engines should be filled at bootstrap. * artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java, artifact-database/src/main/java/de/intevation/artifactdatabase/transition/Transition.java, artifact-database/src/main/java/de/intevation/artifactdatabase/data/StateData.java: Interface descriptions for states, transitions and user inserted data. 2011-02-02 Ingo Weinzierl <ingo@intevation.de> * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: Corrected the package definition. 2011-02-02 Ingo Weinzierl <ingo@intevation.de> * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java, artifacts-common/pom.xml: New package. It will serve some classes and utilities that are used in the artifact-database package as well as in concrete artifact packages. * pom.xml: Added the artifacts-common package to be able to build all packages using just the upper level pom file. 2011-02-01 Ingo Weinzierl <ingo@intevation.de> * artifact-database/pom.xml: Upgraded Restlet from version 2.0-SNAPSHOT to the current stable version 2.0.4. * pom.xml: The SCM plugin will not check for local changes any longer. Otherwise, we aren't able to build the project with outstanding modifications. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: Set the max number of threads available for the REST server to 512. This is a _WORKAROUND_ for Restlet-2.0.4 which seems to have a bug while handling threads. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ImportResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ExportResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java: Renamed the packages of the Request and Response class that have been changed from Restlet 2.0-SNAPSHOT to 2.0.4. 2010-11-02 Ingo Weinzierl <ingo@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultPreferredLocale.java, artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java, artifact-database/src/main/java/de/intevation/artifactdatabase/App.java, artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java, artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Id.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ImportResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ExportResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServicesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java, artifacts/src/main/java/de/intevation/artifacts/CallContext.java, artifacts/src/main/java/de/intevation/artifacts/Service.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java, artifacts/src/main/java/de/intevation/artifacts/CallMeta.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java, artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java, artifacts/src/main/java/de/intevation/artifacts/Artifact.java, artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java, contrib/run.sh: Added a license header to each of these files. * LGPL.txt: License file for the GNU LGPL v2.1 2010-06-14 Ingo Weinzierl <ingo_weinzierl@web.de> * artifacts/pom.xml, pom.xml: Write svn revision to MANIFEST files while creating jar archives. 2010-04-28 Hans Plum <hans@intevation.de> * Tagging Version 1.0: Because of finishing all functional requirements, rename to 1.0 instead of 0.6 2010-04-28 Ingo Weinzierl <ingo.weinzierl@intevation.de> * Changes, NEWS, ChangeLog: Summarized activities. 2010-04-27 Ingo Weinzierl <ingo.weinzierl@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java: The path to database can be configured with a relative path now. 2010-04-17 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java, artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java, artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java: Brought all line lengths of non Javadoc lines below 80. 2010-03-28 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java, artifact-database/src/main/java/de/intevation/artifactdatabase/App.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java: Sorted imports. 2010-03-28 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java, TODO: Last bunch of javadoc. Possible TODO: check for typos and cross reference problems but the main work should be done with this commit. 2010-03-28 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java, artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: More javadoc, some code formatting. 2010-03-26 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultPreferredLocale.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: Even more javadoc. 2010-03-26 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultPreferredLocale.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java, artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Id.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ImportResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ExportResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServicesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java: More javadoc (fixes small glitches, too). 2010-03-26 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ImportResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ExportResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServicesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Added javadoc to the REST package (complete). TODO: Add javadoc to the remaining classes of the 'artifactdatabase'. 2010-03-26 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java, artifact-database/src/main/java/de/intevation/artifactdatabase/App.java, artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java: Added javadoc. * artifact-database/src/main/java/de/intevation/artifactdatabase/package.html, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/package.html: New. Package descriptions. 2010-03-26 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, artifacts/src/main/java/de/intevation/artifacts/CallContext.java, artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Removed trailing whitespace: find -name \*.java | xargs sed -i 's/[ \t]\+$//' 2010-03-26 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java, artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Completed Javadoc of sub module 'artifacts'. TODO: add Javadoc to module 'artifact-database' * artifacts/src/main/java/de/intevation/artifacts/CallContext.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java, artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java: Fixed vim modeline. 2010-03-25 Ingo Weinzierl <ingo.weinzierl@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: Added a method 'getTimeToLive()' which retrieves the current artifact's time to live. The ttl of an artifact is available where ever a CallContext object is existing. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added new field ttl of an artifact to an PersistentArtifact. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Implemented 'getTimeToLive()' in CallContextImpl. 2010-03-22 Ingo Weinzierl <ingo.weinzierl@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: Install a SLF4JBridgeHandler after logging is configured. This handler is used to route incoming java.util.logging logs to SLF4J. In our case, we route this incoming log to our log4j logger. * artifact-database/pom.xml: Added dependencies for SLF4J 1.5.11. 2010-03-22 Ingo Weinzierl <ingo.weinzierl@intevation.de> Issue208 (Remove special data of an 'out'-target before exporting artifacts) * artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Added a 'cleanup(Object context)' method to the interface definition of artifacts. This method should be called before exporting an artifact and should remove data stored on an artifact (or its current state) which have been written by an 'out'. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: Default implementation of cleanup method - nothing is done here yet. Override this method if an artifact needs to be cleaned before an export. * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java: Call cleanup method on the proxied artifact if proxied is existing. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Call cleanup method before exporting an artifact as xml. 2010-03-19 Ingo Weinzierl <ingo.weinzierl@intevation.de> Issue208 (Artifact gets a new identifier after being imported) * artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Added a new method setIdentifier(String identifier). * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: Default implementation of setIdentifier(String identifier) to give an artifact a new identifier. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Set a new identifier on an artifact after deserializing it. * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java: Set the identifier of the proxied artifact right after setting its own identifier. 2010-03-19 Ingo Weinzierl <ingo.weinzierl@intevation.de> Issue208 (Artifact import) * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ImportResource.java: New server resource to import an artifact from an incoming xml document. The resource is available as /import and accepts xml documents send via HTTP POST. * artifact-database/src/main/resources/sql/org-postgresql-driver.properties, artifact-database/src/main/resources/sql/org-h2-driver.properties: New sql statements to update an existing artifact. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: New method to import an artifact from an incoming xml document. The data contained in this document is decoded using the secret. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: New method to store an artifact into database or replace it if an artifact with the given id is already existing. * artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java: Removed method to convert a byte array into a string (this is done by Apache's Hex class in commons codec) and added a new method to convert a string into a byte array using Apache commons codec as well. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Register ImportResource to webserver. * artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java, artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Id.java: Converted the author javadocs. 2010-03-16 Ingo Weinzierl <ingo.weinzierl@intevation.de> Issue208 (Artifact export) * artifact-database/doc/example-conf/conf.xml: Added a section to configure a secret string used to identify artifact imports for security reason. Incoming artifact imports need to be identified with this secret, otherwise the import should be blocked. Xpath for this secret: '/artifact-database/export-secret/text()' * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: New attribute 'exportSecret' and some code to read the secret from configuration while application startup. * artifact-database/pom.xml: Added Apache Commons Codec library used to encode/decode artifact data. * artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java: New utilities class for frequently used string operations. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Added some methods for exporting artifacts as xml documents. The data part is base64 encoded. A secret key is used while encoding this data to verify artifact imports, later. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added an artifact loader interface used to deserialize artifacts. getArtifact() implements such an ArtifactLoader to return PersistentArtifacts. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ExportResource.java: New. ServerResource to export artifacts (innerGet). This resource is available under "/export/{uuid}" via HTTP-GET request and returns an artifact specified by uuid as xml document. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Register ExportResource to webserver. * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: Added method to export artifacts. * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: Reset bootstrap after application startup. 2010-03-11 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java, artifacts/src/main/java/de/intevation/artifacts/CallContext.java, artifacts/src/main/java/de/intevation/artifacts/Service.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java, artifacts/src/main/java/de/intevation/artifacts/CallMeta.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java, artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java, artifacts/src/main/java/de/intevation/artifacts/Artifact.java, artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java: Repaired the javadoc stuff. 2010-02-21 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultPreferredLocale.java, artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java, artifact-database/src/main/java/de/intevation/artifactdatabase/App.java, artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServicesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java, artifacts/src/main/java/de/intevation/artifacts/Service.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java, artifacts/src/main/java/de/intevation/artifacts/CallMeta.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java, artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java, artifacts/src/main/java/de/intevation/artifacts/Artifact.java, artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java: find -name \*.java | \ xargs sed -i \ -e 's/@author[ ]\+\([^(<]\+\)[<(]\([^>)]\+\)[>)]/@author <a href="mailto:\2">\1<\/a>/g' \ -e 's@[ ]\+</a>@</a>@g' Bring @author javadoc tags in form '@author <a href="john.doe@example.com">John Doe</a>' to make the sources to be able to be formatted with jalopy (http://jalopy.sourceforge.net). 2010-02-05 Ingo Weinzierl <ingo.weinzierl@intevation.de> Issue170 * artifact-database/pom.xml: Changed log4j version to 1.2.14 (later version causes errors and breaks while maven build process). 2010-02-01 Tim Englich <tim.englich@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java (innerPost): Put the XML-Document which was send by the client to the ArtifactDatabase.createArtifactWithFactory-Method. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java (createArtifact), artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java (createArtifactWithFactory), artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java (setup), artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java (setup), artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java (createArtifactWithFactory), artifacts/src/main/java/de/intevation/artifacts/Artifact.java (setup): Changed Method signatures so that it is possible to put the Document which will be send during the create Step of an Artifact to the Setup-Routine of an Artifact. Now it is possible to send further Informations to the Artifact using the XML-Document. This is nessesary for manipoulating the Artifact e.g. setting Parameters which should only be displaied or e.g. put an Geometry-Object into the Artifact which should limit the displayed results. 2010-01-27 Hans Plum <hans@intevation.de> RELEASE 0.4 * Changes, NEWS, ChangeLog: summarized activities. 2010-01-22 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java: New REST wrapper to call the service. Bound under '/service/{service}' where '{service}' is the name of the service as announced by '/services'. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Register new resource to web server. 2010-01-22 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServicesResource.java: New. Serves a list of available services under '/services' as XML. Structure is much like '/factories' with 's/artifact/service/'. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Register new resource to web server. 2010-01-22 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: Load service factories while bootstrapping the server. * artifact-database/doc/example-conf/conf.xml: Added examples for trivial services. 2010-01-22 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: Forgot to throw exception if service is not available. * artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java: Fixed indention. * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: Implemented service factory loading trivial. TODO: Load them from the configuration. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Serve the services. 2010-01-22 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java: Default implementation of a service. Useful as a base class. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java: Default implementation of a service factory. Modelled right after DefaultArtifactFactory. Useful as a base class. 2010-01-22 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/Service.java: New. Interface to describe a service. It takes XML documents and produces XML documents. * artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java: Factory to create services. Setup at startup. * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: Added methods to describe the available services and call them. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Implemented new ArtifactDatabase interface trivial. TODO: Setting it up from configuration, do the processing, register urls in REST server and so on. 2010-01-22 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: Added method 'toStream()' to copy a document into an output stream. 2010-01-15 Ingo Weinzierl <ingo.weinzierl@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java, artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Added a method 'getInternalArtifactFactory' to get an ArtifactFactory by its name. * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: Added 'getDatabase' method to get access to the ArtifactDatabase from context. 2010-01-12 Ingo Weinzierl <ingo.weinzierl@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java: Create document namespace aware and adapted XPath expressions for this. 2010-01-09 Ingo Weinzierl <ingo.weinzierl@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: Added convenient method to add attributes to nodes. Attributes have no prefix as default. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: Adapted xpath (added prefix) to find action and made the document which is created by this resource namespace aware. 2009-12-17 Sascha L. Teichmann <sascha.teichmann@intevation.de> RELEASE 0.3 * Changes, NEWS, ChangeLog: summarized activities. 2009-12-16 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: Added static method parseDocument(File) to load document from file. 2009-12-15 Ingo Weinzierl <ingo.weinzierl@intevation.de> Issue106 * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: Removed path to chart template which doesn't belong here. 2009-12-11 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java: Removed needless import. 2009-11-23 Ingo Weinzierl <ingo.weinzierl@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: Added path to chart template file and a new method to retrieve the configuration. 2009-11-23 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: Added a context dictionary accessible through putContextValue(key, value) and getContextValue(key). Purpose is make artifact calls stackable and transfer information through the call level transparently. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Adjusted default implementation of CallContext. * artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java: New. A general proxy class for artifacts in artifact databases. This class uses the extended call context semantics. The artifact calls (feed, describe, out, ...) are passed to a proxied artifact. If the proxied artifact decides to be replaced by some other artifact it has to to store a reference to the replacement artifact in the call context with putContextValue(ProxyArtifact.REPLACE_PROXY, my_new_artifact). After the call is finished the proxied object will change. This indirect callback mechanism is used to minimize side effects. The identifier() call is not forwarded to the proxied artifact to have a stable id. Limitations: This mechanism does not let you build real matroska (multi level) like artifact structures. This would only be possible if a kind of call context stack is introduced. 2009-11-13 Hans Plum <hans@intevation.de> RELEASE 0.2 * Changes, NEWS summarized 2009-11-11 Ingo Weinzierl <ingo.weinzierl@intevation.de> * HOWTO: Added HOWTO describing the setup of the environment (apache, tomcat, gnv). 2009-11-04 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/Artifact.java: describe() now may given an input XML document (which can be null to indicate that no input is given). * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: Adjusted to implemented the Artifact interface. * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: Pass through the optional XML input document to describe(). * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Implements the adjusted ArtifactDatabase interface. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: Now its also possible to send describe() as a POST request. The request body is handled as XML. 2009-10-21 Tim Englich <tim.englich@intevation.de> Issue 59: Make paths in configuration relativ * src/main/java/de/intevation/artifactdatabase/Config.java (replaceConfigDir): Applied patch from slt to set the Configuration Folder into the AbsoluteFileName issue59 2009-10-07 Sascha L. Teichmann <sascha.teichmann@intevation.de> RELEASE 0.1 * Changes, NEWS: Summaried changes. 2009-10-06 Sascha L. Teichmann <sascha.teichmann@intevation.de> * Changelog -> ChangeLog: Renamed to make eclipse happy. 2009-10-02 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java: Initial instance variable with given languages in constructor. 2009-10-02 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java: Better implementation for fetching the preferred locale. 2009-10-02 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/CallMeta.java: Added method to fetch preferred locale. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java: Trivial (and incorrect!) implementation. 2009-10-01 Sascha L. Teichmann <sascha.teichmann@intevation.de> Add i18n support via "Accept-Language" HTTP headers. * artifact-database/pom.xml: Using restlet 2.0 snapshot. M3 does not implement the required API, M4 is not in maven repo yet. TODO: Bring to M4 as soon it is released in maven repository. * contrib/run.sh: Adjusted to use the snapshot. * artifacts/src/main/java/de/intevation/artifacts/CallMeta.java: New. Meta information of a call, languages, e.g. * artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java: New. Model preferred languages. * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: Has now a reference to the meta information. * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: describe, feed, advance and out call contexts are now enriched with external meta data. * artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: Additional debug output how long the cleaner slept between cleanups. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultPreferredLocale.java: New. Default implementation of PreferredLocale. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java: New. Default implementation of CallMeta. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Adjusted to take the additional meta information. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java: Added a method to create a CallMeta object from web client information. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java: Call the artifact database with the meta data from there base class BaseResoure. 2009-10-01 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java, artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java, artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Removed trailing whitespace. 2009-10-01 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Removed needless imports. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: Be more verbose on output on which host the REST server is bound. 2009-09-30 Hans Plum <hans@intevation.de> * artifact-database/doc/example-conf/conf.xml, README: Fixed inconsistencies after changes in h2-configuraton. 2009-09-29 Sascha L. Teichmann <sascha.teichmann@intevation.de> * pom.xml, artifacts/pom.xml, artifact-database/pom.xml: Set source encoding to UTF-8. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: If '/artifact-database/rest-server/listen/text()' is given in conf.xml the value is used to bind REST server to that interface. * artifact-database/doc/example-conf/conf.xml: Added 'listen' to demo configuration. 2009-09-24 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/resources/sql/org-h2-driver.properties: Time delta calculation in SQL statement to figure out outdated artifacts was broken. 2009-09-24 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: Added debug output to make tracing of artifact lifecyle easier. 2009-09-23 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/doc/schema-pg.sql, artifact-database/doc/schema-h2.sql: Added column 'factory' to artifacts table to store the name of the creating factory. !!! !!! THIS BREAKS OLD ARTIFACT DATABASES! !!! !!! To update old databases issue at database prompt: !!! ALTER TABLE artifacts ADD COLUMN factory VARCHAR(256) NOT NULL; !!! * artifact-database/src/main/resources/sql/org-h2-driver.properties, artifact-database/src/main/resources/sql/org-postgresql-driver.properties: Fixed issue in SQL statements for touching artifacts. Fill factory name into artifact relation. * artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java: To allow different serialization models each ArtifactFactory has serializer for the artifacts. * artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java: Add method to return ArtifactSerializer. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java: Uses Java standard object serialisation. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java: Uses th DefaultArtifactSerializer as ArtifactSerializer * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: The serialisation method is select via the 'factory' column of the 'artifacts' table. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, artifact-database/src/main/java/de/intevation/artifactdatabase/App.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: Adjusted to fit the new serialisation model. 2009-09-23 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java: New. Base class to log RuntimeExceptions to log4j error log. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java: Adjusted to extend from BaseResource. 2009-09-21 Tim Englich <tim.englich@intevation.de> * Added some IDE-specific files to the Ignorelist. 2009-09-18 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/doc/schema.sql: removed. * artifact-database/doc/schema-h2.sql: re-added here. It is H2 specific. * artifact-database/doc/schema-pg.sql: New. Schema for PostgreSQL 8.3 + * artifact-database/src/main/resources/sql/org-postgresql-driver.properties: New. SQL statements for PostgreSQL. * artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java: XPath expressions to access config were wrong. Added some debug logging. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added some debug logging. * artifact-database/pom.xml: Added dependency to postgresql JDBC driver * contrib/run.sh: Added postgresql JDBC to CLASSPATH. 2009-09-16 Tim Englich <tim.englich@intevation.de> * src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java (represent) Edited: Switched from Get to Post communication. 2009-09-16 Tim Englich <tim.englich@intevation.de> * src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java (feed) Edited: Bug fixed: Now the method will call the feed Method of the used Artifact instead of the advance Method. 2009-09-15 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: More warning log output in POST case. 2009-09-15 Tim Englich <tim.englich@intevation.de> * src/main/java/de/intevation/artifactdatabase/Backend.java: Bug Fixed: Comparation for outdated Artifacts was Wrong. * src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java (represent): Warn-Logging Integrated for Exception analysys. 2009-09-14 Tim Englich <tim.englich@intevation.de> * src/main/java/de/intevation/artifacts/ArtifactFactory.java Edited: Make Objects Serializable * src/main/resources/sql/org-h2-driver.properties: Bug Fixed in SQL-Query 2009-09-13 Sascha L. Teichmann <sascha.teichmann@intevation.de> Refactored the persistent handling of the artifacts in the artifact database. When an artifact is called (describe, feed, advance, out) a new CallContext is given instead of the old Object context. CallContext.globalContext() returns the old Object context now. CallContext.afterCall() may be called from inside describe, feed, advance and out to tell the artifact database what to do after the processing of the specific call. The accepted values are: - NOTHING for doing nothing - TOUCH for just update the last access time - STORE for persisting the artifact. - BACKGROUND to signal that the artifact has started a background operation. After the background operation the artifact has to call CallContext.fromBackground() to signal the artifact database that the artifact needs to be touched or stored. !!! Without this call the artifact database assumes there !!! is still some background operation on this artifact !!! which prevents reclaiming resources * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: New. New API to cope with background processing. * artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Replaced old Object context with CallContext context. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: Adjusted. * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: For a better encapsulation of the persistence operations of the artifacts the database does not return artifacts any more. It delegates the describe, feed, advance and out call to internal structures. * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java: New. Simplifies handling of error conditions inside of artifact database. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Adjusted to new interface. Internally it handles the background API. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java: Adjusted to new artifact database interface (which greatly simplifies things) * artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: Artifacts in background are not removed from database any longer. * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: Little re-wirering need for new cleanup. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Simplified to do the SQL stuff only. The most infrastructure stuff is now done in ArtifactDatabaseImpl. * artifact-database/src/main/java/de/intevation/artifactdatabase/Id.java: New. Helper base class to enable filtering of background artifacts by there database id. * artifact-database/src/main/resources/sql/org-h2-driver.properties: Modified the INSERT statement to write the serialized artifact, too. 2009-09-12 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/Artifact.java(out): out() is now called with an java.io.Outputstream to place the output. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java: Adjusted. 2009-09-11 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/doc/example-conf/conf.xml: Added sleep time for cleanup thread. * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: Start cleanup thread at startup. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Make artifact restoring bit more robust, added ref to cleanup thread to do an immediate cleanup when dead artifact is found by lookup. * artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: New. The cleanup thread. It cleans up the artifact database perodically and calls the endOfLife() methods of the dead artifacts. Default cleanup interval is 5 minutes. * artifact-database/src/main/resources/sql/org-h2-driver.properties: Tuned SQL a bit to fetch only a 50 artifacts in search for outdated artifacts to avoid too much memory consumption. * contrib/run.sh: Little tweak to work with more than one commons-pool version installed. * TODO: Removed remarks about the now implemented killer thread and the moves XML stuff. * README: Changed text how to create a H2 database from command line only. XXX: This is still broken. The best way to set up the database by now is to start the Console client, connect to the database, c&p the schema.sql into the SQL text area and execute it. 2009-09-10 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java: New. Handler for 'out'. Reachable via HTTP GET '/artifact/{uuid}/{type}'. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java: New. Special representation for out. TODO: use streaming API. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: Regrouped imports. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Added handler for 'out' to routing table. 2009-09-10 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: Added handler for 'advance' and 'feed' to be called by HTTP POST '/artifact/{uuid}'. 2009-09-10 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: Added handler for 'describe' to be fetched by HTTP GET '/artifact/{uuid}'. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Add route to new describe handler. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Fixed problems with serialization of artifacts to backing database. 2009-09-10 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: Added method to get strings from XML documents via XPath. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: Used XMLUtils to create new XML documents. * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: Forgot to store backend in instance variable. * artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java: Added static instance of this class. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java: Forward call to ArtifactDatabase, do some error handling. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Treat problems with database errors more gracefully. * contrib/run.sh: Added dependencies to common-pool and common-dbcp. * artifact-database/doc/data/create-artifact.xml: New. example data set to create an artifact. Usage $ curl --data-binary @doc/data/create-artifact.xml -D - http://localhost:8181/create 2009-09-10 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java: Removed needless import. * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java, artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: Moved some XPath stuff from Config into XMLUtils. 2009-09-10 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifacts/src/main/java/de/intevation/artifacts/Artifact.java(setup): Added callback parameter in form of the creating factory. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: Adjusted to match new Artifact interface. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java: Call artifact.setup() with this. * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: Removed namespace stuff. * artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java: Created namespace stuff, need for XPath for e.g. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java: Use new namespace stuff. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: Added author. 2009-09-09 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: Added method newXPath() to create XPaths with namespace binding. * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: Uses new method from XMLUtils. 2009-09-09 Sascha L. Teichmann <sascha.teichmann@intevation.de> * trunk/artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java, trunk/artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java: Removed meta data from resources. They prevented serving the right results. * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Removed needless import. 2009-09-09 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java: New. Resource to create an artifact. Not working on artifact database yet. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Attached create to web server. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java: Added meta data to Get annotation. 2009-09-09 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/pom.xml: Added dependency to restlet.ext.xml for XML handling in representations. * contrib/run.sh: Adjusted to fit new dependency. * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java: New. Handle some boiler plate XML stuff. Move more stuff of this kind into this file. * TODO: Added remark to move more XML stuff into XMLUtils. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: Tell at startup on which port we are listing. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java: Representation to list the available factories. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Attach new factory listing to web app. 2009-09-09 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/doc/artifactdb-example-conf.xml: removed * artifact-database/doc/example-conf/conf.xml: Re-added here. The configuration is now found in a subdirectory set by the system property 'artifact.database.dir'. If this property is not set '~/.artitactdb' is used. This directory should contain a file 'conf.xml' with the configuration details. If the artifact database is started as a standalone the config directory is searched for 'log4j.properties' to configure the logging. The H2 database is also search in this directory with the name 'artifacts.db' if the connection url in config.xml is not overwritten. * artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: Refactored a bit to follow the new configuration policy. * artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java: Build default connection url as described. * artifact-database/doc/example-conf/log4j.properties: New. example logging config * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: Added some more logging infos. * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: Load the log4j configuration at startup and starts a REST standalone web server. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest: New. Package for REST binding. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: Convenience wrapper to start a standalone REST web server. * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Concrete REST application. TODO: attach restlets to interact with artifact database. * contrib/run.sh: Little start script to launch artifact database for test purpose from classes without the need to build packages. Background: The maven exec:exec goal does not work consistently for me (slt). At home it does, at work it doe not. Anyway. Usage: $ ./contrib/run.sh \ -Dartifact.database.dir=artifact-database/doc/example-conf/ \ de.intevation.artifactdatabase.App 2009-09-08 Tim Englich <tim.englich@intevation.de> * src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java : Edited Constants for Namespace-URL and Namespace-Prefix added 2009-09-08 Sascha L. Teichmann <sascha.teichmann@intevation.de> * artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java, artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java, artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java: Integrated log4j * artifact-database/pom.xml: Added dependency to log4j * TODO: Removed remark to integrate logging. 2009-09-07 Tim Englich <tim.englich@intevation.de> * src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: edited Bug fixed in XPath Expression. Now the Nodes and not the Text of the Nodes will be used instantiating the ArtifactFactory. 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