sascha@235: 2011-04-04 Sascha L. Teichmann 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@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@233: sascha@233: * src/**/*.java: Removed trailing whitespace. sascha@233: sascha@233: 2011-03-31 Sascha L. Teichmann 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@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@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@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@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@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@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@224: ingo@224: Tagged as RELEASE 1.1 ingo@224: ingo@223: 2011-03-30 Ingo Weinzierl 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@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@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@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@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@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@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@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@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@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@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@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@211: ingo@211: * artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java: ingo@211: Added a method to append an 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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@96: ingo@96: * Changes, NEWS, ChangeLog: Summarized activities. ingo@96: ingo@95: 2010-04-27 Ingo Weinzierl 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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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 \1<\/a>/g' \ sascha@77: -e 's@[ ]\+@@g' sascha@77: sascha@77: Bring @author javadoc tags in form '@author John Doe' 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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@57: hans@57: RELEASE 0.2 hans@57: hans@57: * Changes, NEWS summarized hans@57: ingo@56: 2009-11-11 Ingo Weinzierl 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@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@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@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@52: sascha@52: * Changelog -> ChangeLog: Renamed to make eclipse happy. sascha@52: sascha@52: 2009-10-02 Sascha L. Teichmann 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@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@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@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@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@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 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@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@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@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@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@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 sascha@52: sascha@52: * Added some IDE-specific files to the Ignorelist. sascha@52: sascha@52: 2009-09-18 Sascha L. Teichmann 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 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 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@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 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 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@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@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@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@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@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@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@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@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@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@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@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@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@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@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 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@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 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@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@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@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@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@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@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 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 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@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@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@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@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@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@52: sascha@52: * README, Changelog, Changes, NEWS, TODO: New. Initial setup