felix@438: 2012-10-17	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@438: 
felix@438: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/FacetActivity.java:
felix@438: 	  More documentation and debugging output.
felix@438: 
felix@436: 2012-10-16	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@436: 
felix@436: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/FacetActivity.java:
felix@436: 	  Documentation of a somewhat important part.
felix@436: 
felix@436: 2012-10-08	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@436: 
felix@436: 	* flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/ExtremeAccess.java,
felix@436: 	  flys-artifacts/src/main/java/de/intevation/flys/artifacts/charts/TimeseriesStepChart.java,
felix@436: 	  flys-artifacts/src/main/java/de/intevation/flys/utils/DoubleUtil.java:
felix@436: 	  Doc.
felix@436: 
teichmann@435: 2012-10-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
teichmann@435: 
teichmann@435: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/FileTools.java:
teichmann@435: 	  Made extracting of zip archives more robust, lose file handles in case
teichmann@435: 	  of error and fix a bug when creating sub dirs.
teichmann@435: 
teichmann@433: 2012-09-30	Björn Ricks	<bjoern.ricks@intevation.de>
teichmann@433: 
teichmann@433: 	* pom.xml: Comment out build number plugin
teichmann@433: 	* .hgignore: First hgignore.
teichmann@433: 
bjoern@432: 2012-09-29	Björn Ricks	<bjoern.ricks@intevation.de>
bjoern@432: 
bjoern@432: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
bjoern@432: 	  Check if roles from database is null. Fix for issue849.
bjoern@432: 
bjoern@425: 2012-09-26	Björn Ricks	<bjoern.ricks@intevation.de>
bjoern@425: 
bjoern@425: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
bjoern@425: 	  New method addOutput to allow subclasses to add Output object manually.
bjoern@425: 
ingo@424: 2012-09-17  Ingo Weinzierl <ingo@intevation.de>
ingo@424: 
ingo@424: 	Tagged RELEASE 2.9.1
ingo@424: 
sascha@423: 2012-09-10	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@423: 
sascha@423: 	* artifacts/pom.xml, pom.xml: source 1.5 -> 1.6
sascha@423: 	  (@Override annotations for interface implementations is 1.6).
sascha@423: 
ingo@422: 2012-09-07	Björn Ricks	<bjoern.ricks@intevation.de>
ingo@422: 
ingo@422: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
ingo@422: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
ingo@422: 	  Fix queries for finding a user.
ingo@422: 
ingo@422: 2012-09-07  Ingo Weinzierl <ingo@intevation.de>
ingo@422: 
ingo@422: 	Tagged RELEASE 2.9
ingo@422: 
felix@419: 2012-08-30	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@419: 
felix@419: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultSection.java:
felix@419: 	  Use LinkedHashMap to keep insertion order of attributes.
felix@419: 
christian@417: 2012-08-27	Christian Lins	<christian.lins@intevation.de>
christian@417: 
christian@417: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
christian@417: 	  artifacts/src/main/java/de/intevation/artifacts/CallContext.java:
christian@417: 	  Fix for NPE on empty user database.
christian@417: 
bjoern@416: 2012-08-24	Björn Ricks	<bjoern.ricks@intevation.de>
bjoern@416: 
bjoern@416: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java,
bjoern@416: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FindUserResource.java:
bjoern@416: 	  Add REST service to be able to find a user by its account name.
bjoern@416: 
bjoern@415: 2012-08-24	Björn Ricks	<bjoern.ricks@intevation.de>
bjoern@415: 
bjoern@415: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
bjoern@415: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
bjoern@415: 	  Implement findUser method. The findUser method in ArtifactDatabase
bjoern@415: 	  converts a User object into its XML representation.
bjoern@415: 
bjoern@414: 2012-08-24	Björn Ricks	<bjoern.ricks@intevation.de>
bjoern@414: 
bjoern@414: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
bjoern@414: 	  artifact-database/src/main/resources/sql/org-h2-driver.properties,
bjoern@414: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
bjoern@414: 	  Implement method to find/get a user by its account name.
bjoern@414: 
bjoern@412: 2012-08-23	Björn Ricks	<bjoern.ricks@intevation.de>
bjoern@412: 
bjoern@412: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
bjoern@412: 	  Also add the account information when listing users.
bjoern@412: 
bjoern@411: 2012-08-23	Björn Ricks	<bjoern.ricks@intevation.de>
bjoern@411: 
bjoern@411: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
bjoern@411: 	  Add account information to createUser
bjoern@411: 
bjoern@409: 2012-08-23	Björn Ricks	<bjoern.ricks@intevation.de>
bjoern@410: 
bjoern@410: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
bjoern@410: 	  Read the account information from the database.
bjoern@410: 
bjoern@410: 2012-08-23	Björn Ricks	<bjoern.ricks@intevation.de>
bjoern@410: 
bjoern@409: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/LazyBackendUser.java,
bjoern@409: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java,
bjoern@409: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUser.java:
bjoern@409: 	  Extend user class implementations to handle account information.
bjoern@409: 
bjoern@408: 2012-08-23	Björn Ricks	<bjoern.ricks@intevation.de>
bjoern@408: 
bjoern@408: 	* artifacts/src/main/java/de/intevation/artifacts/UserFactory.java,
bjoern@408: 	  artifacts/src/main/java/de/intevation/artifacts/User.java:
bjoern@408: 	  Extend user interfaces to handle account information.
bjoern@408: 
bjoern@407: 2012-08-23	Björn Ricks	<bjoern.ricks@intevation.de>
bjoern@407: 
bjoern@407: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
bjoern@407: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
bjoern@407: 	  Update sql user queries to add the account column.
bjoern@407: 
bjoern@406: 2012-08-23	Björn Ricks	<bjoern.ricks@intevation.de>
bjoern@406: 
bjoern@406: 	* artifact-database/doc/schema-pg.sql,
bjoern@406: 	  artifact-database/doc/schema-h2.sql:
bjoern@406: 	  Add a account column to the users table.
bjoern@406: 
sascha@405: 2012-07-29	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@405: 
sascha@405: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/FacetActivity.java:
sascha@405: 	  Refactored registry to use a Chain-of-responsibility pattern. This allows
sascha@405: 	  de-centralized facet activity treatment like in the facet producing states.
sascha@405: 
sascha@404: 2012-07-29	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@404: 
sascha@404: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/FacetActivity.java:
sascha@404: 	  Made Registry.getInstance() access static.
sascha@404: 
sascha@403: 2012-07-29	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@403: 
sascha@403: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/FacetActivity.java:
sascha@403: 	  New. Implementors of this interface can decide if a facet should be initially
sascha@403: 	  active or not. Contains a registry singleton.
sascha@403: 
ingo@402: 2012-07-27  Ingo Weinzierl <ingo@intevation.de>
ingo@402: 
ingo@402: 	Tagged trunk as '2.8.1'
ingo@402: 
ingo@402: 2012-07-19	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
ingo@402: 
ingo@402: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/StringUtils.java:
ingo@402: 	  Added concat() to join two String arrays.
ingo@402: 
ingo@402: 2012-07-17	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
ingo@402: 
ingo@402: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java,
ingo@402: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java,
ingo@402: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java,
ingo@402: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollectionFactory.java,
ingo@402: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/transition/TransitionEngine.java,
ingo@402: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java,
ingo@402: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
ingo@402: 	  Doc fixes.
ingo@402: 
ingo@402: 2012-07-16  Ingo Weinzierl <ingo@intevation.de>
ingo@402: 
ingo@402: 	Tagged trunk as '2.8'
ingo@402: 
sascha@401: 2012-07-19	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@401: 
sascha@401: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/StringUtils.java:
sascha@401: 	  Added concat() to join two String arrays.
sascha@401: 
felix@400: 2012-07-17	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@400: 
felix@400: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java,
felix@400: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java,
felix@400: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java,
felix@400: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollectionFactory.java,
felix@400: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/transition/TransitionEngine.java,
felix@400: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java,
felix@400: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
felix@400: 	  Doc fixes.
felix@400: 
ingo@399: 2012-07-16  Ingo Weinzierl <ingo@intevation.de>
ingo@399: 
ingo@399: 	Tagged trunk as '2.8'
ingo@399: 
sascha@398: 2012-07-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@398: 
sascha@398: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultSettings.java,
sascha@398: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultSection.java,
sascha@398: 	  artifacts/src/main/java/de/intevation/artifacts/DataProvider.java,
sascha@398: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java:
sascha@398: 	  Removed same package imports.
sascha@398: 
sascha@397: 2012-07-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@397: 
sascha@397: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/StringUtils.java:
sascha@397: 	  Added contains(String needle, String [] haystack) method.
sascha@397: 
ingo@396: 2012-07-03  Ingo Weinzierl <ingo@intevation.de>
ingo@396: 
ingo@396: 	* artifact-database/.settings/org.eclipse.jdt.core.prefs: Removed from
ingo@396: 	  version control (Eclipse configurations should not be in SVN!).
ingo@396: 
felix@395: 2012-02-26	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@395: 
felix@395: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
felix@395: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/UserResource.java,
felix@395: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java:
felix@395: 	  Cosmetics, doc.
felix@395: 
sascha@394: 2012-06-23	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@394: 
sascha@394: 	* artifact-database/src/main/java/de/intevation/**/*.java:
sascha@394: 	  Removed trailing whitespace.
sascha@394: 
ingo@393: 2012-06-05  Ingo Weinzierl <ingo@intevation.de>
ingo@393: 
ingo@393: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
ingo@393: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
ingo@393: 	  Added some more debug output during the process of removing Artifacts
ingo@393: 	  and Collections with the DatabaseCleaner.
ingo@393: 
sascha@392: 2012-06-01	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@392: 
sascha@392: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
sascha@392: 	  Remove extra <map></map> from the XML generated by JSON lists containing only 
sascha@392: 	  objects.
sascha@392: 
ingo@390: 2012-05-27  Ingo Weinzierl <ingo@intevation.de>
ingo@390: 
ingo@390: 	Tagged trunk as '2.7'
ingo@390: 
ingo@389: 2012-05-18  Ingo Weinzierl <ingo@intevation.de>
ingo@389: 
ingo@389: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/DateUtils.java:
ingo@389: 	  New utility class that provides functions that helps working with dates.
ingo@389: 
ingo@388: 2012-05-15  Ingo Weinzierl <ingo@intevation.de>
ingo@388: 
ingo@388: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/model/KVP.java:
ingo@388: 	  New class to store generic keys and values.
ingo@388: 
raimund@387: 2012-05-07  Raimund Renkert <raimund.renkert@intevation.de>
raimund@387: 
raimund@387: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
raimund@387: 	  Added method to create a document from string.
raimund@387: 
ingo@386: 2012-05-03  Ingo Weinzierl <ingo@intevation.de>
ingo@386: 
ingo@386: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java,
ingo@386: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@386: 	  Defined and implemented a method getHelpText().
ingo@386: 
sascha@385: 2012-05-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@385: 
sascha@385: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XSLTransformer.java:
sascha@385: 	  Widen parameters to store more than strings.
sascha@385: 
sascha@384: 2012-04-27	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@384: 
sascha@384: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/JSON.java:
sascha@384: 	  Added toJSONString() method.
sascha@384: 
sascha@384: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
sascha@384: 	  Fixed building XML documents from JSON strings.
sascha@384: 	
raimund@383: 2012-04-25  Raimund Renkert <raimund.renkert@intevation.de>
raimund@383: 
raimund@383: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/FileTools.java:
raimund@383: 	  Added method to extract zip archives to a specified directory.
raimund@383: 
sascha@382: 2012-04-19	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@382: 
sascha@382: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XSLTransformer.java:
sascha@382: 	  New. Added new XSLT processor similiar to old GNV one.
sascha@382: 
sascha@381: 2012-04-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@381: 
sascha@381: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/JSON.java:
sascha@381: 	  New. JSON parser from Artefact Server NG (which relies on JSON more heavily).
sascha@381: 
sascha@381: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
sascha@381: 	  Added method to convert JSON to XML. This is needed by the client which
sascha@381: 	  internally uses JSON to talk to the server which services only understands
sascha@381: 	  XML atm.
sascha@381: 	
sascha@380: 2012-04-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@380: 
sascha@380: 	Modified services so that they are now able to return more than just
sascha@380: 	XML documents. Needed if you want to return e.g. a PNG image from a service.
sascha@380: 
sascha@380: 	* artifacts/src/main/java/de/intevation/artifacts/Service.java:
sascha@380: 	  A service now returns a tuple (data, MIME type).
sascha@380: 
sascha@380: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java,
sascha@380: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@380: 	  Adjusted calls.
sascha@380: 
sascha@380: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java:
sascha@380: 	  Returns a DefaultService.Output by default.
sascha@380: 
sascha@380: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/XMLService.java: New.
sascha@380: 	  Convenience sub class if DefaultService to produce XML documents. Old
sascha@380: 	  Services should derive from this class now to main compatibility.
sascha@380: 
sascha@380: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java:
sascha@380: 	  Adjusted to handle the new Output tuples.
sascha@380: 
sascha@380: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ByteArrayRepresentation.java:
sascha@380: 	  New. Wraps a byte array as a Restlet representation.
sascha@380: 
ingo@379: 2012-03-30  Ingo Weinzierl <ingo@intevation.de>
ingo@379: 
ingo@379: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java:
ingo@379: 	  Avoid adding duplicated facets into the output in addFacet().
ingo@379: 
felix@378: 2012-02-10	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@378: 
felix@378: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java,
felix@378: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java,
felix@378: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java:
felix@378: 	  Pass context when asking facet for keys to write on 'blackboard'.
felix@378: 
ingo@377: 2012-02-09  Ingo Weinzierl <ingo@intevation.de>
ingo@377: 
ingo@377: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java:
ingo@377: 	  Added a method setFacetDescription() which sets an alternative
ingo@377: 	  description for the facet. getFacetDescription() will now return the
ingo@377: 	  Facet's descritpion itself if no alternative description has been set;
ingo@377: 	  otherwise the alternative description.
ingo@377: 
sascha@376: 012-02-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@376: 
sascha@376: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/StringUtils.java(join):
sascha@376: 	  Added static method to join strings with a separator.
sascha@376: 
sascha@376: 012-01-30	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@375: 
sascha@375: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java:
sascha@375: 	  Added Override annotations.
sascha@375: 
ingo@374: 2012-01-30  Ingo Weinzierl <ingo@intevation.de>
ingo@374: 
ingo@374: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/StateEngine.java:
ingo@374: 	  Added a method that returns a StateData objects of a specific Artifact
ingo@374: 	  based on the Artifact's StateData's name.
ingo@374: 
ingo@372: 2012-01-30  Ingo Weinzierl <ingo@intevation.de>
ingo@372: 
ingo@372: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@372: 	  Bugfix: search for StateData objects by name only the State has
ingo@372: 	  StateData objects set.
ingo@372: 
ingo@371: 2012-01-30  Ingo Weinzierl <ingo@intevation.de>
ingo@371: 
ingo@371: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@371: 	  Added methods to extract the default value for a min and max item.
ingo@371: 
ingo@370: 2012-01-18  Ingo Weinzierl <ingo@intevation.de>
ingo@370: 
ingo@370: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@370: 	  Added methods to retrieve the min and max values of a data item.
ingo@370: 
sascha@369: 2012-01-16	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@369: 
sascha@369: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/FileTools.java:
sascha@369: 	  Replaced legacy java.util.Stack with java.util.Deque.
sascha@369: 
felix@368: 2012-01-16	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@368: 
felix@368: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java,
felix@368: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java,
felix@368: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java,
felix@368: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollectionFactory.java,
felix@368: 	  artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java,
felix@368: 	  artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
felix@368: 	  Cosmetics.
felix@368: 
sascha@366: 2012-01-11	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@366: 
sascha@366: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java:
sascha@366: 	  Instance vars customValues and dataProviders are now of type Map 
sascha@366: 	  and not HashMap.
sascha@366: 
ingo@365: 2012-01-09  Ingo Weinzierl <ingo@intevation.de>
ingo@365: 
ingo@365: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java,
ingo@365: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@365: 	  Added the owner Artifact as further parameter to initialize().
ingo@365: 
ingo@364: 2012-01-09  Ingo Weinzierl <ingo@intevation.de>
ingo@364: 
ingo@364: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/FileTools.java:
ingo@364: 	  Added new functions to copy files (copyFile()) and to copy directories
ingo@364: 	  (copyDirectory()).
ingo@364: 
ingo@363: 2012-01-09  Ingo Weinzierl <ingo@intevation.de>
ingo@363: 
ingo@363: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java,
ingo@363: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@363: 	  Added an initialize() method which might be used to initialize the State
ingo@363: 	  based on model Artifact.
ingo@363: 
felix@362: 2011-12-16	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@362: 
felix@362: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java:
felix@362: 	  (getDataProvider): Never return null.
felix@362: 
ingo@361: 2011-12-16  Ingo Weinzierl <ingo@intevation.de>
ingo@361: 
ingo@361: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Output.java,
ingo@361: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java:
ingo@361: 	  Added a new method setFacets(List<Facet>) to replace an existing list of
ingo@361: 	  Facets.
ingo@361: 
ingo@360: 2011-12-14  Ingo Weinzierl <ingo@intevation.de>
ingo@360: 
ingo@360: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Attribute.java:
ingo@360: 	  Added a setValue(Object) method and modified the signature of toXML()
ingo@360: 	  which now returns a Node.
ingo@360: 
ingo@360: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultAttribute.java:
ingo@360: 	  New. A default implementation of Attribute.
ingo@360: 
ingo@359: 2011-12-14  Ingo Weinzierl <ingo@intevation.de>
ingo@359: 
ingo@359: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Settings.java:
ingo@359: 	  Added a removeSection(Section) method.
ingo@359: 
ingo@359: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Section.java:
ingo@359: 	  Improved the interface to allow section having subsections. Therefore,
ingo@359: 	  addSubsection(Section), getSubsectionCount() and getSubsection(int) have
ingo@359: 	  been added. In addition, a getId() method has been added which is used
ingo@359: 	  in toXML() to create a new DOM Node. The Node name is the result of
ingo@359: 	  getId().
ingo@359: 
ingo@359: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultSettings.java,
ingo@359: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultSection.java:
ingo@359: 	  Default implementations for Settings and Section.
ingo@359: 
ingo@358: 2011-12-14  Ingo Weinzierl <ingo@intevation.de>
ingo@358: 
ingo@358: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Settings.java:
ingo@358: 	  An interface that describes a flat API for specifying settings for
ingo@358: 	  something. A Settings object can store one or more Section instances and
ingo@358: 	  defines a toXML() operation that should append a XML representation of
ingo@358: 	  itself to a given parent Node.
ingo@358: 
ingo@358: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Section.java:
ingo@358: 	  This interface is used to describe an API for storing and retrieving
ingo@358: 	  Attribute objects. Just as the Settings interface, it defines a toXML()
ingo@358: 	  operation that should append a XML representation of itself to a given
ingo@358: 	  parent Node.
ingo@358: 
ingo@358: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Attribute.java:
ingo@358: 	  The interface for concrete attributes in a Section instance. An Attribute
ingo@358: 	  is the placed on the lowest level of the Settings hierachy and should be
ingo@358: 	  used to save concrete key value pairs. Even the Attribute defines the
ingo@358: 	  toXML() operation described above.
ingo@358: 
ingo@358: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Output.java:
ingo@358: 	  Added a getSettings() and setSettings(Settings) operation.
ingo@358: 
ingo@358: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java:
ingo@358: 	  A DefaultOutput is now able to store a Settings instance. It implements
ingo@358: 	  getSettings() and setSettings(Settings) defined in the Output interface.
ingo@358: 
felix@357: 2011-12-09	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@357: 
felix@357: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java,
felix@357: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java:
felix@357: 	  (getDataProviderKeys): Added parameter artifact.
felix@357: 
felix@357: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java:
felix@357: 	  Pass artifact to changed getDataProviderKeys of Facet.
felix@357: 
felix@357: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java:
felix@357: 	  (getDataProvider): Never return null, empty list instead.
felix@357: 
felix@356: 2011-11-30	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@356: 
felix@356: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java
felix@356: 	  (getFacetDescription): New, access facets description.
felix@356: 
felix@355: 2011-11-30	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@355: 
felix@355: 	Added convenienve bundle of artifact and facet that implements
felix@355: 	DataProvider. This will help keeping things together in the upcoming
felix@355: 	inter-facet pre-rendering communication ('blackboard') phase.
felix@355: 
felix@355: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java:
felix@355: 	  New class, keeping together an artifact and a facet (thus, should
felix@355: 	  only have a short live span). Only implementation of the new
felix@355: 	  DataProvider interface.
felix@355: 
felix@354: 2011-11-30	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@354: 
felix@354: 	Extended CallContext to also act as a blackboard/service broker.
felix@354: 
felix@354: 	* artifacts/src/main/java/de/intevation/artifacts/CallContext.java
felix@354: 	  (getDataProvider,registerDataProvider): New functions to register/
felix@354: 	  consume data providers.
felix@354: 
felix@354: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java
felix@354: 	  (getDataProvider,registerDataProvider): Implemented.
felix@354: 
felix@352: 2011-11-30	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@352: 
felix@352: 	Added DataProvider interface that defines api for inter-facet
felix@352: 	communication.
felix@352: 
felix@352: 	* artifacts/src/main/java/de/intevation/artifacts/DataProvider.java:
felix@352: 	  New interface to prepare inter-facet pre-rendering communication
felix@352: 	  phase ('blackboard').
felix@352: 
felix@351: 2011-11-30	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@351: 
felix@351: 	Prepare inter-facet pre-rendering communication ('blackboard') phase.
felix@351: 
felix@351: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java
felix@351: 	  (getDataProviderKeys,provideBlackboardData): Extended interface to
felix@351: 	  allow easy integration of blackboard mechanism (inter-facet
felix@351: 	  pre-rendering communication).
felix@351: 
felix@351: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java
felix@351: 	  (getDataProviderKeys,provideBlackboardData): Trivial implementation.
felix@351: 	  The DefaultFacet will not talk to other facets during inter-facet
felix@351: 	  pre-rendering ("blackboard") phase. Cosmetics, docs.
felix@351: 
sascha@350: 2011-11-21  Ingo Weinzierl <ingo@intevation.de>
sascha@350: 
sascha@350: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
sascha@350: 	  Changed Ingo's last commit to a more conservative notation (no auto-boxing).
sascha@350: 	  Strangely the flys-client does not compile for me with the auto-boxed
sascha@350: 	  syntax with OpenJDK!
sascha@350: 
ingo@349: 2011-11-21  Ingo Weinzierl <ingo@intevation.de>
ingo@349: 
ingo@349: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
ingo@349: 	  Added a method that allows to specify if the document needs to be
ingo@349: 	  namespace aware or not while parsing from InputStream.
ingo@349: 
ingo@348: 2011-11-07  Ingo Weinzierl <ingo@intevation.de>
ingo@348: 
ingo@348: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
ingo@348: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
ingo@348: 	  Enabled "post-describe" hooks for the Artifact's describe operation.
ingo@348: 
felix@347: 2011-10-28	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@347: 
felix@347: 	Let StateEngine compute a compatibiliy matrix based on given State
felix@347: 	IDs.
felix@347: 
felix@347: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/StateEngine.java
felix@347: 	  (getCompatibleFacets): New. Compute output/facet compatibility
felix@347: 	  matrix based on given states.
felix@347: 
ingo@346: 2011-10-21  Ingo Weinzierl <ingo@intevation.de>
ingo@346: 
ingo@346: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties:
ingo@346: 	  Bugfix: added missing bracket to an sql statement.
ingo@346: 
sascha@345: 2011-10-20	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@345: 
sascha@345: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java(getMasterArtifact):
sascha@345: 	  Limit result set to one row.
sascha@345: 
felix@344: 2011-10-19	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@344: 
felix@344: 	Fix accidentally corruptd key to sql statement.
felix@344: 
felix@344: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
felix@344: 	  Fix key.
felix@344: 
felix@343: 2011-10-19	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@343: 
felix@343: 	Add backend and db functionality query artifact which is belongs to
felix@343: 	a collection the longest (not neccessary the longest artifact itself).
felix@343: 
felix@343: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java
felix@343: 	  (getCollectionsMasterArtifact): New. Access master artifact for
felix@343: 	   given collection (masterartifact defined as artifact which belongs
felix@343: 	   to the collection the longest).
felix@343: 
felix@343: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java
felix@343: 	  (getCollectionsMasterArtifact): New (extended interface).
felix@343: 
felix@343: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java
felix@343: 	 (getMasterArtifact): New, get UUID of oldest artifact which belongs to
felix@343: 	 collection the longest.
felix@343: 
felix@343: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
felix@343: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
felix@343: 	  Added SQL query to get list of artifacts in collection sorted by the
felix@343: 	  entry date.
felix@343: 
sascha@342: 2011-10-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@342: 
sascha@342: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/StringUtils.java(toUpperCase):
sascha@342: 	  Added static method to convert an array of string to their uppercase counterparts.
sascha@342: 	  
felix@341: 2011-10-13	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@341: 
felix@341: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
felix@341: 	(newRemoveArtifactDocument): New, create a "remove artifact" document.
felix@341: 	Cosmetics, docs.
felix@341: 
felix@340: 2011-10-13	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@340: 
felix@340: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
felix@340: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
felix@340: 	  Fix SQL typo.
felix@340: 
felix@339: 2011-10-10	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@339: 
felix@339: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java:
felix@339: 	  Cosmetics, (shortened jdoc comments).
felix@339: 
felix@339: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
felix@339: 	  Cosmetics, (shortened jdoc comments). Also, removed
felix@339: 	  toString(Element), instead fixed toString(Node) - Node is
felix@339: 	  superinterface of Element.
felix@339: 
sascha@337: 2011-10-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@337: 
sascha@337: 	Fixed flys/issue255
sascha@337: 
sascha@337: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/db/DBConnection.java(getDataSource()):
sascha@337: 	  Serialized the loading of database drivers.
sascha@337: 
felix@336: 2011-09-23	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@336: 
felix@336: 	Fix debug helper toString(Node).
felix@336: 
felix@336: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
felix@336: 	  (toString(Node)): Fix issue with node from "wrong" document.
felix@336: 
felix@335: 2011-09-23	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@335: 
felix@335: 	Added XMLUtils functions helping to debug parts of xml documents.
felix@335: 
felix@335: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
felix@335: 	  (toString(Node), toString(Element): New functions returning
felix@335: 	  xml/string representations of parts of documents.
felix@335: 
ingo@334: 2011-09-22  Ingo Weinzierl <ingo@intevation.de>
ingo@334: 
ingo@334: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@334: 	  Removed useless CollectionCallContext creation (was never used).
ingo@334: 
ingo@332: 2011-09-19  Ingo Weinzierl <ingo@intevation.de>
ingo@332: 
ingo@332: 	Tagged RELEASE 1.4
ingo@332: 
ingo@332: 	* Changes: Prepared changes for the release.
ingo@332: 
ingo@331: 2011-09-09  Ingo Weinzierl <ingo@intevation.de>
ingo@331: 
ingo@331: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@331: 	  Artifacts and Collections that started a background process might add
ingo@331: 	  Messages to a message board now. They (currently just implemented for
ingo@331: 	  the Artifact) can add new messages and receive a list of messages via
ingo@331: 	  the CallContext objects. If an Artifact or Collection instance is
ingo@331: 	  removed from background, all its messages are removed as well.
ingo@331: 
ingo@331: 	* artifacts/src/main/java/de/intevation/artifacts/Message.java: New. The
ingo@331: 	  message interface. Currently, there is just a single getText() method
ingo@331: 	  defined.
ingo@331: 
ingo@331: 	* artifacts/src/main/java/de/intevation/artifacts/CallContext.java: Got
ingo@331: 	  two new methods to add new messages and retrieve a list of messages to
ingo@331: 	  the background messages.
ingo@331: 
ingo@331: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/CollectionCallContext.java,
ingo@331: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactCallContext.java:
ingo@331: 	  Implement the new methods to add/get messages defined in CallContext.
ingo@331: 	  The CollectionCallContext just defines the two methods without real
ingo@331: 	  implementation (stub).
ingo@331: 
ingo@330: 2011-09-07  Ingo Weinzierl <ingo@intevation.de>
ingo@330: 
ingo@330: 	* artifacts/src/main/java/de/intevation/artifacts/CallContext.java,
ingo@330: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/CollectionCallContext.java,
ingo@330: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactCallContext.java:
ingo@330: 	  The CallContext got a new method isInBackground() that determines, if
ingo@330: 	  the Artifact or Collection (currently not implemented) has started a
ingo@330: 	  background thread and is locked.
ingo@330: 
ingo@329: 2011-08-25  Ingo Weinzierl <ingo@intevation.de>
ingo@329: 
ingo@329: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/FileTools.java:
ingo@329: 	  New. A utility class for working with Files.
ingo@329: 
sascha@328: 2011-08-25	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@328: 
sascha@328: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java
sascha@328: 	  (outCollection): Called context listener too early before deferred out. This
sascha@328: 	  led to broken DB sessions.
sascha@328: 
ingo@327: 2011-08-25  Ingo Weinzierl <ingo@intevation.de>
ingo@327: 
ingo@327: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java,
ingo@327: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@327: 	  Enhanced the State interface with a endOfLife() method; the default
ingo@327: 	  implementation in AbstractState is empty.
ingo@327: 
felix@326: 2011-08-25	Felix Wolfsteller	<felix.wolfsteller@intevation.de>
felix@326: 
felix@326: 	Minor cosmetics.
felix@326: 
felix@326: 	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java:
felix@326: 	  Corrected signature in link in comment, whitespace.
felix@326: 
felix@326: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java:
felix@326: 	  Punctuation, whitespace in comment.
felix@326: 
sascha@325: 2011-08-24	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@325: 
sascha@325: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
sascha@325: 	  Write filters to create document if they are given.
sascha@325: 
sascha@325: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/CreationFilter.java:
sascha@325: 	  New. Model for the creation filter.
sascha@325: 
ingo@324: 2011-08-24  Ingo Weinzierl <ingo@intevation.de>
ingo@324: 
ingo@324: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@324: 	  Renamed an attribute in the document to create new Artifacts.
ingo@324: 
ingo@323: 2011-08-24  Ingo Weinzierl <ingo@intevation.de>
ingo@323: 
ingo@323: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/MapXPathVariableResolver.java:
ingo@323: 	  New. An XPathVariableResolver instance that stores its variables in a
ingo@323: 	  Map.
ingo@323: 
ingo@323: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
ingo@323: 	  Added support for variables in xpath expressions. There is a new xpath()
ingo@323: 	  method that takes a Map<String,String> that stores the required
ingo@323: 	  variables.
ingo@323: 
sascha@322: 2011-08-22	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@322: 
sascha@322: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java,
sascha@322: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java:
sascha@322: 	  Added a deepCopy() method to make them cloneable (Not using java.lang.Cloneable for this).
sascha@322: 
sascha@322: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/data/DefaultStateData.java,
sascha@322: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/data/StateData.java:
sascha@322: 	  Implement the changed interfaces.
sascha@322: 
sascha@321: 2011-08-22	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@321: 
sascha@321: 	* artifact-database/pom.xml: Bumped PostgreSQL driver from 
sascha@321: 	  8.3-603.jdbc4 up to 8.4-702.jdbc4 (same as flys-backend).
sascha@321: 
sascha@320: 2011-08-10	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@320: 
sascha@320: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java,
sascha@320: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@320: 	  Extract the collection and artifact creation times when doing the initial
sascha@320: 	  scan, too.
sascha@320: 
sascha@320: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@320: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@320: 	  Adjusted the SQL statements.
sascha@320: 
sascha@319: 2011-08-08	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@319: 
sascha@319: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties:
sascha@319: 	  Fixed H2 SQL to set TTL of collection.
sascha@319: 
sascha@318: 2011-08-02	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@318: 
sascha@318: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@318: 	  Swapped SQL parameter indices when fetching collection name.
sascha@318: 
sascha@317: 2011-08-02	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@317: 
sascha@317: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
sascha@317: 	  Change the ArtifactLoadedCallback interface to take the name of the
sascha@317: 	  collection, too.
sascha@317: 
sascha@317: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@317: 	  Fetches the collection name, too.
sascha@317: 
sascha@317: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@317: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@317: 	  Adjusted SQL statements.
sascha@317: 
sascha@316: 2011-08-02	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@316: 
sascha@316: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUser.java:
sascha@316: 	  Added constructor only with the identifier of the owner.
sascha@316: 
sascha@316: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@316: 	  Added dummy user to fresh created collection to have it accessible in the
sascha@316: 	  listeners.
sascha@316: 	
sascha@315: 2011-08-02	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@315: 
sascha@315: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@315: 	  Generate kill events if and only if there were killed collections or artifacts.
sascha@315: 
sascha@314: 2011-08-02	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@314: 
sascha@314: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@314: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@314: 	  Return uuid in statements used by database cleaner, too.
sascha@314: 
sascha@314: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/BackendListener.java,
sascha@314: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultBackendListener.java:
sascha@314: 	  Two new methods to reports a list of external killed collections and artifacts.
sascha@314: 
sascha@314: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@314: 	  Broadcast the lists of externally killed collections and artifacts to the listeners.
sascha@314: 
sascha@314: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@314: 	  Fire lists of deleted collections and artifacts to backend.
sascha@314: 
sascha@313: 2011-08-01	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@313: 
sascha@313: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@313: 	  Reorganized code a bit.
sascha@313: 
sascha@313: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added some
sascha@313: 	  debug output. Handle forgotten store/create event source.
sascha@313: 
sascha@312: 2011-08-01	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@312: 
sascha@312: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@312: 	  Fixed NPE.
sascha@312: 
sascha@310: 2011-08-01	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@310: 
sascha@311: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
sascha@311: 	  Made BackListeners loadable at boot time. To be configured with XPATH
sascha@311: 	  '/artifact-database/backend-listeners/listener'.
sascha@311: 
sascha@311: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
sascha@311: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/BackendListener.java,
sascha@311: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultBackendListener.java,
sascha@311: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@311: 	  Wired listeners to backend.
sascha@311: 
sascha@311: 2011-08-01	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@311: 
sascha@311: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/BackendListener.java,
sascha@311: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultBackendListener.java:
sascha@311: 	  Completed interface and the trival implementation.
sascha@311: 
sascha@311: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@311: 	  Call the listeners for the new defined events.
sascha@311: 
sascha@310: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/BackendListener.java:
sascha@310: 	  New. Interface to listener for backend events. TODO: Implement more
sascha@310: 	  events.
sascha@310: 
sascha@310: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultBackendListener.java:
sascha@310: 	  New. Trivial implementation of BackendListener.
sascha@310: 
sascha@310: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@310: 	  Added list of backend listeners. TODO: Add them at boot time.
sascha@310: 
sascha@309: 2011-07-31	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@309: 
sascha@309: 	* artifact-database/pom.xml: Bumped Apache DBCP up to 1.4
sascha@309: 
sascha@309: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/db/DBConnection.java:
sascha@309: 	  Use real pooling to void races. Maybe it needs more configuration options!?
sascha@309: 
sascha@309: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Removed
sascha@309: 	  superfluous imports.
sascha@309: 
sascha@308: 2011-07-31	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@308: 
sascha@308: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@308: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@308: 	  Fixed broken SQL statement.
sascha@308: 
sascha@308: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
sascha@308: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/db/DBConnection.java,
sascha@308: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added
sascha@308: 	  debug output.
sascha@308: 
sascha@307: 2011-07-31	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@307: 
sascha@307: 	Make artifact server bootable again.
sascha@307: 
sascha@307: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
sascha@307: 	  Fixed NPE.
sascha@307: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/db/SQL.java: Fixed NPE.
sascha@307: 	  Added some debug output.
sascha@307: 
sascha@307: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Fixed
sascha@307: 	  SQL key name. That was broken for long but not recognized.
sascha@307: 	
sascha@306: 2011-07-28	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@306: 
sascha@306: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/LRUCache.java:
sascha@306: 	  New. Simple LRU cache based on java.util.LinkedHashMap.
sascha@306: 
sascha@305: 2011-07-28	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@305: 
sascha@305: 	Refactorized the usage of dialect independent SQL to be reusable.
sascha@305: 
sascha@305: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/db/SQL.java,
sascha@305: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/db/DBConnection.java,
sascha@305: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/db/SQLExecutor.java:
sascha@305: 	  New. Generalized versions to make code reusable for datacage.
sascha@305: 
sascha@305: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java,
sascha@305: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java,
sascha@305: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/SQLExecutor.java:
sascha@305: 	  Deleted.
sascha@305: 
sascha@305: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DBConfig.java:
sascha@305: 	  New. Centralizes the SQL database configuration of the backend.
sascha@305: 
sascha@305: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java,
sascha@305: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/h2/CollectionAccessUpdateTrigger.java,
sascha@305: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
sascha@305: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@305: 	  A lot of adjustment to make the new infrastructure work. Needs heavy testing!
sascha@305: 
sascha@304: 2011-07-27	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@304: 
sascha@304: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/LifetimeListener.java:
sascha@304: 	  New. Interface instances of are called when system is up and is going down.
sascha@304: 
sascha@304: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
sascha@304: 	  Load lifetime listeners from configuration. XPATH
sascha@304: 	  /artifact-database/lifetime-listeners/listeners/text()
sascha@304: 
sascha@304: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@304: 	  Call the listeners after start up and before shutdown.
sascha@304: 
sascha@304: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java:
sascha@304: 	  Trigger the start of the artifact database explicitly when the boot process
sascha@304: 	  is finished.
sascha@304: 
sascha@303: 2011-07-27	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@303: 
sascha@303: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
sascha@303: 	  Added a method loadAllArtifacts() to load all artifacts which are in
sascha@303: 	  a collection and have an owner. The loaded artifacts are passed one by
sascha@303: 	  one to an instance of the interface ArtifactLoadedCallback.
sascha@303: 
sascha@303: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@303: 	  Adjusted to implement the interface.
sascha@303: 
sascha@303: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@303: 	  Load the artifacts from the SQL backend.
sascha@303: 
sascha@303: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@303: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@303: 	  Added statements to load all the artifacts.
sascha@303: 
sascha@302: 2011-07-26	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@302: 
sascha@302: 	* artifact-database/pom.xml: Bumped H2 version up to latest stable 1.3.158
sascha@302: 
sascha@301: 2011-07-22	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@301: 
sascha@301: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java,
sascha@301: 	  artifacts-common/src/main/java/de/intevation/artifacts/common/utils/StringUtils.java:
sascha@301: 	  Moved StringUtils to common package.
sascha@301: 
sascha@301: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
sascha@301: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java,
sascha@301: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
sascha@301: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@301: 	  Adjusted imports.
sascha@301: 
sascha@301: 	* artifacts-common/pom.xml, artifact-database/pom.xml: Moved dependency to Apache codec
sascha@301: 	  to other package.
sascha@301: 
sascha@301: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java:
sascha@301: 	  Added Override annotations (forgot to commit last time).
sascha@301: 
ingo@300: 2011-07-21  Ingo Weinzierl <ingo@intevation.de>
ingo@300: 
ingo@300: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@300: 	  New CREATE documents for Artifact creation might contain db-ids now.
ingo@300: 
sascha@299: 2011-07-21	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@299: 
sascha@299: 	* artifacts/src/main/java/de/intevation/artifacts/Service.java,
sascha@299: 	  artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java:
sascha@299: 	  Services now take GlobalContext on setup and process.
sascha@299: 
sascha@299: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java,
sascha@299: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java:
sascha@299: 	  Adusted and added Override annotations.
sascha@299: 
sascha@298: 2011-07-21	Sascha L. Teichmann	<teichmann@intevation.de>
sascha@298: 
sascha@298: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java:
sascha@298: 	  Made it more compatible with mixed namespaces and mixtures of namespaces
sascha@298: 	  and no namespaces.
sascha@298: 
sascha@298: 	* artifacts/pom.xml: Set Java compatibility to 1.5. Why isn't this inherited
sascha@298: 	  from main pom.xml? The artifact-database module uses 1.5 features but does
sascha@298: 	  not need any extra configuration.
sascha@298: 
ingo@297: 2011-07-20  Ingo Weinzierl <ingo@intevation.de>
ingo@297: 
ingo@297: 	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java,
ingo@297: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java:
ingo@297: 	  Added a parameter of type CallMeta to the signature of setup(). The
ingo@297: 	  CallMeta object is required for i18n initial things.
ingo@297: 
ingo@297: 	  !! NOTE: This modification breaks the current API !!
ingo@297: 
ingo@297: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java,
ingo@297: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java:
ingo@297: 	  Call Artifact.setup() with an instance of CallMeta.
ingo@297: 
ingo@297: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@297: 	  The createArtifact() method got a CallMeta instance which is necessary
ingo@297: 	  to call Artifact.setup().
ingo@297: 
ingo@296: 2011-07-19  Ingo Weinzierl <ingo@intevation.de>
ingo@296: 
ingo@296: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Output.java,
ingo@296: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java:
ingo@296: 	  Added a method to add a list of Facets.
ingo@296: 
ingo@295: 2011-07-18  Ingo Weinzierl <ingo@intevation.de>
ingo@295: 
ingo@295: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java,
ingo@295: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java:
ingo@295: 	  A facet can write its internal representation to XML using a public
ingo@295: 	  method toXML(Document).
ingo@295: 
ingo@295: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java:
ingo@295: 	  Facets are appended using its toXML() method. Concrete facets can now
ingo@295: 	  change its xml representation.
ingo@295: 
ingo@294: 2011-07-14  Ingo Weinzierl <ingo@intevation.de>
ingo@294: 
ingo@294: 	* artifacts/src/main/java/de/intevation/artifacts/Hook.java: The Hook's
ingo@294: 	  execute() method is called with a Document now.
ingo@294: 
ingo@294: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@294: 	  The hooks that are called after feed() and advance() are called with the
ingo@294: 	  documents which are returned by those operations.
ingo@294: 
ingo@293: 2011-07-14  Ingo Weinzierl <ingo@intevation.de>
ingo@293: 
ingo@293: 	* artifacts/src/main/java/de/intevation/artifacts/GlobalContext.java: New.
ingo@293: 	  An interface for global context objects. It defines two basic operations
ingo@293: 	  to put objects into the context and to retrieve objects from context.
ingo@293: 
ingo@293: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
ingo@293: 	  Added a method that returns an instance of an Artifact with one
ingo@293: 	  limitation: the internal state of this artifact is not persisted to
ingo@293: 	  database!
ingo@293: 
ingo@293: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@293: 	  Added a method that creates a document used to create new Artifacts with
ingo@293: 	  the UUID of another one.
ingo@293: 
ingo@293: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
ingo@293: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java,
ingo@293: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java,
ingo@293: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java,
ingo@293: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java,
ingo@293: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java,
ingo@293: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java:
ingo@293: 	  Adapted method signatures to apply the new interface for global context
ingo@293: 	  objects.
ingo@293: 
ingo@292: 2011-07-13  Ingo Weinzierl <ingo@intevation.de>
ingo@292: 
ingo@292: 	* artifacts/src/main/java/de/intevation/artifacts/Hook.java: New. A hook
ingo@292: 	  can be used to execute at a specific point in time. E.g. after an
ingo@292: 	  Artifact was fed or after an Artifact has advanced.
ingo@292: 
ingo@292: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@292: 	  Call hooks after Artifact's feed() and advance() operations.
ingo@292: 
ingo@292: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
ingo@292: 	  Load hooks from configuration that match the XPath "/artifact-database/hooks/hook".
ingo@292: 
sascha@291: 2011-07-13	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@291: 
sascha@291: 	Fix for flys/issue20
sascha@291: 
sascha@291: 	* artifact-database/pom.xml: Bumped version of SLF4J up to 1.6.1
sascha@291: 
ingo@290: 2011-07-08  Ingo Weinzierl <ingo@intevation.de>
ingo@290: 
ingo@290: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Output.java,
ingo@290: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java:
ingo@290: 	  An Output can have a type (string) declaration now that should make it
ingo@290: 	  easier to distinguish different Output types.
ingo@290: 
ingo@290: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@290: 	  Read the attribute "type" from OutputMode's configuration section.
ingo@290: 
ingo@290: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java:
ingo@290: 	  Write the member variable "type" to an OutputMode.
ingo@290: 
ingo@288: 2011-06-28  Ingo Weinzierl <ingo@intevation.de>
ingo@288: 
ingo@288: 	Tagged RELEASE 1.3
ingo@288: 
ingo@287: 2011-06-27  Ingo Weinzierl <ingo@intevation.de>
ingo@287: 
ingo@287: 	* Changes: Prepared changes for the upcoming release.
ingo@287: 
ingo@286: 2011-06-27  Ingo Weinzierl <ingo@intevation.de>
ingo@286: 
ingo@286: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
ingo@286: 	  Declared toString(Document) method static.
ingo@286: 
ingo@285: 2011-06-22  Ingo Weinzierl <ingo@intevation.de>
ingo@285: 
ingo@285: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@285: 	  Added functions that generate documents to set the name and ttl of a
ingo@285: 	  collection and to delete an existing collection.
ingo@285: 
ingo@284: 2011-06-21  Ingo Weinzierl <ingo@intevation.de>
ingo@284: 
ingo@284: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@284: 	  Add the time-to-live of a collection to the document that is returned
ingo@284: 	  after the collection has been created.
ingo@284: 
sascha@283: 2011-06-21	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@283: 
sascha@283: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java:
sascha@283: 	  Added toString() method to help debugging.
sascha@283: 
ingo@282: 2011-06-21  Ingo Weinzierl <ingo@intevation.de>
ingo@282: 
ingo@282: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@282: 	  Put the time-to-live of a collection into the document with the list of
ingo@282: 	  user collections.
ingo@282: 
ingo@281: 2011-06-21  Ingo Weinzierl <ingo@intevation.de>
ingo@281: 
ingo@281: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java,
ingo@281: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java:
ingo@281: 	  The ArtifactCollection now knows its time-to-live. This values is
ingo@281: 	  retrievable via getTTL().
ingo@281: 
ingo@281: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollectionFactory.java,
ingo@281: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactCollectionFactory.java:
ingo@281: 	  Creating an ArtifactCollection requires the time-to-live of it.
ingo@281: 
ingo@281: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@281: 	  Create new ArtifactCollections with their time-to-live.
ingo@281: 
ingo@281: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
ingo@281: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
ingo@281: 	  Adapted SQL statements that retrieve collections. The TTL of the
ingo@281: 	  collection is fetched from database as well.
ingo@281: 
ingo@280: 2011-06-17  Ingo Weinzierl <ingo@intevation.de>
ingo@280: 
ingo@280: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java,
ingo@280: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java:
ingo@280: 	  Facets are able to fetch their necessary data from artifact now using a
ingo@280: 	  getData(Artifact, CallContext) method.
ingo@280: 
ingo@279: 2011-06-16  Ingo Weinzierl <ingo@intevation.de>
ingo@279: 
ingo@279: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java:
ingo@279: 	  Write index of a facet into the document.
ingo@279: 
ingo@278: 2011-06-16  Ingo Weinzierl <ingo@intevation.de>
ingo@278: 
ingo@278: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java:
ingo@278: 	  Extends Serializable.
ingo@278: 
ingo@277: 2011-06-15  Ingo Weinzierl <ingo@intevation.de>
ingo@277: 
ingo@277: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java,
ingo@277: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java:
ingo@277: 	  Added an index to a facet.
ingo@277: 
sascha@276: 2011-06-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@276: 
sascha@276: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
sascha@276: 	  Added static toString(Document) method which transform XML documents to Strings.
sascha@276: 	  Useful for debugging.
sascha@276: 
ingo@275: 2011-06-07  Ingo Weinzierl <ingo@intevation.de>
ingo@275: 
ingo@275: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
ingo@275: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java,
ingo@275: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@275: 	  New methods to set the name of a collection.
ingo@275: 
ingo@275: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java:
ingo@275: 	  Dispatch the "setname" action.
ingo@275: 
ingo@275: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
ingo@275: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
ingo@275: 	  Added sql statements to update the name of a collection specified by its
ingo@275: 	  gid.
ingo@275: 
ingo@274: 2011-06-07  Ingo Weinzierl <ingo@intevation.de>
ingo@274: 
ingo@274: 	  flys/issue50 (Markierung von "Master-Artefakten" ermöglichen)
ingo@274: 
ingo@274: 	* artifact-database/doc/schema-pg.sql,
ingo@274: 	  artifact-database/doc/schema-h2.sql: Added a column 'creation' to the
ingo@274: 	  collection_items table. This column is set to the current timestamp when a
ingo@274: 	  new row is inserted in this table. The master artifact of a collection
ingo@274: 	  is the artifact which collection item is the oldest collection item in
ingo@274: 	  the collection.
ingo@274: 	  Note: there might be older artifacts in the collection than the master
ingo@274: 	  artifact, but there will never be an older collection item than the first
ingo@274: 	  item when the collection was created.
ingo@274: 
ingo@274: 	  To update the db, use the following statements:
ingo@274: 
ingo@274: 	    ALTER TABLE collection_items ADD COLUMN creation TIMESTAMP;
ingo@274: 	    UPDATE collection_items SET creation = CURRENT_TIMESTAMP;
ingo@274: 	    ALTER TABLE collection_items ALTER COLUMN creation SET NOT NULL;
ingo@274: 
ingo@274: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
ingo@274: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
ingo@274: 	  Order the list of collection items based on their creation time.
ingo@274: 
ingo@273: 2011-06-07  Ingo Weinzierl <ingo@intevation.de>
ingo@273: 
ingo@273: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
ingo@273: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
ingo@273: 	  Added a setCollectionTTL() method that might be used to update the TTL
ingo@273: 	  of a collection. The new value needs to be from type long. There are two
ingo@273: 	  exceptions for the new values:
ingo@273: 	    1. the new value is "INF": this lets collections live forever.
ingo@273: 	    2. the new value is "DEFAULT": this sets the TTL of the collection to
ingo@273: 	       the configured default value.
ingo@273: 
ingo@273: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@273: 	  Added a method to update the TTL attribute of a collection.
ingo@273: 
ingo@273: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java:
ingo@273: 	  Dispatch the "settimetolive" action.
ingo@273: 	  
ingo@273: 	* artifact-database/src/main/resources/sql/org-postgresql-driver.properties,
ingo@273: 	  artifact-database/src/main/resources/sql/org-h2-driver.properties: Added
ingo@273: 	  sql statements to update the TTL of a specific collection based on the
ingo@273: 	  UUID of the collection.
ingo@273: 
sascha@272: 2011-06-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@272: 
sascha@272: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/StateEngine.java:
sascha@272: 	  Use generics more precisely
sascha@272: 
sascha@271: 2011-06-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@271: 
sascha@271: 	flys/issue75
sascha@271: 
sascha@271: 	* artifact-database/doc/schema-h2.sql: Fixed SQL syntax error in trigger creation.
sascha@271: 
sascha@271: 	* README: Adjusted to use new lib versions.
sascha@271: 
ingo@270: 2011-06-03  Ingo Weinzierl <ingo@intevation.de>
ingo@270: 
ingo@270: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@270: 	  The incoming attribute document of the method to create the document to
ingo@270: 	  trigger the out() of a collection needs to have the root node
ingo@270: 	  art:attribute now.
ingo@270: 
ingo@269: 2011-05-31  Ingo Weinzierl <ingo@intevation.de>
ingo@269: 
ingo@269: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseOutResource.java,
ingo@269: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionOutResource.java,
ingo@269: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java:
ingo@269: 	  The 'type' part of the url is extracted and used while dispatching the
ingo@269: 	  call to the artifact database.
ingo@269: 
ingo@269: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
ingo@269: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
ingo@269: 	  The deferred output got a new out() method that takes the 'type'
ingo@269: 	  parameter specified in the url part.
ingo@269: 
ingo@269: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java,
ingo@269: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java,
ingo@269: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java,
ingo@269: 	  artifacts/src/main/java/de/intevation/artifacts/Artifact.java:
ingo@269: 	  Artifacts and ArtifactCollections have two out() operations to support
ingo@269: 	  the output type parameter now. I did not remove the out() without the
ingo@269: 	  'type' parameter to keep compatible with older versions.
ingo@269: 
ingo@268: 2011-05-27  Ingo Weinzierl <ingo@intevation.de>
ingo@268: 
ingo@268: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@268: 	  The setCollectionAttribute() method will now set the incoming document
ingo@268: 	  as new attribute for the collection. Before, we looked for a xpath
ingo@268: 	  expression that contained the attribute. In the current implementation,
ingo@268: 	  the incoming document IS the attribute.
ingo@268: 
ingo@268: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java:
ingo@268: 	  Extract the new attribute for a collection and call the
ingo@268: 	  setCollectionAttribute() method of ArtifactDatabase with this document
ingo@268: 	  instead of calling it with the incoming request document.
ingo@268: 
ingo@267: 2011-05-27  Ingo Weinzierl <ingo@intevation.de>
ingo@267: 
ingo@267: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@267: 	  New method that creates the document that is used to set an attribute of
ingo@267: 	  a collection.
ingo@267: 
sascha@266: 2011-04-23	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@266: 
sascha@266: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/JettyServer.java:
sascha@266: 	  Do not bind context to restlet app for security reasons.
sascha@266: 
sascha@265: 2011-04-23	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@265: 
sascha@265: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java:
sascha@265: 	  XMLUtils.xpathString() returns empty string not null.
sascha@265: 
sascha@264: 2011-04-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@264: 
sascha@264: 	flys/issue65: Added Jetty HTTP server as a replacement option to foster
sascha@264: 	better scalability. Needs testing.
sascha@264: 
sascha@264: 	* pom.xml: Added repository for Jetty.
sascha@264: 
sascha@264: 	* artifact-database/pom.xml:
sascha@264: 	  Added dependencies to Jetty (Licenses: Apache 2.0 or Eclipse).
sascha@264: 
sascha@264: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
sascha@264: 	  Pass restlet context to super constructor.
sascha@264: 
sascha@264: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/JettyServer.java:
sascha@264: 	  New. Use embedded Jetty server to serve rest API.
sascha@264: 	  To enable it set "/artifact-database/rest-server/http-server/text()"
sascha@264: 	  in global config to "de.intevation.artifactdatabase.rest.JettyServer".
sascha@264: 
sascha@264: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java:
sascha@264: 	  Refactored a bit to be useful as a base class.
sascha@264: 	
sascha@263: 2011-04-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@263: 
sascha@263: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/HTTPServer.java:
sascha@263: 	  New. Interface to run an HTTP server. Enables the system to run on different
sascha@263: 	  HTTP servers.
sascha@263: 
sascha@263: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java:
sascha@263: 	  Implements the new interface.
sascha@263: 
sascha@263: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
sascha@263: 	  Load and setup the HTTP server configured by the XPath 
sascha@263: 	  "/artifact-database/rest-server/http-server/text()" in the global config file.
sascha@263: 	  Defaults to "de.intevation.artifactdatabase.rest.Standalone" if not given.
sascha@263: 
sascha@263: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: 
sascha@263: 	  Boot with the HTTP server configured by FactoryBootstrap.
sascha@263: 
sascha@262: 2011-04-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@262: 
sascha@262: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java:
sascha@262: 	  With '/artifact-database/rest-server/max-threads/text()' in conf.xml
sascha@262: 	  you can set the number of threads used by the restlet server.
sascha@262: 	  Defaults to 1024 now. Another attempt/workaround to cope with flys/issue65.
sascha@262: 
ingo@261: 2011-05-17  Ingo Weinzierl <ingo@intevation.de>
ingo@261: 
ingo@261: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@261: 	  Bugfix: The output name and its concrete type are both written into the
ingo@261: 	  document that is used to trigger the OUT operation of a collection.
ingo@261: 
ingo@261: 2011-04-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@260: 
sascha@260: 	* artifact-database/pom.xml: Bumped restlet to version 2.0.7 in hope
sascha@260: 	  to mitigate flys/issue65.
sascha@260: 
ingo@259: 2011-05-13  Ingo Weinzierl <ingo@intevation.de>
ingo@259: 
ingo@286: 	Tagged as RELEASE 1.2
ingo@286: 
ingo@259: 	* Changes, NEWS: Changes and news for release 1.2
ingo@259: 
ingo@258: 2011-05-12  Ingo Weinzierl <ingo@intevation.de>
ingo@258: 
ingo@258: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@258: 	  The method that is used to create the request document for querying
ingo@258: 	  charts will now take a document which might contain parameters to adjust
ingo@258: 	  chart settings (e.g. chart height/width).
ingo@258: 
ingo@257: 2011-04-28  Ingo Weinzierl <ingo@intevation.de>
ingo@257: 
ingo@257: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/transition/Transition.java:
ingo@257: 	  Modified the isValid() method. The transition needs to know about the
ingo@257: 	  current artifact where its data is stored, the current state and maybe
ingo@257: 	  the target state to determine if it is allowed to step from the current
ingo@257: 	  state to a target state!
ingo@257: 	  NOTE: This breaks the current API!
ingo@257: 
ingo@257: artifact-database/src/main/java/de/intevation/artifactdatabase/transition/TransitionEngine.java
ingo@257: 
ingo@256: 2011-04-28  Ingo Weinzierl <ingo@intevation.de>
ingo@256: 
ingo@256: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java,
ingo@256: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@256: 	  States have now a method getData(String) to retrieve just a single StateData object.
ingo@256: 
ingo@255: 2011-04-28  Ingo Weinzierl <ingo@intevation.de>
ingo@255: 
ingo@255: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@255: 	  Added a function that creates the document that is used to set the
ingo@255: 	  attribute of a CollectionItem (setCollectionItemAttribute() operation).
ingo@255: 
ingo@254: 2011-04-27  Ingo Weinzierl <ingo@intevation.de>
ingo@254: 
ingo@254: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@254: 	  Bugfix: Do not create empty XML documents and save those into database -
ingo@254: 	  exceptions while serialization/deserialization have been the result of
ingo@254: 	  this.
ingo@254: 
ingo@253: 2011-04-26  Ingo Weinzierl <ingo@intevation.de>
ingo@253: 
ingo@253: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
ingo@253: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java,
ingo@253: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@253: 	  New methods for querying and updating attributes of collections.
ingo@253: 
ingo@253: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java:
ingo@253: 	  Enabled the request dispatcher to handle requests specific to collection
ingo@253: 	  attributes and collection item attributes.
ingo@253: 
ingo@253: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
ingo@253: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
ingo@253: 	  New statements for querying and inserting attributes of collections.
ingo@253: 
ingo@252: 2011-04-26  Ingo Weinzierl <ingo@intevation.de>
ingo@252: 
ingo@252: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java,
ingo@252: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
ingo@252: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@252: 	  Changed the names of the method names that set and retrieve the
ingo@252: 	  attributes of collection items (e.g. getCollectionAttribute() ->
ingo@252: 	  getCollectionItemAttribute()).
ingo@252: 
ingo@252: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java:
ingo@252: 	  Modified method calls based on the changes above.
ingo@252: 
ingo@251: 2011-04-21  Ingo Weinzierl <ingo@intevation.de>
ingo@251: 
ingo@251: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/Output.java,
ingo@251: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java:
ingo@251: 	  Added a method to add further facets.
ingo@251: 
ingo@250: 2011-04-14  Ingo Weinzierl <ingo@intevation.de>
ingo@250: 
ingo@250: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@250: 	  Bugfix: removed method CallContext specific method calls.
ingo@250: 
ingo@249: 2011-04-14  Ingo Weinzierl <ingo@intevation.de>
ingo@249: 
ingo@249: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
ingo@249: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
ingo@249: 	  Enhanced the bootstrap - the CallContext.Listener is initialized (if
ingo@249: 	  configured).
ingo@249: 
ingo@248: 2011-04-14  Ingo Weinzierl <ingo@intevation.de>
ingo@248: 
ingo@248: 	* artifacts/src/main/java/de/intevation/artifacts/CallContext.java:
ingo@248: 	  Added a setup() method as in the other factories.
ingo@248: 
sascha@247: 2011-04-14	Sascha L. Teichmann	<sascha.teichmann@intevation.de>	
sascha@247: 
sascha@247: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@247: 	  Added instance variable to hold a call context listener.
sascha@247: 
sascha@246: 2011-04-14	Sascha L. Teichmann	<sascha.teichmann@intevation.de>	
sascha@246: 
sascha@246: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@246: 	  Call the postCall() methods of all CallContextes. Removed superfluous context
sascha@246: 	  paramter to AbstractCallContext constructors.
sascha@246: 
sascha@246: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java:
sascha@246: 	  call ArtifactDatabaseImpl.initCallContext() in constructor and 
sascha@246: 	  ArtifactDatabaseImpl.closeCallContext() in postCall().
sascha@246: 
sascha@246: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/CollectionCallContext.java,
sascha@246: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactCallContext.java:
sascha@246: 	  adjusted to guarantee that super.postCall() is called.
sascha@246: 
sascha@245: 2011-04-14	Sascha L. Teichmann	<sascha.teichmann@intevation.de>	
sascha@245: 
sascha@245: 	* artifacts/src/main/java/de/intevation/artifacts/CallContext.java:
sascha@245: 	  Added a listener to be called if a call context was created and closed.
sascha@245: 	
ingo@244: 2011-04-14  Ingo Weinzierl <ingo@intevation.de>
ingo@244: 
ingo@244: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java,
ingo@244: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@244: 	  Added a reference to an artifact to the parameterlist of describe().
ingo@244: 	  This is needed to retrieve other necessary information of an artifact.
ingo@244: 
sascha@243: 2011-04-13	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@243: 
sascha@243: 	* artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@243: 	  Internal granularity should be milliseconds and not microseconds.
sascha@243: 
sascha@243: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties:
sascha@243: 	  Forget last commit.
sascha@245: 
sascha@242: 2011-04-13	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@242: 
sascha@242: 	Fix for flys/issue9
sascha@242: 
sascha@242: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@242: 	  Removed code that checks for outdated artifact in user land.
sascha@242: 	   
sascha@242: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@242: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@242: 	  Do the check in the database and take into account if artifact
sascha@242: 	  is in a collection. XXX: Maybe this needs some speedup!
sascha@242: 
sascha@241: 2011-04-13	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@241: 
sascha@241: 	Fix for flys/issue8 (part 3)
sascha@241: 
sascha@241: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@241: 	  'NOT IN (NULL)' does not work. Used 'NOT IN (-666)' instead.
sascha@241: 
ingo@240: 2011-04-12  Ingo Weinzierl <ingo@intevation.de>
ingo@240: 
ingo@240: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@240: 	  Added a method that returns a document that is used to trigger the
ingo@240: 	  artifact's DESCRIBE operation.
ingo@240: 
ingo@239: 2011-04-07  Ingo Weinzierl <ingo@intevation.de>
ingo@239: 
ingo@239: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@239: 	  Added a method that creates documents used as input document for the
ingo@239: 	  Collection's out() operation.
ingo@239: 
sascha@238: 2011-04-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@238: 
sascha@238: 	Fix for flys/issue8 (part 2)
sascha@238: 
sascha@238: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@238: 	  PostgreSQL does not like clauses like 'NOT IN ()' so write 
sascha@238: 	  'NOT IN (NULL)' in these cases.
sascha@238: 
sascha@238: 2011-04-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@238: 
sascha@238: 	Possible fix for flys/issue8
sascha@238: 
sascha@238: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java:
sascha@238: 	  (repeat) The term was repeated one time too often leading to invalid
sascha@238: 	  SQL statements in database cleaner. I really should start writing 
sascha@238: 	  unit tests.
sascha@237: 
ingo@236: 2011-04-06  Ingo Weinzierl <ingo@intevation.de>
ingo@236: 
ingo@236: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCollectionItem.java:
ingo@236: 	  Bugfix: Items are compressed in the Backend while adding an Artifact to
ingo@236: 	  a Collection. So this item needs to be decompressed when it is fetched
ingo@236: 	  from Backend again. This is done now!
ingo@236: 
sascha@235: 2011-04-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@235: 
sascha@235: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@235: 	  The XML documents stored aside users, collections and collection items
sascha@235: 	  are now compressed/decompressed transparently, to reduce i/o costs
sascha@235: 	  as its already done with artifacts.
sascha@235: 	  
sascha@235: 	  !!! This breaks database content of release FLYS 2.2 but this is okay,
sascha@235: 	  !!! because 2.2 is not productive..
sascha@235: 
sascha@234: 2011-04-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@234: 
sascha@234: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
sascha@234: 	  Added a boolean flag to XML byte serialisation to compress/decompress, too.
sascha@234: 	  Defaults to false to keep compatibilty.
sascha@234: 
sascha@233: 2011-04-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@233: 
sascha@233: 	* src/**/*.java: Removed trailing whitespace.
sascha@233: 
sascha@233: 2011-03-31	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@233: 
sascha@233: 	* src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@233: 	  Removes outdated collections, too.
sascha@233: 
sascha@233: 	* src/main/resources/sql/org-h2-driver.properties,
sascha@233: 	  src/main/resources/sql/org-postgresql-driver.properties:
sascha@233: 	  Added SQL statements to figure out outdated collections.
sascha@233: 
sascha@231: 2011-03-31	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@231: 
sascha@231: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java:
sascha@231: 	  Added methods to repeat chars or strings.
sascha@231: 
sascha@231: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@231: 	  Filtering out locked artifact ids is now done on database level.
sascha@231: 
sascha@231: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@231: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@231: 	  Added $LOCKED_ID$ template for the prepared statements to figure
sascha@231: 	  out the locked ids.
sascha@231: 
sascha@230: 2011-03-31	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@230: 
sascha@230: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@230: 	  The cleaner now fetches the explicit set of locked artifact ids from
sascha@230: 	  the artifact database. This is needed for the next step todo: Prevent
sascha@230: 	  locked artifact from beeing considered as outdated on database level.
sascha@230: 
sascha@230: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Id.java:
sascha@230: 	  Removed. Not needed any more.
sascha@230: 
sascha@230: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@230: 	  Now provides a copy of the locked artifact ids.
sascha@230: 
sascha@230: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java,
sascha@230: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@230: 	  Adjusted code to follow the new id locking semantics.
sascha@230: 
sascha@230: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java:
sascha@230: 	  Removed needless import.
sascha@230: 
sascha@229: 2011-03-31	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@229: 
sascha@229: 	* artifact-database/doc/schema-h2.sql, artifact-database/doc/schema-pg.sql:
sascha@229: 	  Added a trigger on artifacts. If an artifact is changed the last_access
sascha@229: 	  timestamp of the collections in which the artifact is in are updated, too.
sascha@229: 	  Needs testing!
sascha@229: 
sascha@229: 	  - In PostgreSQL it is done by a trigger written in plpgsql. So don't
sascha@233: 	    forget to add the language to the database!
sascha@229: 
sascha@229: 	  - In H2 it is done by a trigger written in Java, because H2 does not
sascha@229: 	    offer a script level trigger support.
sascha@229: 
sascha@229: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/h2/CollectionAccessUpdateTrigger.java:
sascha@229: 	  The H2 trigger.
sascha@229: 
sascha@229: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties:
sascha@229: 	  Added the statement which is executed if the trigger fires.
sascha@229: 
ingo@228: 2011-03-31  Ingo Weinzierl <ingo@intevation.de>
ingo@228: 
ingo@228: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@228: 	  Added an implementation of DeferredOutput for ArtifactCollections and
ingo@228: 	  implemented the out() operation of an ArtifactCollection.
ingo@228: 
ingo@227: 2011-03-30  Ingo Weinzierl <ingo@intevation.de>
ingo@227: 
ingo@227: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java:
ingo@227: 	  The output nodes written to DESCRIBE document have facet nodes now.
ingo@227: 
ingo@226: 2011-03-30  Ingo Weinzierl <ingo@intevation.de>
ingo@226: 
ingo@226: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java,
ingo@226: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java:
ingo@226: 	  New. A facet and its default implementation. A facet represents one
ingo@226: 	  piece of an concrete output. E.g. an output can be a chart, a facet can
ingo@226: 	  be a single curve in this chart.
ingo@226: 
ingo@226: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java,
ingo@226: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/Output.java:
ingo@226: 	  Added methods to retrieve and set facets.
ingo@226: 
ingo@226: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@226: 	  Added code to parse facets in the inner of an output node of the
ingo@226: 	  transition configuration. The xpath to a facet relative to a state
ingo@226: 	  should look like this: state/outputmodes/outputmode/facets/facet.
ingo@226: 
ingo@224: 2011-03-30  Ingo Weinzierl <ingo@intevation.de>
ingo@224: 
ingo@224: 	Tagged as RELEASE 1.1
ingo@224: 
ingo@223: 2011-03-30  Ingo Weinzierl <ingo@intevation.de>
ingo@223: 
ingo@223: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@223: 	  There is a new method that creates the document that is used to trigger
ingo@223: 	  the DESCRIBE operation of a collection.
ingo@223: 
ingo@222: 2011-03-25  Ingo Weinzierl <ingo@intevation.de>
ingo@222: 
ingo@222: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@222: 	  The operation that adds an artifact to an artifact collection will
ingo@222: 	  return the DESCRIBE document of the artifact collection now.
ingo@222: 
ingo@221: 2011-03-24  Ingo Weinzierl <ingo@intevation.de>
ingo@221: 
ingo@221: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java,
ingo@221: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java:
ingo@221: 	  Made the document 'attribute' of the ArtifactCollection accessible via
ingo@221: 	  getter and setter methods.
ingo@221: 
ingo@220: 2011-03-24  Ingo Weinzierl <ingo@intevation.de>
ingo@220: 
ingo@220: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@220: 	  The CREATE document for used for creating new ArtifactCollections will
ingo@220: 	  build an ArtifactCollection with an empty attribute - but it is no
ingo@220: 	  longer null (which broke the XML parser while fetching the
ingo@220: 	  ArtifactCollection from backend).
ingo@220: 
ingo@219: 2011-03-24  Ingo Weinzierl <ingo@intevation.de>
ingo@219: 
ingo@219: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@219: 	  Removed the inner CallContextImpl class. This class is split up into an
ingo@219: 	  abstract class AbstractCallContext and concrete classes for artifacts
ingo@219: 	  and collections. We need to do so, because the describe() of an
ingo@219: 	  ArtifactCollection needs the CallContext - but the former
ingo@219: 	  CallContextImpl was specific for artifacts.
ingo@219: 
ingo@219: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java,
ingo@219: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/CollectionCallContext.java,
ingo@219: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactCallContext.java:
ingo@219: 	  An abstract CallContext and two concrete implementations for Artifacts
ingo@219: 	  and ArtifactCollections.
ingo@219: 
ingo@218: 2011-03-24  Ingo Weinzierl <ingo@intevation.de>
ingo@218: 
ingo@218: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java,
ingo@218: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java:
ingo@218: 	  There is a describe() method for ArtifactCollections, now.
ingo@218: 
ingo@217: 2011-03-24  Ingo Weinzierl <ingo@intevation.de>
ingo@217: 
ingo@217: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@217: 	  Added a method that retrieves an ArtifactCollection based on its GID.
ingo@217: 
sascha@216: 2011-03-24	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@216: 
sascha@216: 	* artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@216: 	  Added a cast to uuid in collections.select.by.gid
sascha@216: 
ingo@215: 2011-03-24  Ingo Weinzierl <ingo@intevation.de>
ingo@215: 
ingo@215: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
ingo@215: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
ingo@215: 	  Added new statement to retrieve a single collection by GID and repaired
ingo@215: 	  a statement in the postgres properties.
ingo@215: 
ingo@214: 2011-03-23  Ingo Weinzierl <ingo@intevation.de>
ingo@214: 
ingo@214: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@214: 	  Added a method that creates a document that is used to add an artifact
ingo@214: 	  to a collection.
ingo@214: 
ingo@213: 2011-03-23  Ingo Weinzierl <ingo@intevation.de>
ingo@213: 
ingo@213: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
ingo@213: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
ingo@213: 	  Bugfix: Repaired broken SQL statement.
ingo@213: 
ingo@212: 2011-03-23  Ingo Weinzierl <ingo@intevation.de>
ingo@212: 
ingo@212: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@212: 	  Bugfix: Repaired a broken XPath.
ingo@212: 
ingo@211: 2011-03-23  Ingo Weinzierl <ingo@intevation.de>
ingo@211: 
ingo@211: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java:
ingo@211: 	  Added a method to append an <outputmodes> section to a document that
ingo@211: 	  describes the output modes of a state.
ingo@211: 
ingo@211: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@211: 	  Added a method to retrieve a list of output modes from DESCRIBE
ingo@211: 	  document.
ingo@211: 
ingo@210: 2011-03-23  Ingo Weinzierl <ingo@intevation.de>
ingo@210: 
ingo@210: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java:
ingo@210: 	  The State interface defines a method to retrieve the state's output
ingo@210: 	  modes now.
ingo@210: 
ingo@209: 2011-03-22  Ingo Weinzierl <ingo@intevation.de>
ingo@209: 
ingo@209: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java,
ingo@209: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/Output.java:
ingo@209: 	  New. An interface and its default implementation to describe an output
ingo@209: 	  mode of a state. Currently, the information 'name', 'description' and
ingo@209: 	  'mime-type' are provided.
ingo@209: 
ingo@209: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@209: 	  The abstract state reads the output modes available for the state now.
ingo@209: 
ingo@208: 2011-03-21  Ingo Weinzierl <ingo@intevation.de>
ingo@208: 
ingo@208: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@208: 	  Changed the return type of a method, so that more nodes will be
ingo@208: 	  retrieved.
ingo@208: 
sascha@207: 2011-03-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@207: 
sascha@207: 	!!! THIS BREAKS THE GNV ARTIFACTS. !!! TODO: Adjust the imports there.
sascha@207: 
sascha@207: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java,
sascha@207: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java:
sascha@207: 	  Deleted. The copies from the commons package are use now.
sascha@207: 
sascha@207: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/**/*.java:
sascha@207: 	  Adjusted imports.
sascha@207: 
sascha@206: 2011-03-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@206: 
sascha@206: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/Config.java:
sascha@206: 	  New. Copy of Config in artifacts-database. Part of moving configuration to 
sascha@206: 	  the commons package. TODO: Remove XMLUtils and Config from artifact-database.
sascha@206: 
sascha@206: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@206: 	  Trivial fix. Forgot to commit some time ago.
sascha@206: 
ingo@205: 2011-03-14  Ingo Weinzierl <ingo@intevation.de>
ingo@205: 
ingo@205: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java,
ingo@205: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@205: 	  The describe() method of a state will now return an Element.
ingo@205: 
ingo@204: 2011-03-10  Ingo Weinzierl <ingo@intevation.de>
ingo@204: 
ingo@204: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@204: 	  New method that creates the document for a ADVANCE operation.
ingo@204: 
ingo@203: 2011-03-10  Ingo Weinzierl <ingo@intevation.de>
ingo@203: 
ingo@203: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@203: 	  New method that creates the document for a FEED operation.
ingo@203: 
ingo@202: 2011-03-10  Ingo Weinzierl <ingo@intevation.de>
ingo@202: 
ingo@202: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
ingo@202: 	  Bugfix: The ElementCreator's method addAttr() will no longer add the
ingo@202: 	  namespace to an attribute although the 'addPrefix' parameter was set to
ingo@202: 	  false.
ingo@202: 
ingo@201: 2011-03-09  Ingo Weinzierl <ingo@intevation.de>
ingo@201: 
ingo@201: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/transition/TransitionEngine.java:
ingo@201: 	  New method to determine if a state B is reachable from a state A.
ingo@201: 
ingo@200: 2011-03-09  Ingo Weinzierl <ingo@intevation.de>
ingo@200: 
ingo@200: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/data/DefaultStateData.java:
ingo@200: 	  Added a further constructor that takes even the value.
ingo@200: 
sascha@199: 2011-03-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@199: 
sascha@199: 	* artifact-database/doc/schema-pg.sql, artifact-database/doc/schema-h2.sql: 
sascha@199: 	  Fixed broken schemas.
sascha@199: 
sascha@199: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@199: 	  Insert collection attribute into database, too.
sascha@199: 
sascha@199: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@199: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@199: 	  Adjusted SQL statements to insert attribute into collection table.
sascha@199: 
ingo@198: 2011-03-09  Ingo Weinzierl <ingo@intevation.de>
ingo@198: 
ingo@198: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@198: 	  Parse the collection attribute that is contained in the incoming
ingo@198: 	  document while creating a new collection and use this document as parameter
ingo@198: 	  for calling createCollection() of the Backend.
ingo@198: 
ingo@197: 2011-03-09  Ingo Weinzierl <ingo@intevation.de>
ingo@197: 
ingo@197: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
ingo@197: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
ingo@197: 	  Fixed a typo.
ingo@197: 
ingo@196: 2011-03-08  Ingo Weinzierl <ingo@intevation.de>
ingo@196: 
ingo@196: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
ingo@196: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
ingo@196: 	  New method describeCollection() that might be used to retrieve a list of
ingo@196: 	  items in the collection and the facets supported by those items.
ingo@196: 
ingo@196: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java:
ingo@196: 	  Enabled the describeCollection() method with an action 'describe' equal
ingo@196: 	  to the implementation of describe of an artifact.
ingo@196: 
sascha@195: 2011-03-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@195: 
sascha@195: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties
sascha@195: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@195: 	  The cleaner job is scanning the artifact database for outdated artifacts.
sascha@195: 	  artifacts are aging independent from the collections they are in.
sascha@195: 	  So the cleaner wants to delete artifacts that are still in
sascha@195: 	  collections which violates a foreign key constraint and renders
sascha@195: 	  the cleaner inop because this condition remains.
sascha@195: 
sascha@195: 	  The fix prevents this behavior by only deleting artifacts that
sascha@195: 	  are not in a collection.
sascha@195: 
sascha@193: 2011-03-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@193: 
sascha@193: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@193: 	  Fixed issue with outdating artifact if it is removed from a collection.
sascha@193: 
sascha@193: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@193: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@193: 	  Fixed statements.
sascha@193: 
ingo@192: 2011-03-08  Ingo Weinzierl <ingo@intevation.de>
ingo@192: 
ingo@192: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@192: 	  Implemented the setCollectionAttribute() and getCollectionAttribute()
ingo@192: 	  methods.
ingo@192: 
ingo@191: 2011-03-08  Ingo Weinzierl <ingo@intevation.de>
ingo@191: 
ingo@191: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
ingo@191: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
ingo@191: 	  Fixed some SQL statements that contained typos.
ingo@191: 
ingo@190: 2011-03-08  Ingo Weinzierl <ingo@intevation.de>
ingo@190: 
ingo@190: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@190: 	  Implemented removeCollectionArtifact() method.
ingo@190: 
ingo@189: 2011-03-07  Ingo Weinzierl <ingo@intevation.de>
ingo@189: 
ingo@189: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
ingo@189: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
ingo@189: 	  Modified the method signature of addCollectionArtifact(). This method
ingo@189: 	  got the incoming document as further parameter.
ingo@189: 	  Furthermore, listCollectionArtifacts() and addCollectionArtifact() are
ingo@189: 	  implemented now.
ingo@189: 
ingo@189: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java:
ingo@189: 	  Adapted the method call of addCollectionArtifact().
ingo@189: 
ingo@188: 2011-03-07  Ingo Weinzierl <ingo@intevation.de>
ingo@188: 
ingo@188: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCollectionItem.java:
ingo@188: 	  Fixed broken constructor.
ingo@188: 
ingo@187: 2011-03-07  Ingo Weinzierl <ingo@intevation.de>
ingo@187: 
ingo@187: 	* artifact-database/doc/schema-pg.sql,
ingo@187: 	  artifact-database/doc/schema-h2.sql: Renamed a SEQUENCE - schema
ingo@187: 	  definition and sql statements did not fit to each other.
ingo@187: 
ingo@187: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
ingo@187: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
ingo@187: 	  Fixed wrong table names in sql statements.
ingo@187: 
ingo@187: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@187: 	  Fixed SQL constants.
ingo@187: 
ingo@186: 2011-03-07  Ingo Weinzierl <ingo@intevation.de>
ingo@186: 
ingo@186: 	* artifacts/src/main/java/de/intevation/artifacts/CollectionItem.java:
ingo@186: 	  New. An interface that wraps artifacts and its attributes in collections.
ingo@186: 
ingo@186: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCollectionItem.java,
ingo@186: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/CollectionItem.java:
ingo@186: 	  Moved. The CollectionItem has been moved to DefaultCollectionItem and
ingo@186: 	  implements the new interface CollectionItem.
ingo@186: 
ingo@186: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@186: 	  The listCollectionArtifacts() method instantiates DefaultCollectionItem
ingo@186: 	  objects now.
ingo@186: 
sascha@185: 2011-03-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@185: 
sascha@185: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/CollectionItem.java:
sascha@185: 	  Add missing class.
sascha@185: 
sascha@184: 2011-03-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@184: 
sascha@184: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@184: 	  Added code to list the collection items in a collection.
sascha@184: 
sascha@184: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@184: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@184: 	  Added SQL statements to list the collection item 
sascha@184: 	  via a given collection uuid.
sascha@184: 
ingo@183: 2011-03-07  Ingo Weinzierl <ingo@intevation.de>
ingo@183: 
ingo@183: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@183: 	  Repaired the namespaces of attributes in the xml documents created in
ingo@183: 	  the collection context.
ingo@183: 
sascha@182: 2011-03-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@182: 
sascha@182: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/CollectionItem.java:
sascha@182: 	  New. Helper to be returned in Backend.listCollectionArtifacts()
sascha@182: 
sascha@182: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@182: 	  Copyright adjusted to 2010, 2011
sascha@182: 
ingo@181: 2011-03-07  Ingo Weinzierl <ingo@intevation.de>
ingo@181: 
ingo@181: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties:
ingo@181: 	  Adapted the sql statement to fetch all collections and all user
ingo@181: 	  collections from database (see rev1399 for more details).
ingo@181: 	  s/OUTER LEFT/LEFT OUTER/ solves the collection listing problem.
ingo@181: 
sascha@180: 2011-03-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@180: 
sascha@180: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@180: 	  Added code to delete a collection item. Fixed typo in SQL lookup.
sascha@180: 
sascha@180: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@180: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@180: 	  Added SQL statements to removed an artifact from a collection given
sascha@180: 	  a collection id and an artifact id.
sascha@180: 
sascha@179: 2011-03-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@179: 
sascha@179: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@179: 	  Added code to set the attribute of a collection item.
sascha@179: 
sascha@179: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@179: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@179: 	  Added SQL statements to set the attribute column of a collection item
sascha@179: 	  given a collection id and an artifact id.
sascha@179: 
sascha@178: 2011-03-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@178: 
sascha@178: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@178: 	  Added code to get the attribute of a collection item.
sascha@178: 
sascha@178: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@178: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@178: 	  Added SQL statements to get the attribute column of a collection item
sascha@178: 	  given the collection and the artifact uuid.
sascha@178: 
sascha@177: 2011-03-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@177: 
sascha@177: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@177: 	  Added new method isValidIdentifier() to check if identifier
sascha@177: 	  is valid. Its a wrapper around StringUtils.checkUUID() to
sascha@177: 	  make it more symmetric to newIdentifier() which wraps
sascha@177: 	  StringUtils.newUUID().
sascha@177: 
sascha@176: 2011-03-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@176: 
sascha@176: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@179: 	  TODO: Parse incoming document for an initial attribute of a
sascha@176: 	  collection item.
sascha@176: 
sascha@176: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@176: 	  Added code to add a collection item to a collection.
sascha@176: 
sascha@176: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@176: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@176: 	  Added SQL statements to handle creation of collection items.
sascha@176: 
sascha@175: 2011-03-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@175: 
sascha@175: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@175: 	  Added code to delete a collection.
sascha@175: 
sascha@175: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@175: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@175: 	  Added SQL statements to delete collections.
sascha@175: 
sascha@174: 2011-03-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@174: 
sascha@174: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/SQLExecutor.java:
sascha@174: 	  New. Helper class to simplify the database connection stuff like
sascha@174: 	  get a connection, prepare statements, commit, rollback in
sascha@174: 	  error cases and so on. This reduces the code repetition
sascha@174: 	  and complexity in the backend significantly.
sascha@174: 
sascha@174: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@174: 	  Use the new helper. (Should really have done this before!)
sascha@174: 
sascha@174: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactCollectionFactory.java:
sascha@174: 	  Removed empty line at end of file.
sascha@174: 
sascha@173: 2011-03-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@173: 
sascha@173: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@173: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@173: 	  Argh! s/OUTER LEFT/LEFT OUTER/ solves the collection listing problem.
sascha@173: 
ingo@172: 2011-03-04  Ingo Weinzierl <ingo@intevation.de>
ingo@172: 
ingo@172: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@172: 	  Added a method that creates the CREATE document for creating new
ingo@172: 	  artifact collections.
ingo@172: 
sascha@171: 2011-03-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@171: 
sascha@171: 	* artifact-database/pom.xml: Lifted H2 to version 1.3.152.
sascha@171: 	  This hopefully eliminates the problem with the left outer join
sascha@171: 	  in listing of the user collections.
sascha@171: 
sascha@170: 2011-03-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@170: 
sascha@170: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@170: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@170: 	  Added new statement to extract the creation time for a given collection.
sascha@170: 	  XXX: listing of collection does not. Need to look at that.
sascha@170: 
sascha@170: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java,
sascha@170: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollectionFactory.java,
sascha@170: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactCollectionFactory.java
sascha@170: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java:
sascha@170: 	  Repaired parameter propagation of creation times and collection names.
sascha@170: 
sascha@170: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@170: 	  Adjusted the backend to propagate the creation time and the collection names.
sascha@170: 
ingo@169: 2011-03-04  Ingo Weinzierl <ingo@intevation.de>
ingo@169: 
ingo@169: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@169: 	  The createCollection() method returns a document that will now contain
ingo@169: 	  the uuid of the created artifact collection.
ingo@169: 
ingo@168: 2011-03-04  Ingo Weinzierl <ingo@intevation.de>
ingo@168: 
ingo@168: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@168: 	  If there is no creation time of a collection, we just add an empty
ingo@168: 	  string to the collection node in listCollections(). A
ingo@168: 	  NullPointerException is avoided!
ingo@168: 
sascha@167: 2011-03-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@167: 
sascha@167: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@167: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@167: 	  Added SQL statements to list collections.
sascha@167: 
sascha@167: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@167: 	  Added code to make collections accessible.
sascha@167: 
sascha@167: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@167: 	  Bind backend functionality to REST.
sascha@167: 
ingo@166: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@166: 
ingo@166: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@166: 	  Implemented the interface method addCollectionArtifact().
ingo@166: 
sascha@165: 2011-03-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@165: 
sascha@165: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/LazyBackendUser.java:
sascha@165: 	  New: Helper for lazy loading users.
sascha@165: 
ingo@164: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@164: 
ingo@164: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@164: 	  Introduced the ArtifactCollectionFactory as parameter of
ingo@164: 	  listCollections().
ingo@164: 
ingo@164: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@164: 	  Implemented the interface method listCollections().
ingo@164: 
ingo@163: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@163: 
ingo@163: 	* artifact-database/doc/example-conf/conf.xml: Corrected the attribute
ingo@163: 	  name of the artifact collection in the example node for the artifact
ingo@163: 	  collection factory.
ingo@163: 
ingo@162: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@162: 
ingo@162: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@162: 	  Two things: the collection get names specified in the incoming document
ingo@162: 	  of the POST request, and the deleteCollection() interface method is now
ingo@162: 	  implemented.
ingo@162: 
ingo@161: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@161: 
ingo@161: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@161: 	  Bugfixes while collection creation: Create a Connection object before
ingo@161: 	  setting its attributes and corrected the order of the values inserted
ingo@161: 	  into the SQL statement.
ingo@161: 
ingo@160: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@160: 
ingo@160: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@160: 	  The roles of users are stored into and loaded from database now.
ingo@160: 
sascha@159: 2011-03-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@159: 
sascha@159: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@159: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@159: 	  Added SQL statements to create collections.
sascha@159: 
sascha@159: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactCollectionFactory.java,
sascha@159: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java:
sascha@159: 	  Added name to collection.
sascha@159: 
sascha@159: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java,
sascha@159: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollectionFactory.java:
sascha@159: 	  Adjusted factory api to cope with names.
sascha@159: 
sascha@159: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@159: 	  Implemented create collection.
sascha@159: 
sascha@159: 	* database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@159: 	  Adjusted the backend call.
sascha@159: 
ingo@158: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@158: 
ingo@158: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@158: 	  Changed the method signature of createCollection(). The Backend needs
ingo@158: 	  the ArtifactCollectionFactory to create new instances of artifact
ingo@158: 	  collections.
ingo@158: 
ingo@158: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@158: 	  Implemented the interface method createCollection().
ingo@158: 
sascha@157: 2011-03-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@157: 
sascha@157: 	* artifacts/src/main/java/de/intevation/artifacts/UserFactory.java:
sascha@157: 	  Throw out useless stuff from interface.
sascha@157: 
sascha@157: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java:
sascha@157: 	  Adjusted default implementation.
sascha@157: 
sascha@157: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@157: 	  Use user factory to create new users.
sascha@157: 
sascha@157: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@157: 	  Call the backend with the new semantic.
sascha@157: 
sascha@156: 2011-03-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@156: 
sascha@156: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@156: 	  Added stubs for the collection handling.
sascha@156: 
sascha@156: 	* artifact-database/doc/schema-pg.sql, artifact-database/doc/schema-h2.sql:
sascha@156: 	  Added missing attribute column to the collection item table.
sascha@156: 
ingo@155: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@155: 
ingo@155: 	* artifact-database/doc/example-conf/conf.xml: Added a node that
ingo@155: 	  configures a default artifact collection factory.
ingo@155: 
ingo@155: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
ingo@155: 	  The artifact collection factory (currently just a single one) is read
ingo@155: 	  from configuration and setup with its parameters.
ingo@155: 
ingo@155: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@155: 	  Fetch the configured artifact collection factory from bootstrap.
ingo@155: 
sascha@154: 2011-03-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@154: 
sascha@154: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
sascha@154: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java,
sascha@154: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
sascha@154: 	  artifacts/src/main/java/de/intevation/artifacts/UserFactory.java:
sascha@154: 	  Propagate delete user errors correctly.
sascha@154: 
ingo@153: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@153: 
ingo@153: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java,
ingo@153: 	  artifacts/src/main/java/de/intevation/artifacts/UserFactory.java,
ingo@153: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@153: 	  Adapted the signature of deleteUser(). These methods don't await a User
ingo@153: 	  object any longer but just its identifier.
ingo@153: 
ingo@153: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@153: 	  Performance improvement: there is no need to fetch the user that we want
ingo@153: 	  to delete from database before deleting it. Now, we just call the
ingo@153: 	  deleteUser() method of the UserFactory with the identifier of the user.
ingo@153: 
ingo@152: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@152: 
ingo@152: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@152: 	  Implemented the deleteUser() interface method. This operation will now
ingo@152: 	  remove the specified user, its collections and the artifacts stored in
ingo@152: 	  these collections.
ingo@152: 
ingo@151: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@151: 
ingo@151: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@151: 	  Bugfix: Replaced wrong SQL statements with the correct ones.
ingo@151: 
ingo@150: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@150: 
ingo@150: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@150: 	  Implemented the listUsers() interface method. This operation will now
ingo@150: 	  return a list of users as document.
ingo@150: 
ingo@149: 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
ingo@149: 
ingo@149: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@149: 	  Implemented the createUser() interface method. Calling this method will
ingo@149: 	  trigger the backend to create a new user described in the document given
ingo@149: 	  in the POST request.
ingo@149: 
sascha@148: 2011-03-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@148: 
sascha@148: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@148: 	  Added code to load all users from database.
sascha@148: 
sascha@147: 2011-03-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@147: 
sascha@147: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@147: 	  Added code to load user from database.
sascha@147: 
sascha@147: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
sascha@147: 	  Added method to reconstruct XML documents from byte arrays and input streams
sascha@147: 
sascha@144: 2011-03-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@144: 
sascha@144: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@144: 	  Added code to delete a user, his/her collections and quarantee that
sascha@144: 	  the artifacts exclusivly owner by the user are going to be deleted
sascha@144: 	  from the artifact database.
sascha@144: 
sascha@144: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@144: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@144: 	  Various SQL statements to cope with outdating artifacts and deleting
sascha@144: 	  users and collections.
sascha@144: 
ingo@143: 2011-03-02  Ingo Weinzierl <ingo@intevation.de>
ingo@143: 
ingo@143: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseOutResource.java:
ingo@143: 	  New. Abstract class that should be used as the base class for the
ingo@143: 	  artifact and collection out resource. The most stuff to handle the
ingo@143: 	  output is done in this class. Concrete subclasses are needed to call the
ingo@143: 	  correct methods in the artifact database.
ingo@143: 
ingo@143: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionOutResource.java:
ingo@143: 	  New. The OUT Resource for collections. It implements the two abstract
ingo@143: 	  methods of BaseOutResource.
ingo@143: 
ingo@143: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java:
ingo@143: 	  This class inherits from BaseOutResource now. The most code has been
ingo@143: 	  removed. Just the two abstract methods of BaseOutResource are
ingo@143: 	  implemented here.
ingo@143: 
ingo@143: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
ingo@143: 	  Added the CollectionOutResource.
ingo@143: 
ingo@142: 2011-03-02  Ingo Weinzierl <ingo@intevation.de>
ingo@142: 
ingo@142: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java:
ingo@142: 	  New. A Rest resource that handles operations for a specific collection.
ingo@142: 
ingo@142: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
ingo@142: 	  Added the CollectionResource.
ingo@142: 
ingo@141: 2011-03-02  Ingo Weinzierl <ingo@intevation.de>
ingo@141: 
ingo@141: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ListCollectionsResource.java:
ingo@141: 	  New. A Rest resource that lists all collections of a specific user.
ingo@141: 
ingo@141: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
ingo@141: 	  Added the ListCollectionsResource.
ingo@141: 
ingo@140: 2011-03-02  Ingo Weinzierl <ingo@intevation.de>
ingo@140: 
ingo@140: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateCollectionResource.java:
ingo@140: 	  New. A Rest resource that might be used to create new collection that
ingo@140: 	  are owned by a specific user.
ingo@140: 
ingo@140: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
ingo@140: 	  Added the CreateCollectionResource.
ingo@140: 
sascha@139: 2011-03-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@139: 
sascha@139: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java,
sascha@139: 	  artifacts/src/main/java/de/intevation/artifacts/UserFactory.java:
sascha@139: 	  Removed needless imports.
sascha@139: 
sascha@138: 2011-03-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@138: 
sascha@138: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@138: 	  Call database to create a new user.
sascha@138: 
ingo@137: 2011-03-02  Ingo Weinzierl <ingo@intevation.de>
ingo@137: 
ingo@137: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/UserResource.java:
ingo@137: 	  New. A Rest resource that handles actions for a specific user.
ingo@137: 
ingo@137: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
ingo@137: 	  Added the UserResource.
ingo@137: 
ingo@136: 2011-03-02  Ingo Weinzierl <ingo@intevation.de>
ingo@136: 
ingo@136: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ListUsersResource.java:
ingo@136: 	  New. A Rest resource that lists all users provided by the artifact
ingo@136: 	  database.
ingo@136: 
ingo@136: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
ingo@136: 	  Added the ListUsersResource.
ingo@136: 
sascha@135: 2011-03-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@135: 
sascha@135: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
sascha@135: 	  Added a convinience method to transform an document
sascha@135: 	  into a byte array. Useful for storing documents as blob database columns.
sascha@135: 
sascha@134: 2011-03-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@134: 
sascha@134: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java:
sascha@134: 	  Wired Backend with DefaultUserFactory via the singleton.
sascha@134: 
sascha@133: 2011-03-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@133: 
sascha@133: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@133: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@133: 	  Fixed typo in keys.
sascha@133: 
sascha@133: 	* artifacts/src/main/java/de/intevation/artifacts/UserFactory.java,
sascha@133: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java:
sascha@133: 	  Removed superfluous identifier in createUser().
sascha@133: 
sascha@133: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@133: 	  Added stubs for handling of users.
sascha@133: 
ingo@132: 2011-03-02  Ingo Weinzierl <ingo@intevation.de>
ingo@132: 
ingo@132: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
ingo@132: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
ingo@132: 	  Removed duplicated method to list users.
ingo@132: 
ingo@131: 2011-03-02  Ingo Weinzierl <ingo@intevation.de>
ingo@131: 
ingo@131: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java:
ingo@131: 	  Added a new method getArtifactDatabase() that retrieves the artifact
ingo@131: 	  database which is used in all subclasses of this resource.
ingo@131: 
ingo@131: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateUserResource.java:
ingo@131: 	  Use getArtifactDatabase() to retrieve the artifact database.
ingo@131: 
ingo@131: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java:
ingo@131: 	  New. A resource that is used to create new users. The information about
ingo@131: 	  the user need to be included in the POST data of the request.
ingo@131: 
ingo@131: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
ingo@131: 	  Added the CreateUserResource.
ingo@131: 
ingo@130: 2011-03-02  Ingo Weinzierl <ingo@intevation.de>
ingo@130: 
ingo@130: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java,
ingo@130: 	  artifacts/src/main/java/de/intevation/artifacts/UserFactory.java: Added
ingo@130: 	  a setup method like the artifact factories have.
ingo@130: 
ingo@130: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@130: 	  Added an import statement for the UserFactory that was missing here.
ingo@130: 
ingo@130: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
ingo@130: 	  The setup() method of the UserFactory is called after the concrete
ingo@130: 	  factory class has been instantiated.
ingo@130: 
ingo@129: 2011-03-02  Ingo Weinzierl <ingo@intevation.de>
ingo@129: 
ingo@129: 	* artifacts/pom.xml: Bugfix: We are able to compile the artifacts package
ingo@129: 	  with local modifications again.
ingo@129: 
ingo@128: 2011-03-01  Ingo Weinzierl <ingo@intevation.de>
ingo@128: 
ingo@128: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@128: 	  Made it a singleton.
ingo@128: 
ingo@128: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java:
ingo@128: 	  Use the singleton Backend.
ingo@128: 
ingo@127: 2011-03-01  Ingo Weinzierl <ingo@intevation.de>
ingo@127: 
ingo@127: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@127: 	  Setup the user factory.
ingo@127: 
ingo@127: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
ingo@127: 	  New method to retrieve the user factory.
ingo@127: 
ingo@126: 2011-03-01  Ingo Weinzierl <ingo@intevation.de>
ingo@126: 
ingo@126: 	* artifact-database/doc/example-conf/conf.xml: Added a user-factory
ingo@126: 	  configuration.
ingo@126: 
ingo@125: 2011-03-01  Ingo Weinzierl <ingo@intevation.de>
ingo@125: 
ingo@125: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
ingo@125: 	  Added the registration of the UserFactory to the bootstrap process.
ingo@125: 
sascha@124: 2011-03-01	Sascha L. Teichmann <sascha.teichmann@intevation.de>
sascha@124: 
sascha@124: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@124: 	  artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@124: 	  Added SQL statements to handle users in database.
sascha@124: 
sascha@124: 	* artifact-database/doc/schema-pg.sql,
sascha@124: 	  artifact-database/doc/schema-h2.sql: Added missing UNIQUE constraints.
sascha@124: 
ingo@123: 2011-03-01  Ingo Weinzierl <ingo@intevation.de>
ingo@123: 
ingo@123: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUser.java:
ingo@123: 	  Added a new constructor to create new DefaultUsers with an identifier, a
ingo@123: 	  name and a role.
ingo@123: 
ingo@123: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUserFactory.java:
ingo@123: 	  New. A default implementation of a UserFactory that creates
ingo@123: 	  DefaultUsers.
ingo@123: 
ingo@122: 2011-03-01  Ingo Weinzierl <ingo@intevation.de>
ingo@122: 
ingo@122: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollectionFactory.java:
ingo@122: 	  A default implementation of an ArtifactCollectionFactory.
ingo@122: 
sascha@121: 2011-03-01	Sascha L. Teichmann <sascha.teichmann@intevation.de>
sascha@121: 
sascha@121: 	* artifact-database/doc/schema-pg.sql,
sascha@121: 	  artifact-database/doc/schema-h2.sql: Extended db scheme to
sascha@121: 	  cope with collections, collection items and users.
sascha@121: 
sascha@120: 2011-03-01	Sascha L. Teichmann <sascha.teichmann@intevation.de>
sascha@120: 
sascha@120: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java:
sascha@120: 	  Typo fix.
sascha@120: 
sascha@120: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactCollectionFactory.java:
sascha@120: 	  Added method to figure out TTL of a collection.
sascha@120: 
ingo@119: 2011-03-01  Ingo Weinzierl <ingo@intevation.de>
ingo@119: 
ingo@119: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java:
ingo@119: 	  A default implementation of a ArtifactCollection.
ingo@119: 
ingo@119: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUser.java:
ingo@119: 	  A default implementation of a User.
ingo@119: 
sascha@118: 2011-03-01	Sascha L. Teichmann <sascha.teichmann@intevation.de>
sascha@118: 
sascha@118: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java:
sascha@118: 	  Added creation time.
sascha@118: 
sascha@118: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@118: 	  Typo fixes.
sascha@118: 
sascha@117: 2011-03-01	Sascha L. Teichmann <sascha.teichmann@intevation.de>
sascha@117: 
sascha@117: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
sascha@117: 	  Added external API for users and collections.
sascha@117: 
sascha@117: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@117: 	  Trivial implementation.
sascha@117: 
sascha@117: 2011-03-01	Sascha L. Teichmann <sascha.teichmann@intevation.de>
sascha@117: 
sascha@117: 	* src/main/java/de/intevation/artifacts/UserFactory.java,
sascha@117: 	  src/main/java/de/intevation/artifacts/ArtifactCollection.java: Added
sascha@117: 	  missing call contexts to API.
sascha@117: 
sascha@115: 2011-03-01	Sascha L. Teichmann <sascha.teichmann@intevation.de>
sascha@115: 
sascha@115: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactCollectionFactory.java:
sascha@115: 	  New: factory to create new collections.
sascha@115: 
sascha@115: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java:
sascha@115: 	  New: Bundles artifacts to be owned by a user.
sascha@115: 
sascha@115: 	* artifacts/src/main/java/de/intevation/artifacts/UserFactory.java:
sascha@115: 	  New: Creates a new user.
sascha@115: 
sascha@115: 	* artifacts/src/main/java/de/intevation/artifacts/User.java:
sascha@115: 	  New: Model of a user.
sascha@115: 
sascha@115: 	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Typo fix.
sascha@115: 
ingo@114: 2011-02-18  Ingo Weinzierl <ingo@intevation.de>
ingo@114: 
ingo@114: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@114: 	  Added XPath constants and some method that retrieve important nodes of the
ingo@114: 	  DESCRIBE document.
ingo@114: 
ingo@113: 2011-02-16  Ingo Weinzierl <ingo@intevation.de>
ingo@113: 
ingo@113: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/ArtifactNamespaceContext.java:
ingo@113: 	  New. Added the namespace context here to make it available in clients as
ingo@113: 	  well.
ingo@113: 	
ingo@113: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java:
ingo@113: 	  New. This class provides functions that help working with the artifact
ingo@113: 	  protocol. Currently, there is just a single function to create a new
ingo@113: 	  CREATE document.
ingo@113: 
ingo@112: 2011-02-10  Ingo Weinzierl <ingo@intevation.de>
ingo@112: 
ingo@112: 	* artifacts-common/src/main/resources/de/intevation/artifacts/common/Common.gwt.xml:
ingo@112: 	  A module description that is used by GWT.
ingo@112: 
ingo@112: 	* artifacts-common/pom.xml: The resulting jar archive of the 'package'
ingo@112: 	  target will now contain the compiled classes as well as the source files.
ingo@112: 	  Furthermore, the sources are compiled with Java-1.6. These two things are
ingo@112: 	  required for the jar to be included by GWT as module.
ingo@112: 
ingo@111: 2011-02-10  Ingo Weinzierl <ingo@intevation.de>
ingo@111: 
ingo@111: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/model/User.java,
ingo@111: 	  artifacts-common/src/main/java/de/intevation/artifacts/common/model/DefaultUser.java:
ingo@111: 	  The interface description and a default implementation of a user.
ingo@111: 
ingo@110: 2011-02-07  Ingo Weinzierl <ingo@intevation.de>
ingo@110: 
ingo@110: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java:
ingo@110: 	  Added a method to add new StateData objects to the State.
ingo@110: 
ingo@110: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/data/StateData.java:
ingo@110: 	  Added a new method to the StateData interface to set the value of the
ingo@110: 	  object.
ingo@110: 
ingo@110: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/data/DefaultStateData.java:
ingo@110: 	  New. A default implementation of the StateData.
ingo@110: 
ingo@109: 2011-02-07  Ingo Weinzierl <ingo@intevation.de>
ingo@109: 
ingo@109: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java:
ingo@109: 	  Added new methods to append the current state and the reachable states to
ingo@109: 	  a root node.
ingo@109: 
ingo@108: 2011-02-07  Ingo Weinzierl <ingo@intevation.de>
ingo@108: 
ingo@108: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/StateEngine.java:
ingo@108: 	  There is a new method that returns a state based on its ID.
ingo@108: 
ingo@108: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/transition/TransitionEngine.java:
ingo@108: 	  There is a new method that retrieves the reachable states of a specific
ingo@108: 	  state.
ingo@108: 
ingo@107: 2011-02-04  Ingo Weinzierl <ingo@intevation.de>
ingo@107: 
ingo@107: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java:
ingo@107: 	  New. This class provides functions that should help creating the artifact
ingo@107: 	  protocol documents of the services describe, feed, advance and out.
ingo@107: 
ingo@106: 2011-02-04  Ingo Weinzierl <ingo@intevation.de>
ingo@106: 
ingo@106: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@106: 	  Implements the method setup() - the ID and the description of the state
ingo@106: 	  are extracted at this place.
ingo@106: 
ingo@106: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/StateEngine.java:
ingo@106: 	  Added a method to retrieve the states of a specified artifact.
ingo@106: 
ingo@106: 	* artifact-database/pom.xml: Added a dependency to the artifacts-common
ingo@106: 	  package.
ingo@106: 
ingo@105: 2011-02-04  Ingo Weinzierl <ingo@intevation.de>
ingo@105: 
ingo@105: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java:
ingo@105: 	  New. An abstract implementation of a State. Some basic getter and setter
ingo@105: 	  methods are implemented - setup() and describe() need to be implemented by
ingo@105: 	  concrete subclasses.
ingo@105: 
ingo@104: 2011-02-03  Ingo Weinzierl <ingo@intevation.de>
ingo@104: 
ingo@104: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/StateEngine.java,
ingo@104: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/transition/TransitionEngine.java:
ingo@104: 	  Implementations to store the provided states and transitions of the
ingo@104: 	  artifact server. These engines should be filled at bootstrap.
ingo@104: 
ingo@104: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java,
ingo@104: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/transition/Transition.java,
ingo@104: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/data/StateData.java:
ingo@104: 	  Interface descriptions for states, transitions and user inserted data.
ingo@104: 
ingo@103: 2011-02-02  Ingo Weinzierl <ingo@intevation.de>
ingo@103: 
ingo@103: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java:
ingo@103: 	  Corrected the package definition.
ingo@103: 
ingo@102: 2011-02-02  Ingo Weinzierl <ingo@intevation.de>
ingo@102: 
ingo@102: 	* artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java,
ingo@102: 	  artifacts-common/pom.xml: New package. It will serve some classes and
ingo@102: 	  utilities that are used in the artifact-database package as well as in
ingo@102: 	  concrete artifact packages.
ingo@102: 
ingo@102: 	* pom.xml: Added the artifacts-common package to be able to build all
ingo@102: 	  packages using just the upper level pom file.
ingo@102: 
ingo@101: 2011-02-01  Ingo Weinzierl <ingo@intevation.de>
ingo@101: 
ingo@101: 	* artifact-database/pom.xml: Upgraded Restlet from version 2.0-SNAPSHOT
ingo@101: 	  to the current stable version 2.0.4.
ingo@101: 
ingo@101: 	* pom.xml: The SCM plugin will not check for local changes any longer.
ingo@101: 	  Otherwise, we aren't able to build the project with outstanding
ingo@101: 	  modifications.
ingo@101: 
ingo@101: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java:
ingo@101: 	  Set the max number of threads available for the REST server to 512. This
ingo@101: 	  is a _WORKAROUND_ for Restlet-2.0.4 which seems to have a bug while
ingo@101: 	  handling threads.
ingo@101: 
ingo@101: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ImportResource.java,
ingo@101: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java,
ingo@101: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java,
ingo@101: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ExportResource.java,
ingo@101: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java,
ingo@101: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java:
ingo@101: 	  Renamed the packages of the Request and Response class that have been
ingo@101: 	  changed from Restlet 2.0-SNAPSHOT to 2.0.4.
ingo@101: 
ingo@100: 2010-11-02  Ingo Weinzierl <ingo@intevation.de>
ingo@100: 
ingo@100: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultPreferredLocale.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/App.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Id.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ImportResource.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ExportResource.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServicesResource.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java,
ingo@100: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java,
ingo@100: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java,
ingo@100: 	  artifacts/src/main/java/de/intevation/artifacts/CallContext.java,
ingo@100: 	  artifacts/src/main/java/de/intevation/artifacts/Service.java,
ingo@100: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java,
ingo@100: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java,
ingo@100: 	  artifacts/src/main/java/de/intevation/artifacts/CallMeta.java,
ingo@100: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java,
ingo@100: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java,
ingo@100: 	  artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java,
ingo@100: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java,
ingo@100: 	  artifacts/src/main/java/de/intevation/artifacts/Artifact.java,
ingo@100: 	  artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java,
ingo@100: 	  contrib/run.sh: Added a license header to each of these files.
ingo@100: 
ingo@100: 	* LGPL.txt: License file for the GNU LGPL v2.1
ingo@100: 
ingo@99: 2010-06-14  Ingo Weinzierl <ingo_weinzierl@web.de>
ingo@99: 
ingo@99: 	* artifacts/pom.xml,
ingo@99: 	  pom.xml: Write svn revision to MANIFEST files while creating jar archives.
ingo@99: 
hans@97: 2010-04-28  Hans Plum <hans@intevation.de>
hans@97: 
hans@98: 	* Tagging Version 1.0:
hans@98: 	Because of finishing all functional requirements, rename to 1.0
hans@98: 	instead of 0.6
hans@97: 
ingo@96: 2010-04-28  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@96: 
ingo@96: 	* Changes, NEWS, ChangeLog: Summarized activities.
ingo@96: 
ingo@95: 2010-04-27  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@95: 
ingo@95: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java:
ingo@95: 	  The path to database can be configured with a relative path now.
ingo@95: 
sascha@94: 2010-04-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@94: 
sascha@94: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java,
sascha@94: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
sascha@94: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java,
sascha@94: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java,
sascha@94: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java,
sascha@94: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java,
sascha@94: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java:
sascha@94: 	  Brought all line lengths of non Javadoc lines below 80.
sascha@94: 
sascha@93: 2010-03-28	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@93: 
sascha@93: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/App.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java,
sascha@93: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java,
sascha@93: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java:
sascha@93: 	  Sorted imports.
sascha@93: 
sascha@91: 2010-03-28	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@91: 
sascha@92: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
sascha@92: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java,
sascha@92: 	  TODO:
sascha@92: 	  Last bunch of javadoc. Possible TODO: check for typos and cross reference problems
sascha@92: 	  but the main work should be done with this commit.
sascha@92: 
sascha@92: 2010-03-28	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@92: 
sascha@92: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java,
sascha@92: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java,
sascha@92: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java,
sascha@92: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java,
sascha@92: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java,
sascha@92: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java,
sascha@92: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java,
sascha@92: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java,
sascha@92: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java,
sascha@92: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@92: 	  More javadoc, some code formatting.
sascha@91: 
sascha@90: 2010-03-26	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@90: 
sascha@90: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java,
sascha@90: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultPreferredLocale.java,
sascha@90: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java,
sascha@90: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java,
sascha@90: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
sascha@90: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java,
sascha@90: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java,
sascha@90: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@90: 	  Even more javadoc.
sascha@90: 
sascha@89: 2010-03-26	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@89: 
sascha@89: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultPreferredLocale.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Id.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ImportResource.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ExportResource.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServicesResource.java,
sascha@89: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java:
sascha@89: 	  More javadoc (fixes small glitches, too).
sascha@89: 
sascha@88: 2010-03-26	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@88: 
sascha@88: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java,
sascha@88: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ImportResource.java,
sascha@88: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java,
sascha@88: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java,
sascha@88: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java,
sascha@88: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java,
sascha@88: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ExportResource.java,
sascha@88: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java,
sascha@88: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java,
sascha@88: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServicesResource.java,
sascha@88: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java,
sascha@88: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
sascha@88: 	  Added javadoc to the REST package (complete). TODO: Add javadoc to the remaining classes
sascha@88: 	  of the 'artifactdatabase'.
sascha@88: 
sascha@87: 2010-03-26	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@87: 
sascha@87: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java,
sascha@87: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java,
sascha@87: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java,
sascha@87: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java,
sascha@87: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/App.java,
sascha@87: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java,
sascha@87: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java,
sascha@87: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java:
sascha@87: 	  Added javadoc.
sascha@87: 
sascha@87: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/package.html,
sascha@87: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/package.html: New.
sascha@87: 	  Package descriptions.
sascha@88: 
sascha@86: 2010-03-26	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@86: 
sascha@86: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java,
sascha@86: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java,
sascha@86: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
sascha@86: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
sascha@86: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java,
sascha@86: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java,
sascha@86: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java,
sascha@86: 	  artifacts/src/main/java/de/intevation/artifacts/CallContext.java,
sascha@86: 	  artifacts/src/main/java/de/intevation/artifacts/Artifact.java:
sascha@86: 	  Removed trailing whitespace:
sascha@86: 	  find -name \*.java | xargs sed -i 's/[ \t]\+$//'
sascha@86: 
sascha@85: 2010-03-26	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@85: 
sascha@85: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java,
sascha@85: 	  artifacts/src/main/java/de/intevation/artifacts/Artifact.java:
sascha@85: 	  Completed Javadoc of sub module 'artifacts'. TODO: add Javadoc to
sascha@85: 	  module 'artifact-database'
sascha@85: 
sascha@85: 	* artifacts/src/main/java/de/intevation/artifacts/CallContext.java,
sascha@85: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java,
sascha@85: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java,
sascha@85: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java,
sascha@85: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java,
sascha@85: 	  artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java:
sascha@85: 	  Fixed vim modeline.
sascha@85: 
ingo@84: 2010-03-25  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@84: 
ingo@84: 	* artifacts/src/main/java/de/intevation/artifacts/CallContext.java: Added a
ingo@84: 	  method 'getTimeToLive()' which retrieves the current artifact's time to 
ingo@84: 	  live. The ttl of an artifact is available where ever a CallContext object
ingo@84: 	  is existing.
ingo@84: 
ingo@84: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@84: 	  Added new field ttl of an artifact to an PersistentArtifact.
ingo@84: 
ingo@84: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@84: 	  Implemented 'getTimeToLive()' in CallContextImpl.
ingo@84: 
ingo@83: 2010-03-22  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@83: 
ingo@83: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java:
ingo@83: 	  Install a SLF4JBridgeHandler after logging is configured. This handler is
ingo@83: 	  used to route incoming java.util.logging logs to SLF4J. In our case, we
ingo@83: 	  route this incoming log to our log4j logger.
ingo@83: 
ingo@83: 	* artifact-database/pom.xml: Added dependencies for SLF4J 1.5.11.
ingo@83: 
ingo@82: 2010-03-22  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@82: 
ingo@82: 	  Issue208 (Remove special data of an 'out'-target before exporting
ingo@82: 	  artifacts)
ingo@82: 
ingo@82: 	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Added a
ingo@82: 	  'cleanup(Object context)' method to the interface definition of artifacts.
ingo@82: 	  This method should be called before exporting an artifact and should
ingo@82: 	  remove data stored on an artifact (or its current state) which have been
ingo@82: 	  written by an 'out'.
ingo@82: 
ingo@82: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java:
ingo@82: 	  Default implementation of cleanup method - nothing is done here yet.
ingo@82: 	  Override this method if an artifact needs to be cleaned before an export.
ingo@82: 
ingo@82: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java:
ingo@82: 	  Call cleanup method on the proxied artifact if proxied is existing.
ingo@82: 
ingo@82: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@82: 	  Call cleanup method before exporting an artifact as xml.
ingo@82: 
ingo@81: 2010-03-19  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@81: 
ingo@81: 	  Issue208 (Artifact gets a new identifier after being imported)
ingo@81: 
ingo@81: 	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Added a new
ingo@81: 	  method setIdentifier(String identifier).
ingo@81: 
ingo@81: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java:
ingo@81: 	  Default implementation of setIdentifier(String identifier) to give an 
ingo@81: 	  artifact a new identifier.
ingo@81: 
ingo@81: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@81: 	  Set a new identifier on an artifact after deserializing it.
ingo@81: 
ingo@81: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java:
ingo@81: 	  Set the identifier of the proxied artifact right after setting its own
ingo@81: 	  identifier.
ingo@81: 
ingo@80: 2010-03-19  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@80: 
ingo@80: 	  Issue208 (Artifact import)
ingo@80: 
ingo@80: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ImportResource.java:
ingo@80: 	  New server resource to import an artifact from an incoming xml document.
ingo@80: 	  The resource is available as /import and accepts xml documents send via
ingo@80: 	  HTTP POST.
ingo@80: 
ingo@80: 	* artifact-database/src/main/resources/sql/org-postgresql-driver.properties,
ingo@80: 	  artifact-database/src/main/resources/sql/org-h2-driver.properties: New sql
ingo@80: 	  statements to update an existing artifact.
ingo@80: 
ingo@80: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@80: 	  New method to import an artifact from an incoming xml document. The data
ingo@80: 	  contained in this document is decoded using the secret.
ingo@80: 
ingo@80: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@80: 	  New method to store an artifact into database or replace it if an artifact
ingo@80: 	  with the given id is already existing.
ingo@80: 
ingo@80: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java:
ingo@80: 	  Removed method to convert a byte array into a string (this is done by
ingo@80: 	  Apache's Hex class in commons codec) and added a new method to convert a
ingo@80: 	  string into a byte array using Apache commons codec as well.
ingo@80: 
ingo@80: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
ingo@80: 	  Register ImportResource to webserver.
ingo@80: 
ingo@80: 
ingo@80: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java,
ingo@80: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java,
ingo@80: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java,
ingo@80: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/Id.java:
ingo@80: 	  Converted the author javadocs.
ingo@80: 
ingo@79: 2010-03-16  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@79: 
ingo@80: 	  Issue208 (Artifact export)
ingo@79: 
ingo@79: 	* artifact-database/doc/example-conf/conf.xml: Added a section to configure
ingo@79: 	  a secret string used to identify artifact imports for security reason.
ingo@79: 	  Incoming artifact imports need to be identified with this secret, otherwise
ingo@79: 	  the import should be blocked.
ingo@79: 	  Xpath for this secret: '/artifact-database/export-secret/text()'
ingo@79: 
ingo@79: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
ingo@79: 	  New attribute 'exportSecret' and some code to read the secret from
ingo@79: 	  configuration while application startup.
ingo@79: 
ingo@79: 	* artifact-database/pom.xml: Added Apache Commons Codec library used to
ingo@79: 	  encode/decode artifact data.
ingo@79: 
ingo@79: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java:
ingo@79: 	  New utilities class for frequently used string operations.
ingo@79: 
ingo@79: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@79: 	  Added some methods for exporting artifacts as xml documents. The data part
ingo@79: 	  is base64 encoded. A secret key is used while encoding this data to verify
ingo@79: 	  artifact imports, later.
ingo@79: 
ingo@79: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
ingo@79: 	  Added an artifact loader interface used to deserialize artifacts. 
ingo@79: 	  getArtifact() implements such an ArtifactLoader to return
ingo@79: 	  PersistentArtifacts.
ingo@79: 
ingo@79: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ExportResource.java:
ingo@79: 	  New. ServerResource to export artifacts (innerGet). This resource is
ingo@79: 	  available under "/export/{uuid}" via HTTP-GET request and returns an
ingo@79: 	  artifact specified by uuid as xml document.
ingo@79: 
ingo@79: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
ingo@79: 	  Register ExportResource to webserver.
ingo@79: 
ingo@79: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
ingo@79: 	  Added method to export artifacts.
ingo@79: 
ingo@79: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java:
ingo@79: 	  Reset bootstrap after application startup.
ingo@79: 
sascha@78: 2010-03-11	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@78: 
sascha@78: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java,
sascha@78: 	  artifacts/src/main/java/de/intevation/artifacts/CallContext.java,
sascha@78: 	  artifacts/src/main/java/de/intevation/artifacts/Service.java,
sascha@78: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java,
sascha@78: 	  artifacts/src/main/java/de/intevation/artifacts/CallMeta.java,
sascha@78: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java,
sascha@78: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java,
sascha@78: 	  artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java,
sascha@78: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java,
sascha@78: 	  artifacts/src/main/java/de/intevation/artifacts/Artifact.java,
sascha@78: 	  artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java:
sascha@78: 	  Repaired the javadoc stuff.
sascha@78: 
sascha@77: 2010-02-21	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@77: 
sascha@77: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultPreferredLocale.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/App.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServicesResource.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java,
sascha@77: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java,
sascha@77: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java,
sascha@77: 	  artifacts/src/main/java/de/intevation/artifacts/Service.java,
sascha@77: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java,
sascha@77: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java,
sascha@77: 	  artifacts/src/main/java/de/intevation/artifacts/CallMeta.java,
sascha@77: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java,
sascha@77: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java,
sascha@77: 	  artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java,
sascha@77: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java,
sascha@77: 	  artifacts/src/main/java/de/intevation/artifacts/Artifact.java,
sascha@77: 	  artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java:
sascha@77: 	  find -name \*.java | \
sascha@77: 	  xargs sed -i \
sascha@77: 	  -e 's/@author[ ]\+\([^(<]\+\)[<(]\([^>)]\+\)[>)]/@author <a href="mailto:\2">\1<\/a>/g' \
sascha@77: 	  -e 's@[ ]\+</a>@</a>@g'
sascha@77: 
sascha@77: 	  Bring @author javadoc tags in form '@author <a href="john.doe@example.com">John Doe</a>'
sascha@77: 	  to make the sources to be able to be formatted with jalopy (http://jalopy.sourceforge.net).
sascha@77: 
ingo@76: 2010-02-05  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@76: 
ingo@76: 	  Issue170
ingo@76: 	
ingo@76: 	* artifact-database/pom.xml: Changed log4j version to 1.2.14 (later version
ingo@76: 	  causes errors and breaks while maven build process).
ingo@76: 
tim@75: 2010-02-01  Tim Englich  <tim.englich@intevation.de>
tim@75: 
tim@75: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java (innerPost): 
tim@75: 	  Put the XML-Document which was send by the client to the 
tim@75: 	  ArtifactDatabase.createArtifactWithFactory-Method.
tim@75: 	  
tim@75: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java (createArtifact),
tim@75: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java (createArtifactWithFactory),
tim@75: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java (setup),
tim@75: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java (setup),
tim@75: 	  artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java (createArtifactWithFactory),
tim@75: 	  artifacts/src/main/java/de/intevation/artifacts/Artifact.java (setup): 
tim@75: 	  Changed Method signatures so that it is possible to put the Document
tim@75: 	  which will be send during the create Step of an Artifact to the Setup-Routine
tim@75: 	  of an Artifact.
tim@75: 	  Now it is possible to send further Informations to the Artifact using the 
tim@75: 	  XML-Document.
tim@75: 	  This is nessesary for manipoulating the Artifact e.g. setting Parameters 
tim@75: 	  which should only be displaied or e.g. put an Geometry-Object into the 
tim@75: 	  Artifact which should limit the displayed results.
tim@75: 
hans@74: 2010-01-27  Hans Plum <hans@intevation.de>
hans@74: 
hans@74: 	RELEASE 0.4
hans@74: 
hans@74: 	* Changes, NEWS, ChangeLog: summarized activities.
hans@74: 
sascha@73: 2010-01-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@73: 
sascha@73: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java:
sascha@73: 	  New REST wrapper to call the service. Bound under '/service/{service}' 
sascha@73: 	  where '{service}' is the name of the service as announced by '/services'.
sascha@73: 
sascha@73: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
sascha@73: 	  Register new resource to web server.
sascha@73: 
sascha@72: 2010-01-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@72: 
sascha@72: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServicesResource.java:
sascha@72: 	  New. Serves a list of available services under '/services' as XML. Structure
sascha@72: 	  is much like '/factories' with 's/artifact/service/'.
sascha@72: 
sascha@72: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
sascha@72: 	  Register new resource to web server.
sascha@72: 
sascha@71: 2010-01-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@71: 
sascha@71: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
sascha@71: 	  Load service factories while bootstrapping the server.
sascha@71: 
sascha@71: 	* artifact-database/doc/example-conf/conf.xml: Added examples for trivial services.
sascha@71: 
sascha@70: 2010-01-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@70: 
sascha@70: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
sascha@70: 	  Forgot to throw exception if service is not available.
sascha@70: 
sascha@70: 	* artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java:
sascha@70: 	  Fixed indention.
sascha@70: 
sascha@70: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
sascha@70: 	  Implemented service factory loading trivial. TODO: Load
sascha@70: 	  them from the configuration.
sascha@70: 
sascha@70: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@70: 	  Serve the services.
sascha@70: 
sascha@70: 2010-01-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@69: 
sascha@69: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java:
sascha@69: 	  Default implementation of a service. Useful as a base class.
sascha@69: 
sascha@69: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java:
sascha@69: 	  Default implementation of a service factory. Modelled right after
sascha@69: 	  DefaultArtifactFactory. Useful as a base class.
sascha@69: 
sascha@70: 2010-01-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@68: 
sascha@68: 	* artifacts/src/main/java/de/intevation/artifacts/Service.java: New.
sascha@68: 	  Interface to describe a service. It takes XML documents and produces
sascha@68: 	  XML documents.
sascha@68: 
sascha@68: 	* artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java:
sascha@68: 	  Factory to create services. Setup at startup.
sascha@68: 
sascha@68: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
sascha@68: 	  Added methods to describe the available services and call them.
sascha@68: 
sascha@68: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@68: 	  Implemented new ArtifactDatabase interface trivial. TODO:
sascha@68: 	  Setting it up from configuration, do the processing, register
sascha@68: 	  urls in REST server and so on.
sascha@68: 
sascha@70: 2010-01-22	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@67: 
sascha@67: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java:
sascha@67: 	  Added method 'toStream()' to copy a document into an output stream.
sascha@67: 
ingo@66: 2010-01-15  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@66: 
ingo@66: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java,
ingo@66: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
ingo@66: 	  Added a method 'getInternalArtifactFactory' to get an ArtifactFactory by
ingo@66: 	  its name.
ingo@66: 
ingo@66: 	* artifacts/src/main/java/de/intevation/artifacts/CallContext.java: Added
ingo@66: 	  'getDatabase' method to get access to the ArtifactDatabase from context.
ingo@66: 
ingo@65: 2010-01-12  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@65: 
ingo@65: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java,
ingo@65: 	  artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java:
ingo@65: 	  Create document namespace aware and adapted XPath expressions for this.
ingo@65: 
ingo@64: 2010-01-09  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@64: 
ingo@64: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java:
ingo@64: 	  Added	convenient method to add attributes to nodes. Attributes have no
ingo@64: 	  prefix as default.
ingo@64: 
ingo@64: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java:
ingo@64: 	  Adapted xpath (added prefix) to find action and made the document which is
ingo@64: 	  created by this resource namespace aware.
ingo@64: 
sascha@63: 2009-12-17	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@63: 
sascha@63: 	RELEASE 0.3
sascha@63: 
sascha@63: 	* Changes, NEWS, ChangeLog: summarized activities.
sascha@63: 
sascha@62: 2009-12-16	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@62: 
sascha@62: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java:
sascha@62: 	  Added static method parseDocument(File) to load document from
sascha@62: 	  file.
sascha@62: 
ingo@61: 2009-12-15  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@61: 
ingo@61: 	  Issue106
ingo@61: 
ingo@61: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java:
ingo@61: 	  Removed path to chart template which doesn't belong here.
ingo@61: 
sascha@60: 2009-12-11	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@60: 
sascha@60: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java:
sascha@60: 	Removed needless import.
sascha@60: 
ingo@59: 2009-11-23  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@59: 
ingo@59: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java:
ingo@59: 	  Added path to chart template file and a new method to retrieve the
ingo@59: 	  configuration.
ingo@59: 
sascha@58: 2009-11-23	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@58: 
sascha@58: 	* artifacts/src/main/java/de/intevation/artifacts/CallContext.java:
sascha@58: 	Added a context dictionary accessible through putContextValue(key, value)
sascha@58: 	and getContextValue(key). Purpose is make artifact calls stackable and
sascha@58: 	transfer information through the call level transparently.
sascha@58: 
sascha@58: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@58: 	Adjusted default implementation of CallContext.
sascha@58: 
sascha@58: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ProxyArtifact.java:
sascha@58: 	New. A general proxy class for artifacts in artifact databases. This class uses 
sascha@58: 	the extended call context semantics.
sascha@58: 
sascha@58: 	The artifact calls (feed, describe, out, ...) are passed to a proxied artifact.
sascha@58: 	If the proxied artifact decides to be replaced by some other artifact it has to
sascha@58: 	to store a reference to the replacement artifact in the call context with
sascha@58: 	putContextValue(ProxyArtifact.REPLACE_PROXY, my_new_artifact). After the call
sascha@58: 	is finished the proxied object will change. This indirect callback mechanism is
sascha@58: 	used to minimize side effects.
sascha@58: 
sascha@58: 	The identifier() call is not forwarded to the proxied artifact to have a stable id.
sascha@58: 
sascha@58: 	Limitations: This mechanism does not let you build real matroska (multi level)
sascha@58: 	like artifact structures. This would only be possible if a kind of call context
sascha@58: 	stack is introduced.
sascha@58: 
hans@57: 2009-11-13  Hans Plum <hans@intevation.de>
hans@57: 
hans@57: 	RELEASE 0.2
hans@57: 
hans@57: 	* Changes, NEWS summarized
hans@57: 
ingo@56: 2009-11-11  Ingo Weinzierl <ingo.weinzierl@intevation.de>
ingo@56: 
ingo@56: 	* HOWTO: Added HOWTO describing the setup of the environment (apache, 
ingo@56: 	  tomcat, gnv).
ingo@56: 
sascha@55: 2009-11-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@55: 
sascha@55: 	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java: describe() now may
sascha@55: 	given an input XML document (which can be null to indicate that no input is given).
sascha@55: 
sascha@55: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java:
sascha@55: 	Adjusted to implemented the Artifact interface.
sascha@55: 
sascha@55: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: Pass through
sascha@55: 	the optional XML input document to describe().
sascha@55: 
sascha@55: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@55: 	Implements the adjusted ArtifactDatabase interface.
sascha@55: 
sascha@55: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java:
sascha@55: 	Now its also possible to send describe() as a POST request. The request body is handled as
sascha@55: 	XML.
sascha@55: 
tim@54: 2009-10-21  Tim Englich  <tim.englich@intevation.de>
tim@54: 
hans@57: 	Issue 59: Make paths in configuration relativ
hans@57: 
sascha@55: 	* src/main/java/de/intevation/artifactdatabase/Config.java (replaceConfigDir): 
sascha@55: 	Applied patch from slt to set the Configuration Folder into the AbsoluteFileName issue59
sascha@55: 
sascha@53: 2009-10-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@53: 
sascha@53: 	RELEASE 0.1
sascha@53: 
sascha@53: 	* Changes, NEWS: Summaried changes.
sascha@53: 
sascha@52: 2009-10-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* Changelog -> ChangeLog: Renamed to make eclipse happy.
sascha@52: 
sascha@52: 2009-10-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java:
sascha@52: 	Initial instance variable with given languages in constructor.
sascha@52: 
sascha@52: 2009-10-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java:
sascha@52: 	Better implementation for fetching the preferred locale.
sascha@52: 
sascha@52: 2009-10-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/CallMeta.java:
sascha@52: 	Added method to fetch preferred locale.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java:
sascha@52: 	Trivial (and incorrect!) implementation.
sascha@52: 
sascha@52: 2009-10-01	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	Add i18n support via "Accept-Language" HTTP headers.
sascha@52: 
sascha@52: 	* artifact-database/pom.xml: Using restlet 2.0 snapshot. 
sascha@52: 	M3 does not implement the required API, M4 is not in maven repo yet.
sascha@52: 	TODO: Bring to M4 as soon it is released in maven repository.
sascha@52: 
sascha@52: 	* contrib/run.sh: Adjusted to use the snapshot.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/CallMeta.java:
sascha@52: 	New. Meta information of a call, languages, e.g.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/PreferredLocale.java:
sascha@52: 	New. Model preferred languages.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/CallContext.java:
sascha@52: 	Has now a reference to the meta information.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
sascha@52: 	describe, feed, advance and out call contexts are now enriched with 
sascha@52: 	external meta data.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@52: 	Additional debug output how long the cleaner slept between cleanups.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultPreferredLocale.java:
sascha@52: 	New. Default implementation of PreferredLocale.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java:
sascha@52: 	New. Default implementation of CallMeta.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@52: 	Adjusted to take the additional meta information.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java:
sascha@52: 	Added a method to create a CallMeta object from web client information.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java:
sascha@52: 	Call the artifact database with the meta data from there base class BaseResoure.
sascha@52: 
sascha@52: 2009-10-01	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java,
sascha@52: 	artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java,
sascha@52: 	artifacts/src/main/java/de/intevation/artifacts/Artifact.java:
sascha@52: 	Removed trailing whitespace.
sascha@52: 
sascha@52: 2009-10-01	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@52: 	Removed needless imports.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java:
sascha@52: 	Be more verbose on output on which host the REST server is bound.
sascha@52: 
sascha@52: 2009-09-30  Hans Plum <hans@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/doc/example-conf/conf.xml, README:
sascha@52: 	Fixed inconsistencies after changes in h2-configuraton.
sascha@52: 
sascha@52: 2009-09-29	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* pom.xml, artifacts/pom.xml, artifact-database/pom.xml: 
sascha@52: 	Set source encoding to UTF-8.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java:
sascha@52: 	If '/artifact-database/rest-server/listen/text()' is given in conf.xml
sascha@52: 	the value is used to bind REST server to that interface.
sascha@52: 
sascha@52: 	* artifact-database/doc/example-conf/conf.xml: Added 'listen' to
sascha@52: 	demo configuration.
sascha@52: 
sascha@52: 2009-09-24	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties:
sascha@52: 	Time delta calculation in SQL statement to figure out outdated artifacts
sascha@52: 	was broken.
sascha@52: 
sascha@52: 2009-09-24	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java:
sascha@52: 	Added debug output to make tracing of artifact lifecyle easier.
sascha@52: 
sascha@52: 2009-09-23	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/doc/schema-pg.sql, artifact-database/doc/schema-h2.sql:
sascha@52: 	Added column 'factory' to artifacts table to store the name of the
sascha@52: 	creating factory.
sascha@52: 
sascha@52: 	!!!
sascha@52: 	!!! THIS BREAKS OLD ARTIFACT DATABASES!
sascha@52: 	!!!
sascha@52: 	!!! To update old databases issue at database prompt:
sascha@52: 	!!!    ALTER TABLE artifacts ADD COLUMN factory VARCHAR(256) NOT NULL;
sascha@52: 	!!!
sascha@52: 
sascha@52: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties,
sascha@52: 	artifact-database/src/main/resources/sql/org-postgresql-driver.properties:
sascha@52: 	Fixed issue in SQL statements for touching artifacts. Fill factory name
sascha@52: 	into artifact relation.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactSerializer.java:
sascha@52: 	To allow different serialization models each ArtifactFactory has 
sascha@52: 	serializer for the artifacts.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java:
sascha@52: 	Add method to return ArtifactSerializer.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactSerializer.java:
sascha@52: 	Uses Java standard object serialisation. 
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java:
sascha@52: 	Uses th DefaultArtifactSerializer as ArtifactSerializer
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@52: 	The serialisation method is select via the 'factory' column of the 'artifacts'
sascha@52: 	table.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/App.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@52: 	Adjusted to fit the new serialisation model.
sascha@52: 
sascha@52: 2009-09-23	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java:
sascha@52: 	New. Base class to log RuntimeExceptions to log4j error log.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java:
sascha@52: 	Adjusted to extend from BaseResource.
sascha@52: 
sascha@52: 2009-09-21	Tim Englich	<tim.englich@intevation.de>
sascha@52: 
sascha@52: 	* Added some IDE-specific files to the Ignorelist.
sascha@52: 
sascha@52: 2009-09-18	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/doc/schema.sql: removed.
sascha@52: 	* artifact-database/doc/schema-h2.sql: re-added here. It is H2 specific.
sascha@52: 
sascha@52: 	* artifact-database/doc/schema-pg.sql: New. Schema for PostgreSQL 8.3 +
sascha@52: 
sascha@52: 	* artifact-database/src/main/resources/sql/org-postgresql-driver.properties: New.
sascha@52: 	SQL statements for PostgreSQL.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java:
sascha@52: 	XPath expressions to access config were wrong. Added some debug logging.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@52: 	Added some debug logging.
sascha@52: 
sascha@52: 	* artifact-database/pom.xml: Added dependency to postgresql JDBC driver
sascha@52: 
sascha@52: 	* contrib/run.sh: Added postgresql JDBC to CLASSPATH.
sascha@52: 
sascha@52: 2009-09-16  Tim Englich  <tim.englich@intevation.de>
sascha@52: 
sascha@52: 	* src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java (represent) Edited: 
sascha@52: 	Switched from Get to Post communication.
sascha@52: 
sascha@52: 2009-09-16  Tim Englich  <tim.englich@intevation.de>
sascha@52: 
sascha@52: 	* src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java (feed) Edited:
sascha@52: 	Bug fixed: Now the method will call the feed Method of the used Artifact instead 
sascha@52: 	of the advance Method.
sascha@52: 
sascha@52: 2009-09-15	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java:
sascha@52: 	More warning log output in POST case.
sascha@52: 
sascha@52: 2009-09-15	Tim Englich	<tim.englich@intevation.de>
sascha@52: 
sascha@52: 	* src/main/java/de/intevation/artifactdatabase/Backend.java: 
sascha@52: 	Bug Fixed: Comparation for outdated Artifacts was Wrong.
sascha@52: 
sascha@52: 	* src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java (represent):
sascha@52: 	Warn-Logging Integrated for Exception analysys.
sascha@52: 
sascha@52: 2009-09-14	Tim Englich	<tim.englich@intevation.de>
sascha@52: 
sascha@52: 	* src/main/java/de/intevation/artifacts/ArtifactFactory.java Edited:
sascha@52: 	Make Objects Serializable 
sascha@52: 
sascha@52: 	* src/main/resources/sql/org-h2-driver.properties: 
sascha@52: 	Bug Fixed in SQL-Query
sascha@52: 
sascha@52: 2009-09-13	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	Refactored the persistent handling of the artifacts in the 
sascha@52: 	artifact database. When an artifact is called (describe, feed,
sascha@52: 	advance, out) a new CallContext is given instead of the
sascha@52: 	old Object context. CallContext.globalContext() returns the
sascha@52: 	old Object context now. CallContext.afterCall() may be
sascha@52: 	called from inside describe, feed, advance and out to tell
sascha@52: 	the artifact database what to do after the processing of
sascha@52: 	the specific call.
sascha@52: 	
sascha@52: 	The accepted values are:
sascha@52: 		- NOTHING    for doing nothing
sascha@52: 		- TOUCH      for just update the last access time
sascha@52: 		- STORE      for persisting the artifact.
sascha@52: 		- BACKGROUND to signal that the artifact has started
sascha@52: 		             a background operation.
sascha@52: 
sascha@52: 	After the background operation the artifact has to call
sascha@52: 	CallContext.fromBackground() to signal the artifact 
sascha@52: 	database that the artifact needs to be touched or stored.
sascha@52: 
sascha@52: 	!!! Without this call the artifact database assumes there
sascha@52: 	!!! is still some background operation on this artifact
sascha@52: 	!!! which prevents reclaiming resources
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/CallContext.java:
sascha@52: 	New. New API to cope with background processing.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java:
sascha@52: 	Replaced old Object context with CallContext context.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java:
sascha@52: 	Adjusted.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
sascha@52: 	For a better encapsulation of the persistence operations of the
sascha@52: 	artifacts the database does not return artifacts any more. It delegates
sascha@52: 	the describe, feed, advance and out call to internal structures.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabaseException.java:
sascha@52: 	New. Simplifies handling of error conditions inside of artifact database.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@52: 	Adjusted to new interface. Internally it handles the background API.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java:
sascha@52: 	Adjusted to new artifact database interface (which greatly simplifies things)
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@52: 	Artifacts in background are not removed from database any longer.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: Little
sascha@52: 	re-wirering need for new cleanup.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: 
sascha@52: 	Simplified to do the SQL stuff only. The most infrastructure stuff is now done
sascha@52: 	in ArtifactDatabaseImpl.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Id.java:
sascha@52: 	New. Helper base class to enable filtering of background artifacts by there
sascha@52: 	database id.
sascha@52: 
sascha@52: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties:
sascha@52: 	Modified the INSERT statement to write the serialized artifact, too.
sascha@52: 
sascha@52: 2009-09-12	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java(out):
sascha@52: 	out() is now called with an java.io.Outputstream to place
sascha@52: 	the output.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java:
sascha@52: 	Adjusted.
sascha@52: 
sascha@52: 2009-09-11	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/doc/example-conf/conf.xml: Added
sascha@52: 	sleep time for cleanup thread.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java:
sascha@52: 	Start cleanup thread at startup.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@52: 	Make artifact restoring bit more robust, added ref to
sascha@52: 	cleanup thread to do an immediate cleanup when dead artifact
sascha@52: 	is found by lookup.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java:
sascha@52: 	New. The cleanup thread. It cleans up the artifact database
sascha@52: 	perodically and calls the endOfLife() methods of the dead
sascha@52: 	artifacts. Default cleanup interval is 5 minutes.
sascha@52: 
sascha@52: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties:
sascha@52: 	Tuned SQL a bit to fetch only a 50 artifacts in search for
sascha@52: 	outdated artifacts to avoid too much memory consumption.
sascha@52: 
sascha@52: 	* contrib/run.sh: Little tweak to work with more than one
sascha@52: 	commons-pool version installed.
sascha@52: 
sascha@52: 	* TODO: Removed remarks about the now implemented killer 
sascha@52: 	thread and the moves XML stuff.
sascha@52: 
sascha@52: 	* README: Changed text how to create a H2 database from
sascha@52: 	command line only. XXX: This is still broken. The best
sascha@52: 	way to set up the database by now is to start the Console 
sascha@52: 	client, connect to the database, c&p the schema.sql 
sascha@52: 	into the SQL text area and execute it.
sascha@52: 
sascha@52: 2009-09-10	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java:
sascha@52: 	New. Handler for 'out'. Reachable via HTTP GET '/artifact/{uuid}/{type}'.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/OutRepresentation.java:
sascha@52: 	New. Special representation for out. TODO: use streaming API.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java:
sascha@52: 	Regrouped imports.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: Added
sascha@52: 	handler for 'out' to routing table.
sascha@52: 
sascha@52: 2009-09-10	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java:
sascha@52: 	Added handler for 'advance' and 'feed' to be called by HTTP POST '/artifact/{uuid}'.
sascha@52: 
sascha@52: 2009-09-10	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java:
sascha@52: 	Added handler for 'describe' to be fetched by HTTP GET '/artifact/{uuid}'.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
sascha@52: 	Add route to new describe handler.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Fixed
sascha@52: 	problems with serialization of artifacts to backing database.
sascha@52: 
sascha@52: 2009-09-10	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java:
sascha@52: 	Added method to get strings from XML documents via XPath.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java:
sascha@52: 	Used XMLUtils to create new XML documents.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@52: 	Forgot to store backend in instance variable.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java:
sascha@52: 	Added static instance of this class.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java:
sascha@52: 	Forward call to ArtifactDatabase, do some error handling.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@52: 	Treat problems with database errors more gracefully.
sascha@52: 
sascha@52: 	* contrib/run.sh: Added dependencies to common-pool and common-dbcp.
sascha@52: 
sascha@52: 	* artifact-database/doc/data/create-artifact.xml: New. example data set to
sascha@52: 	create an artifact. Usage
sascha@52: 
sascha@52: 	$ curl --data-binary @doc/data/create-artifact.xml -D - http://localhost:8181/create
sascha@52: 
sascha@52: 2009-09-10	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java:
sascha@52: 	Removed needless import.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java:
sascha@52: 	Moved some XPath stuff from Config into XMLUtils.
sascha@52: 
sascha@52: 2009-09-10	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java(setup): Added
sascha@52: 	callback parameter in form of the creating factory.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java:
sascha@52: 	Adjusted to match new Artifact interface.
sascha@52: 	
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java:
sascha@52: 	Call artifact.setup() with this.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java:
sascha@52: 	Removed namespace stuff.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java:
sascha@52: 	Created namespace stuff, need for XPath for e.g.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java:
sascha@52: 	Use new namespace stuff.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: 
sascha@52: 	Added author.
sascha@52: 
sascha@52: 2009-09-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java:
sascha@52: 	Added method newXPath() to create XPaths with namespace binding.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java:
sascha@52: 	Uses new method from XMLUtils.
sascha@52: 
sascha@52: 2009-09-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* trunk/artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java,
sascha@52: 	trunk/artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java:
sascha@52: 	Removed meta data from resources. They prevented serving the right results.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@52: 	Removed needless import.
sascha@52: 
sascha@52: 2009-09-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CreateResource.java:
sascha@52: 	New. Resource to create an artifact. Not working on artifact database yet.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
sascha@52: 	Attached create to web server.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java:
sascha@52: 	Added meta data to Get annotation.
sascha@52: 
sascha@52: 2009-09-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/pom.xml: Added dependency to restlet.ext.xml
sascha@52: 	for XML handling in representations.
sascha@52: 
sascha@52: 	* contrib/run.sh: Adjusted to fit new dependency.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/XMLUtils.java:
sascha@52: 	New. Handle some boiler plate XML stuff. Move more stuff of this kind
sascha@52: 	into this file.
sascha@52: 
sascha@52: 	* TODO: Added remark to move more XML stuff into XMLUtils.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java:
sascha@52: 	Tell at startup on which port we are listing.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/FactoriesResource.java:
sascha@52: 	Representation to list the available factories.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
sascha@52: 	Attach new factory listing to web app.
sascha@52: 
sascha@52: 2009-09-09	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/doc/artifactdb-example-conf.xml: removed
sascha@52: 	* artifact-database/doc/example-conf/conf.xml: Re-added here.
sascha@52: 
sascha@52: 	The configuration is now found in a subdirectory set by the
sascha@52: 	system property 'artifact.database.dir'. If this property is
sascha@52: 	not set '~/.artitactdb' is used. This directory should contain
sascha@52: 	a file 'conf.xml' with the configuration details.
sascha@52: 	  If the artifact database is started as a standalone the config
sascha@52: 	directory is searched for 'log4j.properties' to configure the
sascha@52: 	logging.
sascha@52: 	  The H2 database is also search in this directory with the
sascha@52: 	name 'artifacts.db' if the connection url in config.xml is
sascha@52: 	not overwritten.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java:
sascha@52: 	Refactored a bit to follow the new configuration policy.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java:
sascha@52: 	Build default connection url as described.
sascha@52: 
sascha@52: 	* artifact-database/doc/example-conf/log4j.properties: New.
sascha@52: 	example logging config
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
sascha@52: 	Added some more logging infos.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java:
sascha@52: 	Load the log4j configuration at startup and starts a REST standalone web server.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest: New.
sascha@52: 	Package for REST binding.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java:
sascha@52: 	Convenience wrapper to start a standalone REST web server.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java:
sascha@52: 	Concrete REST application. TODO: attach restlets to interact with artifact database.
sascha@52: 
sascha@52: 	* contrib/run.sh: Little start script to launch artifact database for test
sascha@52: 	purpose from classes without the need to build packages. 
sascha@52: 	Background: The maven exec:exec goal does not work consistently for me (slt). 
sascha@52: 	At home it does, at work it doe not. Anyway. Usage:
sascha@52: 
sascha@52: 	$ ./contrib/run.sh \
sascha@52: 	      -Dartifact.database.dir=artifact-database/doc/example-conf/ \
sascha@52: 	      de.intevation.artifactdatabase.App
sascha@52: 
sascha@52: 2009-09-08	Tim Englich	<tim.englich@intevation.de>
sascha@52: 
sascha@52: 	* src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java : Edited
sascha@52: 	Constants for Namespace-URL and Namespace-Prefix added 
sascha@52: 
sascha@52: 2009-09-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java,
sascha@52: 	artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java:
sascha@52: 	Integrated log4j
sascha@52: 
sascha@52: 	* artifact-database/pom.xml: Added dependency to log4j
sascha@52: 
sascha@52: 	* TODO: Removed remark to integrate logging.
sascha@52: 
sascha@52: 2009-09-07  Tim Englich  <tim.englich@intevation.de>
sascha@52: 
sascha@52: 	* src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: edited
sascha@52: 	Bug fixed in XPath Expression. Now the Nodes and not the Text of the Nodes will
sascha@52: 	be used instantiating the ArtifactFactory. 
sascha@52: 	
sascha@52: 2009-09-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@52: 	Implemented loading of artifacts from database. If the last access of an 
sascha@52: 	artifact is too long ago for its time to life, null is returned.
sascha@52: 
sascha@52: 	* TODO: Added remark to implement a "killer" thread which periodically cleans the
sascha@52: 	database from outdated artifacts and calls the endOfLife() method on those.
sascha@52: 
sascha@52: 2009-09-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java:
sascha@52: 	Properties wrapper for SQL statements. The properties are looked up
sascha@52: 	in resorces /sql/DRIVER.properties (DRIVER is the name of the db driver class,
sascha@52: 	lowercased and '.' replaced by '-'. 'org.h2.Driver' turns to
sascha@52: 	'org-h2-driver.properties', e.g.
sascha@52: 
sascha@52: 	* artifact-database/src/main/resources/sql/org-h2-driver.properties:
sascha@52: 	SQL statements for H2 database.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@52: 	Artifacts are proxies/wrapped by an special Artifact implementation
sascha@52: 	to bound db activities transparentely to the Artifact. XXX: It has
sascha@52: 	to be evaluated if a more direct concept like extending the Artifact API
sascha@52: 	to store itself would be more robust for future implementations.
sascha@52: 	TODO: Loading Artifact from db is not implemented yet.
sascha@52: 
sascha@52: 2009-09-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
sascha@52: 	New. Used to wrap database presentations of artifacts into artifacts.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java:
sascha@52: 	New. Implements a ArtifactDatabase backed by Backend.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java:
sascha@52: 	Removed empty last line.
sascha@52: 	
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java:
sascha@52: 	Wired together Backend, ArtifactDatabaseImpl and FactoryBootstrap.
sascha@52: 
sascha@52: 2009-09-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java:
sascha@52: 	Typo in XPath expression.
sascha@52: 
sascha@52: 2009-09-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java(setup):
sascha@52: 	Added the setup() method to have symmetric counter part to endOfLife().
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java(timeToLiveUntouched):
sascha@52: 	Added this method to let the factory decide how long an artifact should live in ms.
sascha@52: 	This is not a part of the Artifact itself because this is only evaluated once when
sascha@52: 	the artifact is created.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java:
sascha@52: 	New. Simple base class implementation of the Artifact interface.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java:
sascha@52: 	New. Simple base class implementation of the ArtifactFactory interface. When setup()
sascha@52: 	on instances of this class is called, it pull ttl, name, description and
sascha@52: 	the artifact class name from the node given. See artifactdb-example-conf.xml
sascha@52: 	for examples.
sascha@52: 
sascha@52: 	* artifact-database/pom.xml: Cleaned up XML. 
sascha@52: 	Introduced dependency to apache commons dbcp, used for pooling of the 
sascha@52: 	database connections to artifact db. 
sascha@52: 	Added parameters for the exec:exec goal to make the project
sascha@52: 	startable without building packages.
sascha@52: 
sascha@52: 	* artifact-database/doc/schema.sql: Removed AUTO_INCREMENT from primary key
sascha@52: 	to avoid compatibility issues with other non-H2 databases (PostgreSQL, Oracle, ...)
sascha@52: 	which have no or limited support for generated keys in the JDBC driver. Now
sascha@52: 	using an explicit sequence. TTL ist now big int to bring the resolution to ms.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java:
sascha@52: 	Refactored a bit to make the XPath access function usable on arbitrary XML
sascha@52: 	documents and parts of.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java:
sascha@52: 	New. Exposes DataSource from a apache dbcp connection pool configured by the
sascha@52: 	global configuration file. See artifactdb-example-conf.xml for examples.
sascha@52: 	TODO: Write some documentation about this.
sascha@52: 
sascha@52: 	* artifact-database/doc/artifactdb-example-conf.xml: Adjusted to be a more realistic
sascha@52: 	example config file. Added references to DefaultArtifact/DefaultArtifactFactory and
sascha@52: 	demonstrate how to configure the connection pool.
sascha@52: 
sascha@52: 	* TODO: Add remark to document the connection file.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
sascha@52: 	Do not crash when config does not contain any factories.
sascha@52: 
sascha@52: 2009-09-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java (getNodeXPath):
sascha@52: 	New method to get a single node from configuration.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java (endOfLife):
sascha@52: 	New method called when artifact is going to be removed from artifact data base.
sascha@52: 
sascha@52: 2009-09-04	Tim Englich	<tim.englich@intevation.de>
sascha@52: 
sascha@52: 	* src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java (loa,
sascha@52: 	* src/main/java/de/intevation/artifacts/ArtifactFactory.java (setup):
sascha@52: 	New Parameter for Setop to put the ArtifactFactoryNode into the setup routine.
sascha@52: 
sascha@52: 2009-09-04	Tim Englich	<tim.englich@intevation.de>
sascha@52: 
sascha@52: 	* pom.xml: Edited
sascha@52: 	Buildplugins for Maven-Compiler and Maven-Eclipse Plugin integrated.
sascha@52: 
sascha@52: 2009-09-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/doc/artifactdb-example-conf.xml: Example for artifact db
sascha@52: 	configuration.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java:
sascha@52: 	New. Default implementation of ArtifactContextFactory. Creates a DefaultArtifactContext.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java:
sascha@52: 	New. Default implementation of ArtifactContext.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java:
sascha@52: 	New. Class to bootstrap the context and the artifact factories.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: Bootstrap
sascha@52: 	factories.
sascha@52: 
sascha@52: 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Config.java: New.
sascha@52: 	Loads configuration as XML from a file. The file is specified by the system
sascha@52: 	property "artifact.database.config" and defaults to "artifactdb-conf.xml".
sascha@52: 	The configuration can be searched via XPath.
sascha@52: 
sascha@52: 	* artifact-database/pom.xml: Made de.intevation.artifactdatabase.App the main
sascha@52: 	class for start up.
sascha@52: 
sascha@52: 	* TODO: Added remark to add logging to artifact database.
sascha@52: 
sascha@52: 2009-09-04	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java:
sascha@52: 	New. Factory for a global context in the artifact data base. Useful to
sascha@52: 	create shared ressources for artifacts like caches et al.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java,
sascha@52: 	artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java,
sascha@52: 	artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java,
sascha@52: 	artifacts/src/main/java/de/intevation/artifacts/Artifact.java: Uses the
sascha@52: 	global context more consistent.
sascha@52: 
sascha@52: 	* artifact-database/doc/schema.sql: Using BINARY instead of BLOB to
sascha@52: 	avoid external files for each artifact blob. See H2 documentation
sascha@52: 	for details.
sascha@52: 
sascha@52: 2009-09-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/doc/schema.sql: Schema to store artifacts
sascha@52: 	in H2 databases.
sascha@52: 
sascha@52: 	* artifact-database/pom.xml: Added dependencies to H2 and
sascha@52: 	restlet.
sascha@52: 
sascha@52: 	* pom.xml: Added repository to fetch restlet.
sascha@52: 
sascha@52: 	* README: Describe how to create a H2 database to store artifacts.
sascha@52: 	TODO: Make it more general because description assumes usage of
sascha@52: 	a unixoid system.
sascha@52: 
sascha@52: 2009-09-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifact-database/**: created new sub project for the artefact 
sascha@52: 	database server.
sascha@52: 
sascha@52: 	* pom.xml: Registered new sub project and made artifacts a
sascha@52: 	sub project, too.
sascha@52: 
sascha@52: 	* artifacts/pom.xml: Adjusted to make a artifacts a sub project.
sascha@52: 
sascha@52: 2009-09-02	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/Artifact.java:
sascha@52: 	Interface of the central component of the system.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java:
sascha@52: 	Central place to store artifacts in.
sascha@52: 
sascha@52: 	* artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java:
sascha@52: 	Factory to build artifacts. Works together with ArtifactDatabase.
sascha@52: 
sascha@52: 	* artifacts/pom.xml: Simple maven file to compile the project.
sascha@52: 
sascha@52: 2009-09-01	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
sascha@52: 
sascha@52: 	* README, Changelog, Changes, NEWS, TODO: New. Initial setup