ingo@390: 2012-05-27 Ingo Weinzierl ingo@390: ingo@390: Tagged trunk as '2.7' ingo@390: ingo@389: 2012-05-18 Ingo Weinzierl ingo@389: ingo@389: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/DateUtils.java: ingo@389: New utility class that provides functions that helps working with dates. ingo@389: ingo@388: 2012-05-15 Ingo Weinzierl ingo@388: ingo@388: * artifacts-common/src/main/java/de/intevation/artifacts/common/model/KVP.java: ingo@388: New class to store generic keys and values. ingo@388: raimund@387: 2012-05-07 Raimund Renkert raimund@387: raimund@387: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: raimund@387: Added method to create a document from string. raimund@387: ingo@386: 2012-05-03 Ingo Weinzierl ingo@386: ingo@386: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java, ingo@386: artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java: ingo@386: Defined and implemented a method getHelpText(). ingo@386: sascha@385: 2012-05-02 Sascha L. Teichmann sascha@385: sascha@385: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XSLTransformer.java: sascha@385: Widen parameters to store more than strings. sascha@385: sascha@384: 2012-04-27 Sascha L. Teichmann sascha@384: sascha@384: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/JSON.java: sascha@384: Added toJSONString() method. sascha@384: sascha@384: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: sascha@384: Fixed building XML documents from JSON strings. sascha@384: raimund@383: 2012-04-25 Raimund Renkert raimund@383: raimund@383: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/FileTools.java: raimund@383: Added method to extract zip archives to a specified directory. raimund@383: sascha@382: 2012-04-19 Sascha L. Teichmann sascha@382: sascha@382: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XSLTransformer.java: sascha@382: New. Added new XSLT processor similiar to old GNV one. sascha@382: sascha@381: 2012-04-18 Sascha L. Teichmann sascha@381: sascha@381: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/JSON.java: sascha@381: New. JSON parser from Artefact Server NG (which relies on JSON more heavily). sascha@381: sascha@381: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: sascha@381: Added method to convert JSON to XML. This is needed by the client which sascha@381: internally uses JSON to talk to the server which services only understands sascha@381: XML atm. sascha@381: sascha@380: 2012-04-04 Sascha L. Teichmann sascha@380: sascha@380: Modified services so that they are now able to return more than just sascha@380: XML documents. Needed if you want to return e.g. a PNG image from a service. sascha@380: sascha@380: * artifacts/src/main/java/de/intevation/artifacts/Service.java: sascha@380: A service now returns a tuple (data, MIME type). sascha@380: sascha@380: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java, sascha@380: artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@380: Adjusted calls. sascha@380: sascha@380: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java: sascha@380: Returns a DefaultService.Output by default. sascha@380: sascha@380: * artifact-database/src/main/java/de/intevation/artifactdatabase/XMLService.java: New. sascha@380: Convenience sub class if DefaultService to produce XML documents. Old sascha@380: Services should derive from this class now to main compatibility. sascha@380: sascha@380: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ServiceResource.java: sascha@380: Adjusted to handle the new Output tuples. sascha@380: sascha@380: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ByteArrayRepresentation.java: sascha@380: New. Wraps a byte array as a Restlet representation. sascha@380: ingo@379: 2012-03-30 Ingo Weinzierl ingo@379: ingo@379: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java: ingo@379: Avoid adding duplicated facets into the output in addFacet(). ingo@379: felix@378: 2012-02-10 Felix Wolfsteller felix@378: felix@378: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java, felix@378: artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java, felix@378: artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java: felix@378: Pass context when asking facet for keys to write on 'blackboard'. felix@378: ingo@377: 2012-02-09 Ingo Weinzierl ingo@377: ingo@377: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java: ingo@377: Added a method setFacetDescription() which sets an alternative ingo@377: description for the facet. getFacetDescription() will now return the ingo@377: Facet's descritpion itself if no alternative description has been set; ingo@377: otherwise the alternative description. ingo@377: sascha@376: 012-02-09 Sascha L. Teichmann sascha@376: sascha@376: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/StringUtils.java(join): sascha@376: Added static method to join strings with a separator. sascha@376: sascha@376: 012-01-30 Sascha L. Teichmann sascha@375: sascha@375: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java: sascha@375: Added Override annotations. sascha@375: ingo@374: 2012-01-30 Ingo Weinzierl ingo@374: ingo@374: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/StateEngine.java: ingo@374: Added a method that returns a StateData objects of a specific Artifact ingo@374: based on the Artifact's StateData's name. ingo@374: ingo@372: 2012-01-30 Ingo Weinzierl ingo@372: ingo@372: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java: ingo@372: Bugfix: search for StateData objects by name only the State has ingo@372: StateData objects set. ingo@372: ingo@371: 2012-01-30 Ingo Weinzierl ingo@371: ingo@371: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@371: Added methods to extract the default value for a min and max item. ingo@371: ingo@370: 2012-01-18 Ingo Weinzierl ingo@370: ingo@370: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@370: Added methods to retrieve the min and max values of a data item. ingo@370: sascha@369: 2012-01-16 Sascha L. Teichmann sascha@369: sascha@369: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/FileTools.java: sascha@369: Replaced legacy java.util.Stack with java.util.Deque. sascha@369: felix@368: 2012-01-16 Felix Wolfsteller felix@368: felix@368: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java, felix@368: artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java, felix@368: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, felix@368: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollectionFactory.java, felix@368: artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java, felix@368: artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: felix@368: Cosmetics. felix@368: sascha@366: 2012-01-11 Sascha L. Teichmann sascha@366: sascha@366: * artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java: sascha@366: Instance vars customValues and dataProviders are now of type Map sascha@366: and not HashMap. sascha@366: ingo@365: 2012-01-09 Ingo Weinzierl ingo@365: ingo@365: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java, ingo@365: artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java: ingo@365: Added the owner Artifact as further parameter to initialize(). ingo@365: ingo@364: 2012-01-09 Ingo Weinzierl ingo@364: ingo@364: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/FileTools.java: ingo@364: Added new functions to copy files (copyFile()) and to copy directories ingo@364: (copyDirectory()). ingo@364: ingo@363: 2012-01-09 Ingo Weinzierl ingo@363: ingo@363: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java, ingo@363: artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java: ingo@363: Added an initialize() method which might be used to initialize the State ingo@363: based on model Artifact. ingo@363: felix@362: 2011-12-16 Felix Wolfsteller felix@362: felix@362: * artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java: felix@362: (getDataProvider): Never return null. felix@362: ingo@361: 2011-12-16 Ingo Weinzierl ingo@361: ingo@361: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Output.java, ingo@361: artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java: ingo@361: Added a new method setFacets(List) to replace an existing list of ingo@361: Facets. ingo@361: ingo@360: 2011-12-14 Ingo Weinzierl ingo@360: ingo@360: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Attribute.java: ingo@360: Added a setValue(Object) method and modified the signature of toXML() ingo@360: which now returns a Node. ingo@360: ingo@360: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultAttribute.java: ingo@360: New. A default implementation of Attribute. ingo@360: ingo@359: 2011-12-14 Ingo Weinzierl ingo@359: ingo@359: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Settings.java: ingo@359: Added a removeSection(Section) method. ingo@359: ingo@359: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Section.java: ingo@359: Improved the interface to allow section having subsections. Therefore, ingo@359: addSubsection(Section), getSubsectionCount() and getSubsection(int) have ingo@359: been added. In addition, a getId() method has been added which is used ingo@359: in toXML() to create a new DOM Node. The Node name is the result of ingo@359: getId(). ingo@359: ingo@359: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultSettings.java, ingo@359: artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultSection.java: ingo@359: Default implementations for Settings and Section. ingo@359: ingo@358: 2011-12-14 Ingo Weinzierl ingo@358: ingo@358: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Settings.java: ingo@358: An interface that describes a flat API for specifying settings for ingo@358: something. A Settings object can store one or more Section instances and ingo@358: defines a toXML() operation that should append a XML representation of ingo@358: itself to a given parent Node. ingo@358: ingo@358: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Section.java: ingo@358: This interface is used to describe an API for storing and retrieving ingo@358: Attribute objects. Just as the Settings interface, it defines a toXML() ingo@358: operation that should append a XML representation of itself to a given ingo@358: parent Node. ingo@358: ingo@358: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Attribute.java: ingo@358: The interface for concrete attributes in a Section instance. An Attribute ingo@358: is the placed on the lowest level of the Settings hierachy and should be ingo@358: used to save concrete key value pairs. Even the Attribute defines the ingo@358: toXML() operation described above. ingo@358: ingo@358: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Output.java: ingo@358: Added a getSettings() and setSettings(Settings) operation. ingo@358: ingo@358: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java: ingo@358: A DefaultOutput is now able to store a Settings instance. It implements ingo@358: getSettings() and setSettings(Settings) defined in the Output interface. ingo@358: felix@357: 2011-12-09 Felix Wolfsteller felix@357: felix@357: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java, felix@357: artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java: felix@357: (getDataProviderKeys): Added parameter artifact. felix@357: felix@357: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java: felix@357: Pass artifact to changed getDataProviderKeys of Facet. felix@357: felix@357: * artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java: felix@357: (getDataProvider): Never return null, empty list instead. felix@357: felix@356: 2011-11-30 Felix Wolfsteller felix@356: felix@356: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java felix@356: (getFacetDescription): New, access facets description. felix@356: felix@355: 2011-11-30 Felix Wolfsteller felix@355: felix@355: Added convenienve bundle of artifact and facet that implements felix@355: DataProvider. This will help keeping things together in the upcoming felix@355: inter-facet pre-rendering communication ('blackboard') phase. felix@355: felix@355: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/ArtifactAndFacet.java: felix@355: New class, keeping together an artifact and a facet (thus, should felix@355: only have a short live span). Only implementation of the new felix@355: DataProvider interface. felix@355: felix@354: 2011-11-30 Felix Wolfsteller felix@354: felix@354: Extended CallContext to also act as a blackboard/service broker. felix@354: felix@354: * artifacts/src/main/java/de/intevation/artifacts/CallContext.java felix@354: (getDataProvider,registerDataProvider): New functions to register/ felix@354: consume data providers. felix@354: felix@354: * artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java felix@354: (getDataProvider,registerDataProvider): Implemented. felix@354: felix@352: 2011-11-30 Felix Wolfsteller felix@352: felix@352: Added DataProvider interface that defines api for inter-facet felix@352: communication. felix@352: felix@352: * artifacts/src/main/java/de/intevation/artifacts/DataProvider.java: felix@352: New interface to prepare inter-facet pre-rendering communication felix@352: phase ('blackboard'). felix@352: felix@351: 2011-11-30 Felix Wolfsteller felix@351: felix@351: Prepare inter-facet pre-rendering communication ('blackboard') phase. felix@351: felix@351: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java felix@351: (getDataProviderKeys,provideBlackboardData): Extended interface to felix@351: allow easy integration of blackboard mechanism (inter-facet felix@351: pre-rendering communication). felix@351: felix@351: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java felix@351: (getDataProviderKeys,provideBlackboardData): Trivial implementation. felix@351: The DefaultFacet will not talk to other facets during inter-facet felix@351: pre-rendering ("blackboard") phase. Cosmetics, docs. felix@351: sascha@350: 2011-11-21 Ingo Weinzierl sascha@350: sascha@350: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: sascha@350: Changed Ingo's last commit to a more conservative notation (no auto-boxing). sascha@350: Strangely the flys-client does not compile for me with the auto-boxed sascha@350: syntax with OpenJDK! sascha@350: ingo@349: 2011-11-21 Ingo Weinzierl ingo@349: ingo@349: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: ingo@349: Added a method that allows to specify if the document needs to be ingo@349: namespace aware or not while parsing from InputStream. ingo@349: ingo@348: 2011-11-07 Ingo Weinzierl ingo@348: ingo@348: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, ingo@348: artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: ingo@348: Enabled "post-describe" hooks for the Artifact's describe operation. ingo@348: felix@347: 2011-10-28 Felix Wolfsteller felix@347: felix@347: Let StateEngine compute a compatibiliy matrix based on given State felix@347: IDs. felix@347: felix@347: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/StateEngine.java felix@347: (getCompatibleFacets): New. Compute output/facet compatibility felix@347: matrix based on given states. felix@347: ingo@346: 2011-10-21 Ingo Weinzierl ingo@346: ingo@346: * artifact-database/src/main/resources/sql/org-h2-driver.properties: ingo@346: Bugfix: added missing bracket to an sql statement. ingo@346: sascha@345: 2011-10-20 Sascha L. Teichmann sascha@345: sascha@345: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java(getMasterArtifact): sascha@345: Limit result set to one row. sascha@345: felix@344: 2011-10-19 Felix Wolfsteller felix@344: felix@344: Fix accidentally corruptd key to sql statement. felix@344: felix@344: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: felix@344: Fix key. felix@344: felix@343: 2011-10-19 Felix Wolfsteller felix@343: felix@343: Add backend and db functionality query artifact which is belongs to felix@343: a collection the longest (not neccessary the longest artifact itself). felix@343: felix@343: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java felix@343: (getCollectionsMasterArtifact): New. Access master artifact for felix@343: given collection (masterartifact defined as artifact which belongs felix@343: to the collection the longest). felix@343: felix@343: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java felix@343: (getCollectionsMasterArtifact): New (extended interface). felix@343: felix@343: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java felix@343: (getMasterArtifact): New, get UUID of oldest artifact which belongs to felix@343: collection the longest. felix@343: felix@343: * artifact-database/src/main/resources/sql/org-h2-driver.properties, felix@343: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: felix@343: Added SQL query to get list of artifacts in collection sorted by the felix@343: entry date. felix@343: sascha@342: 2011-10-17 Sascha L. Teichmann sascha@342: sascha@342: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/StringUtils.java(toUpperCase): sascha@342: Added static method to convert an array of string to their uppercase counterparts. sascha@342: felix@341: 2011-10-13 Felix Wolfsteller felix@341: felix@341: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: felix@341: (newRemoveArtifactDocument): New, create a "remove artifact" document. felix@341: Cosmetics, docs. felix@341: felix@340: 2011-10-13 Felix Wolfsteller felix@340: felix@340: * artifact-database/src/main/resources/sql/org-h2-driver.properties, felix@340: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: felix@340: Fix SQL typo. felix@340: felix@339: 2011-10-10 Felix Wolfsteller felix@339: felix@339: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java: felix@339: Cosmetics, (shortened jdoc comments). felix@339: felix@339: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: felix@339: Cosmetics, (shortened jdoc comments). Also, removed felix@339: toString(Element), instead fixed toString(Node) - Node is felix@339: superinterface of Element. felix@339: sascha@337: 2011-10-07 Sascha L. Teichmann sascha@337: sascha@337: Fixed flys/issue255 sascha@337: sascha@337: * artifact-database/src/main/java/de/intevation/artifactdatabase/db/DBConnection.java(getDataSource()): sascha@337: Serialized the loading of database drivers. sascha@337: felix@336: 2011-09-23 Felix Wolfsteller felix@336: felix@336: Fix debug helper toString(Node). felix@336: felix@336: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: felix@336: (toString(Node)): Fix issue with node from "wrong" document. felix@336: felix@335: 2011-09-23 Felix Wolfsteller felix@335: felix@335: Added XMLUtils functions helping to debug parts of xml documents. felix@335: felix@335: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: felix@335: (toString(Node), toString(Element): New functions returning felix@335: xml/string representations of parts of documents. felix@335: ingo@334: 2011-09-22 Ingo Weinzierl ingo@334: ingo@334: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@334: Removed useless CollectionCallContext creation (was never used). ingo@334: ingo@333: 2011-09-19 Ingo Weinzierl ingo@333: ingo@333: Tagged RELEASE 1.4 ingo@333: ingo@333: * Changes: Prepared changes for the release. ingo@333: ingo@331: 2011-09-09 Ingo Weinzierl ingo@331: ingo@331: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@331: Artifacts and Collections that started a background process might add ingo@331: Messages to a message board now. They (currently just implemented for ingo@331: the Artifact) can add new messages and receive a list of messages via ingo@331: the CallContext objects. If an Artifact or Collection instance is ingo@331: removed from background, all its messages are removed as well. ingo@331: ingo@331: * artifacts/src/main/java/de/intevation/artifacts/Message.java: New. The ingo@331: message interface. Currently, there is just a single getText() method ingo@331: defined. ingo@331: ingo@331: * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: Got ingo@331: two new methods to add new messages and retrieve a list of messages to ingo@331: the background messages. ingo@331: ingo@331: * artifact-database/src/main/java/de/intevation/artifactdatabase/CollectionCallContext.java, ingo@331: artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactCallContext.java: ingo@331: Implement the new methods to add/get messages defined in CallContext. ingo@331: The CollectionCallContext just defines the two methods without real ingo@331: implementation (stub). ingo@331: ingo@330: 2011-09-07 Ingo Weinzierl ingo@330: ingo@330: * artifacts/src/main/java/de/intevation/artifacts/CallContext.java, ingo@330: artifact-database/src/main/java/de/intevation/artifactdatabase/CollectionCallContext.java, ingo@330: artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactCallContext.java: ingo@330: The CallContext got a new method isInBackground() that determines, if ingo@330: the Artifact or Collection (currently not implemented) has started a ingo@330: background thread and is locked. ingo@330: ingo@329: 2011-08-25 Ingo Weinzierl ingo@329: ingo@329: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/FileTools.java: ingo@329: New. A utility class for working with Files. ingo@329: sascha@328: 2011-08-25 Sascha L. Teichmann sascha@328: sascha@328: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java sascha@328: (outCollection): Called context listener too early before deferred out. This sascha@328: led to broken DB sessions. sascha@328: ingo@327: 2011-08-25 Ingo Weinzierl ingo@327: ingo@327: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java, ingo@327: artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java: ingo@327: Enhanced the State interface with a endOfLife() method; the default ingo@327: implementation in AbstractState is empty. ingo@327: felix@326: 2011-08-25 Felix Wolfsteller felix@326: felix@326: Minor cosmetics. felix@326: felix@326: * artifacts/src/main/java/de/intevation/artifacts/Artifact.java: felix@326: Corrected signature in link in comment, whitespace. felix@326: felix@326: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactResource.java: felix@326: Punctuation, whitespace in comment. felix@326: sascha@325: 2011-08-24 Sascha L. Teichmann sascha@325: sascha@325: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: sascha@325: Write filters to create document if they are given. sascha@325: sascha@325: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/CreationFilter.java: sascha@325: New. Model for the creation filter. sascha@325: ingo@324: 2011-08-24 Ingo Weinzierl ingo@324: ingo@324: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@324: Renamed an attribute in the document to create new Artifacts. ingo@324: ingo@323: 2011-08-24 Ingo Weinzierl ingo@323: ingo@323: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/MapXPathVariableResolver.java: ingo@323: New. An XPathVariableResolver instance that stores its variables in a ingo@323: Map. ingo@323: ingo@323: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: ingo@323: Added support for variables in xpath expressions. There is a new xpath() ingo@323: method that takes a Map that stores the required ingo@323: variables. ingo@323: sascha@322: 2011-08-22 Sascha L. Teichmann sascha@322: sascha@322: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java, sascha@322: artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java: sascha@322: Added a deepCopy() method to make them cloneable (Not using java.lang.Cloneable for this). sascha@322: sascha@322: * artifact-database/src/main/java/de/intevation/artifactdatabase/data/DefaultStateData.java, sascha@322: artifact-database/src/main/java/de/intevation/artifactdatabase/data/StateData.java: sascha@322: Implement the changed interfaces. sascha@322: sascha@321: 2011-08-22 Sascha L. Teichmann sascha@321: sascha@321: * artifact-database/pom.xml: Bumped PostgreSQL driver from sascha@321: 8.3-603.jdbc4 up to 8.4-702.jdbc4 (same as flys-backend). sascha@321: sascha@320: 2011-08-10 Sascha L. Teichmann sascha@320: sascha@320: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java, sascha@320: artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@320: Extract the collection and artifact creation times when doing the initial sascha@320: scan, too. sascha@320: sascha@320: * artifact-database/src/main/resources/sql/org-h2-driver.properties, sascha@320: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: sascha@320: Adjusted the SQL statements. sascha@320: sascha@319: 2011-08-08 Sascha L. Teichmann sascha@319: sascha@319: * artifact-database/src/main/resources/sql/org-h2-driver.properties: sascha@319: Fixed H2 SQL to set TTL of collection. sascha@319: sascha@318: 2011-08-02 Sascha L. Teichmann sascha@318: sascha@318: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@318: Swapped SQL parameter indices when fetching collection name. sascha@318: sascha@317: 2011-08-02 Sascha L. Teichmann sascha@317: sascha@317: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: sascha@317: Change the ArtifactLoadedCallback interface to take the name of the sascha@317: collection, too. sascha@317: sascha@317: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@317: Fetches the collection name, too. sascha@317: sascha@317: * artifact-database/src/main/resources/sql/org-h2-driver.properties, sascha@317: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: sascha@317: Adjusted SQL statements. sascha@317: sascha@316: 2011-08-02 Sascha L. Teichmann sascha@316: sascha@316: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultUser.java: sascha@316: Added constructor only with the identifier of the owner. sascha@316: sascha@316: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@316: Added dummy user to fresh created collection to have it accessible in the sascha@316: listeners. sascha@316: sascha@315: 2011-08-02 Sascha L. Teichmann sascha@315: sascha@315: * artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: sascha@315: Generate kill events if and only if there were killed collections or artifacts. sascha@315: sascha@314: 2011-08-02 Sascha L. Teichmann sascha@314: sascha@314: * artifact-database/src/main/resources/sql/org-h2-driver.properties, sascha@314: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: sascha@314: Return uuid in statements used by database cleaner, too. sascha@314: sascha@314: * artifact-database/src/main/java/de/intevation/artifactdatabase/BackendListener.java, sascha@314: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultBackendListener.java: sascha@314: Two new methods to reports a list of external killed collections and artifacts. sascha@314: sascha@314: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@314: Broadcast the lists of externally killed collections and artifacts to the listeners. sascha@314: sascha@314: * artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: sascha@314: Fire lists of deleted collections and artifacts to backend. sascha@314: sascha@313: 2011-08-01 Sascha L. Teichmann sascha@313: sascha@313: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@313: Reorganized code a bit. sascha@313: sascha@313: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added some sascha@313: debug output. Handle forgotten store/create event source. sascha@313: sascha@312: 2011-08-01 Sascha L. Teichmann sascha@312: sascha@312: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@312: Fixed NPE. sascha@312: sascha@310: 2011-08-01 Sascha L. Teichmann sascha@310: sascha@311: * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: sascha@311: Made BackListeners loadable at boot time. To be configured with XPATH sascha@311: '/artifact-database/backend-listeners/listener'. sascha@311: sascha@311: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, sascha@311: artifact-database/src/main/java/de/intevation/artifactdatabase/BackendListener.java, sascha@311: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultBackendListener.java, sascha@311: artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@311: Wired listeners to backend. sascha@311: sascha@311: 2011-08-01 Sascha L. Teichmann sascha@311: sascha@311: * artifact-database/src/main/java/de/intevation/artifactdatabase/BackendListener.java, sascha@311: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultBackendListener.java: sascha@311: Completed interface and the trival implementation. sascha@311: sascha@311: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@311: Call the listeners for the new defined events. sascha@311: sascha@310: * artifact-database/src/main/java/de/intevation/artifactdatabase/BackendListener.java: sascha@310: New. Interface to listener for backend events. TODO: Implement more sascha@310: events. sascha@310: sascha@310: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultBackendListener.java: sascha@310: New. Trivial implementation of BackendListener. sascha@310: sascha@310: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@310: Added list of backend listeners. TODO: Add them at boot time. sascha@310: sascha@309: 2011-07-31 Sascha L. Teichmann sascha@309: sascha@309: * artifact-database/pom.xml: Bumped Apache DBCP up to 1.4 sascha@309: sascha@309: * artifact-database/src/main/java/de/intevation/artifactdatabase/db/DBConnection.java: sascha@309: Use real pooling to void races. Maybe it needs more configuration options!? sascha@309: sascha@309: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Removed sascha@309: superfluous imports. sascha@309: sascha@308: 2011-07-31 Sascha L. Teichmann sascha@308: sascha@308: * artifact-database/src/main/resources/sql/org-h2-driver.properties, sascha@308: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: sascha@308: Fixed broken SQL statement. sascha@308: sascha@308: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, sascha@308: artifact-database/src/main/java/de/intevation/artifactdatabase/db/DBConnection.java, sascha@308: artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Added sascha@308: debug output. sascha@308: sascha@307: 2011-07-31 Sascha L. Teichmann sascha@307: sascha@307: Make artifact server bootable again. sascha@307: sascha@307: * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: sascha@307: Fixed NPE. sascha@307: * artifact-database/src/main/java/de/intevation/artifactdatabase/db/SQL.java: Fixed NPE. sascha@307: Added some debug output. sascha@307: sascha@307: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: Fixed sascha@307: SQL key name. That was broken for long but not recognized. sascha@307: sascha@306: 2011-07-28 Sascha L. Teichmann sascha@306: sascha@306: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/LRUCache.java: sascha@306: New. Simple LRU cache based on java.util.LinkedHashMap. sascha@306: sascha@305: 2011-07-28 Sascha L. Teichmann sascha@305: sascha@305: Refactorized the usage of dialect independent SQL to be reusable. sascha@305: sascha@305: * artifact-database/src/main/java/de/intevation/artifactdatabase/db/SQL.java, sascha@305: artifact-database/src/main/java/de/intevation/artifactdatabase/db/DBConnection.java, sascha@305: artifact-database/src/main/java/de/intevation/artifactdatabase/db/SQLExecutor.java: sascha@305: New. Generalized versions to make code reusable for datacage. sascha@305: sascha@305: * artifact-database/src/main/java/de/intevation/artifactdatabase/DBConnection.java, sascha@305: artifact-database/src/main/java/de/intevation/artifactdatabase/SQL.java, sascha@305: artifact-database/src/main/java/de/intevation/artifactdatabase/SQLExecutor.java: sascha@305: Deleted. sascha@305: sascha@305: * artifact-database/src/main/java/de/intevation/artifactdatabase/DBConfig.java: sascha@305: New. Centralizes the SQL database configuration of the backend. sascha@305: sascha@305: * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java, sascha@305: artifact-database/src/main/java/de/intevation/artifactdatabase/h2/CollectionAccessUpdateTrigger.java, sascha@305: artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, sascha@305: artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: sascha@305: A lot of adjustment to make the new infrastructure work. Needs heavy testing! sascha@305: sascha@304: 2011-07-27 Sascha L. Teichmann sascha@304: sascha@304: * artifact-database/src/main/java/de/intevation/artifactdatabase/LifetimeListener.java: sascha@304: New. Interface instances of are called when system is up and is going down. sascha@304: sascha@304: * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: sascha@304: Load lifetime listeners from configuration. XPATH sascha@304: /artifact-database/lifetime-listeners/listeners/text() sascha@304: sascha@304: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@304: Call the listeners after start up and before shutdown. sascha@304: sascha@304: * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: sascha@304: Trigger the start of the artifact database explicitly when the boot process sascha@304: is finished. sascha@304: sascha@303: 2011-07-27 Sascha L. Teichmann sascha@303: sascha@303: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: sascha@303: Added a method loadAllArtifacts() to load all artifacts which are in sascha@303: a collection and have an owner. The loaded artifacts are passed one by sascha@303: one to an instance of the interface ArtifactLoadedCallback. sascha@303: sascha@303: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@303: Adjusted to implement the interface. sascha@303: sascha@303: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@303: Load the artifacts from the SQL backend. sascha@303: sascha@303: * artifact-database/src/main/resources/sql/org-h2-driver.properties, sascha@303: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: sascha@303: Added statements to load all the artifacts. sascha@303: sascha@302: 2011-07-26 Sascha L. Teichmann sascha@302: sascha@302: * artifact-database/pom.xml: Bumped H2 version up to latest stable 1.3.158 sascha@302: sascha@301: 2011-07-22 Sascha L. Teichmann sascha@301: sascha@301: * artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java, sascha@301: artifacts-common/src/main/java/de/intevation/artifacts/common/utils/StringUtils.java: sascha@301: Moved StringUtils to common package. sascha@301: sascha@301: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, sascha@301: artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java, sascha@301: artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java, sascha@301: artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: sascha@301: Adjusted imports. sascha@301: sascha@301: * artifacts-common/pom.xml, artifact-database/pom.xml: Moved dependency to Apache codec sascha@301: to other package. sascha@301: sascha@301: * artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java: sascha@301: Added Override annotations (forgot to commit last time). sascha@301: ingo@300: 2011-07-21 Ingo Weinzierl ingo@300: ingo@300: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@300: New CREATE documents for Artifact creation might contain db-ids now. ingo@300: sascha@299: 2011-07-21 Sascha L. Teichmann sascha@299: sascha@299: * artifacts/src/main/java/de/intevation/artifacts/Service.java, sascha@299: artifacts/src/main/java/de/intevation/artifacts/ServiceFactory.java: sascha@299: Services now take GlobalContext on setup and process. sascha@299: sascha@299: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultService.java, sascha@299: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultServiceFactory.java: sascha@299: Adusted and added Override annotations. sascha@299: sascha@298: 2011-07-21 Sascha L. Teichmann sascha@298: sascha@298: * artifacts/src/main/java/de/intevation/artifacts/ArtifactNamespaceContext.java: sascha@298: Made it more compatible with mixed namespaces and mixtures of namespaces sascha@298: and no namespaces. sascha@298: sascha@298: * artifacts/pom.xml: Set Java compatibility to 1.5. Why isn't this inherited sascha@298: from main pom.xml? The artifact-database module uses 1.5 features but does sascha@298: not need any extra configuration. sascha@298: ingo@297: 2011-07-20 Ingo Weinzierl ingo@297: ingo@297: * artifacts/src/main/java/de/intevation/artifacts/Artifact.java, ingo@297: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java: ingo@297: Added a parameter of type CallMeta to the signature of setup(). The ingo@297: CallMeta object is required for i18n initial things. ingo@297: ingo@297: !! NOTE: This modification breaks the current API !! ingo@297: ingo@297: * artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java, ingo@297: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java: ingo@297: Call Artifact.setup() with an instance of CallMeta. ingo@297: ingo@297: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@297: The createArtifact() method got a CallMeta instance which is necessary ingo@297: to call Artifact.setup(). ingo@297: ingo@296: 2011-07-19 Ingo Weinzierl ingo@296: ingo@296: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Output.java, ingo@296: artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java: ingo@296: Added a method to add a list of Facets. ingo@296: ingo@295: 2011-07-18 Ingo Weinzierl ingo@295: ingo@295: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java, ingo@295: artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java: ingo@295: A facet can write its internal representation to XML using a public ingo@295: method toXML(Document). ingo@295: ingo@295: * artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java: ingo@295: Facets are appended using its toXML() method. Concrete facets can now ingo@295: change its xml representation. ingo@295: ingo@294: 2011-07-14 Ingo Weinzierl ingo@294: ingo@294: * artifacts/src/main/java/de/intevation/artifacts/Hook.java: The Hook's ingo@294: execute() method is called with a Document now. ingo@294: ingo@294: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@294: The hooks that are called after feed() and advance() are called with the ingo@294: documents which are returned by those operations. ingo@294: ingo@293: 2011-07-14 Ingo Weinzierl ingo@293: ingo@293: * artifacts/src/main/java/de/intevation/artifacts/GlobalContext.java: New. ingo@293: An interface for global context objects. It defines two basic operations ingo@293: to put objects into the context and to retrieve objects from context. ingo@293: ingo@293: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: ingo@293: Added a method that returns an instance of an Artifact with one ingo@293: limitation: the internal state of this artifact is not persisted to ingo@293: database! ingo@293: ingo@293: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@293: Added a method that creates a document used to create new Artifacts with ingo@293: the UUID of another one. ingo@293: ingo@293: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, ingo@293: artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java, ingo@293: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContextFactory.java, ingo@293: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactContext.java, ingo@293: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactFactory.java, ingo@293: artifacts/src/main/java/de/intevation/artifacts/ArtifactFactory.java, ingo@293: artifacts/src/main/java/de/intevation/artifacts/ArtifactContextFactory.java: ingo@293: Adapted method signatures to apply the new interface for global context ingo@293: objects. ingo@293: ingo@292: 2011-07-13 Ingo Weinzierl ingo@292: ingo@292: * artifacts/src/main/java/de/intevation/artifacts/Hook.java: New. A hook ingo@292: can be used to execute at a specific point in time. E.g. after an ingo@292: Artifact was fed or after an Artifact has advanced. ingo@292: ingo@292: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@292: Call hooks after Artifact's feed() and advance() operations. ingo@292: ingo@292: * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: ingo@292: Load hooks from configuration that match the XPath "/artifact-database/hooks/hook". ingo@292: sascha@291: 2011-07-13 Sascha L. Teichmann sascha@291: sascha@291: Fix for flys/issue20 sascha@291: sascha@291: * artifact-database/pom.xml: Bumped version of SLF4J up to 1.6.1 sascha@291: ingo@290: 2011-07-08 Ingo Weinzierl ingo@290: ingo@290: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Output.java, ingo@290: artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java: ingo@290: An Output can have a type (string) declaration now that should make it ingo@290: easier to distinguish different Output types. ingo@290: ingo@290: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java: ingo@290: Read the attribute "type" from OutputMode's configuration section. ingo@290: ingo@290: * artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java: ingo@290: Write the member variable "type" to an OutputMode. ingo@290: ingo@289: 2011-06-28 Ingo Weinzierl ingo@289: ingo@289: Tagged RELEASE 1.3 ingo@289: ingo@287: 2011-06-27 Ingo Weinzierl ingo@287: ingo@287: * Changes: Prepared changes for the upcoming release. ingo@287: ingo@286: 2011-06-27 Ingo Weinzierl ingo@286: ingo@286: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: ingo@286: Declared toString(Document) method static. ingo@286: ingo@285: 2011-06-22 Ingo Weinzierl ingo@285: ingo@285: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@285: Added functions that generate documents to set the name and ttl of a ingo@285: collection and to delete an existing collection. ingo@285: ingo@284: 2011-06-21 Ingo Weinzierl ingo@284: ingo@284: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@284: Add the time-to-live of a collection to the document that is returned ingo@284: after the collection has been created. ingo@284: sascha@283: 2011-06-21 Sascha L. Teichmann sascha@283: sascha@283: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java: sascha@283: Added toString() method to help debugging. sascha@283: ingo@282: 2011-06-21 Ingo Weinzierl ingo@282: ingo@282: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@282: Put the time-to-live of a collection into the document with the list of ingo@282: user collections. ingo@282: ingo@281: 2011-06-21 Ingo Weinzierl ingo@281: ingo@281: * artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java, ingo@281: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java: ingo@281: The ArtifactCollection now knows its time-to-live. This values is ingo@281: retrievable via getTTL(). ingo@281: ingo@281: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollectionFactory.java, ingo@281: artifacts/src/main/java/de/intevation/artifacts/ArtifactCollectionFactory.java: ingo@281: Creating an ArtifactCollection requires the time-to-live of it. ingo@281: ingo@281: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: ingo@281: Create new ArtifactCollections with their time-to-live. ingo@281: ingo@281: * artifact-database/src/main/resources/sql/org-h2-driver.properties, ingo@281: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: ingo@281: Adapted SQL statements that retrieve collections. The TTL of the ingo@281: collection is fetched from database as well. ingo@281: ingo@280: 2011-06-17 Ingo Weinzierl ingo@280: ingo@280: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java, ingo@280: artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java: ingo@280: Facets are able to fetch their necessary data from artifact now using a ingo@280: getData(Artifact, CallContext) method. ingo@280: ingo@279: 2011-06-16 Ingo Weinzierl ingo@279: ingo@279: * artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java: ingo@279: Write index of a facet into the document. ingo@279: ingo@278: 2011-06-16 Ingo Weinzierl ingo@278: ingo@278: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java: ingo@278: Extends Serializable. ingo@278: ingo@277: 2011-06-15 Ingo Weinzierl ingo@277: ingo@277: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Facet.java, ingo@277: artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultFacet.java: ingo@277: Added an index to a facet. ingo@277: sascha@276: 2011-06-08 Sascha L. Teichmann sascha@276: sascha@276: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/XMLUtils.java: sascha@276: Added static toString(Document) method which transform XML documents to Strings. sascha@276: Useful for debugging. sascha@276: ingo@275: 2011-06-07 Ingo Weinzierl ingo@275: ingo@275: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, ingo@275: artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java, ingo@275: artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: ingo@275: New methods to set the name of a collection. ingo@275: ingo@275: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java: ingo@275: Dispatch the "setname" action. ingo@275: ingo@275: * artifact-database/src/main/resources/sql/org-h2-driver.properties, ingo@275: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: ingo@275: Added sql statements to update the name of a collection specified by its ingo@275: gid. ingo@275: ingo@274: 2011-06-07 Ingo Weinzierl ingo@274: ingo@274: flys/issue50 (Markierung von "Master-Artefakten" ermöglichen) ingo@274: ingo@274: * artifact-database/doc/schema-pg.sql, ingo@274: artifact-database/doc/schema-h2.sql: Added a column 'creation' to the ingo@274: collection_items table. This column is set to the current timestamp when a ingo@274: new row is inserted in this table. The master artifact of a collection ingo@274: is the artifact which collection item is the oldest collection item in ingo@274: the collection. ingo@274: Note: there might be older artifacts in the collection than the master ingo@274: artifact, but there will never be an older collection item than the first ingo@274: item when the collection was created. ingo@274: ingo@274: To update the db, use the following statements: ingo@274: ingo@274: ALTER TABLE collection_items ADD COLUMN creation TIMESTAMP; ingo@274: UPDATE collection_items SET creation = CURRENT_TIMESTAMP; ingo@274: ALTER TABLE collection_items ALTER COLUMN creation SET NOT NULL; ingo@274: ingo@274: * artifact-database/src/main/resources/sql/org-h2-driver.properties, ingo@274: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: ingo@274: Order the list of collection items based on their creation time. ingo@274: ingo@273: 2011-06-07 Ingo Weinzierl ingo@273: ingo@273: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, ingo@273: artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: ingo@273: Added a setCollectionTTL() method that might be used to update the TTL ingo@273: of a collection. The new value needs to be from type long. There are two ingo@273: exceptions for the new values: ingo@273: 1. the new value is "INF": this lets collections live forever. ingo@273: 2. the new value is "DEFAULT": this sets the TTL of the collection to ingo@273: the configured default value. ingo@273: ingo@273: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: ingo@273: Added a method to update the TTL attribute of a collection. ingo@273: ingo@273: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java: ingo@273: Dispatch the "settimetolive" action. ingo@273: ingo@273: * artifact-database/src/main/resources/sql/org-postgresql-driver.properties, ingo@273: artifact-database/src/main/resources/sql/org-h2-driver.properties: Added ingo@273: sql statements to update the TTL of a specific collection based on the ingo@273: UUID of the collection. ingo@273: sascha@272: 2011-06-07 Sascha L. Teichmann sascha@272: sascha@272: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/StateEngine.java: sascha@272: Use generics more precisely sascha@272: sascha@271: 2011-06-06 Sascha L. Teichmann sascha@271: sascha@271: flys/issue75 sascha@271: sascha@271: * artifact-database/doc/schema-h2.sql: Fixed SQL syntax error in trigger creation. sascha@271: sascha@271: * README: Adjusted to use new lib versions. sascha@271: ingo@270: 2011-06-03 Ingo Weinzierl ingo@270: ingo@270: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@270: The incoming attribute document of the method to create the document to ingo@270: trigger the out() of a collection needs to have the root node ingo@270: art:attribute now. ingo@270: ingo@269: 2011-05-31 Ingo Weinzierl ingo@269: ingo@269: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseOutResource.java, ingo@269: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionOutResource.java, ingo@269: artifact-database/src/main/java/de/intevation/artifactdatabase/rest/ArtifactOutResource.java: ingo@269: The 'type' part of the url is extracted and used while dispatching the ingo@269: call to the artifact database. ingo@269: ingo@269: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, ingo@269: artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java: ingo@269: The deferred output got a new out() method that takes the 'type' ingo@269: parameter specified in the url part. ingo@269: ingo@269: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifactCollection.java, ingo@269: artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultArtifact.java, ingo@269: artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java, ingo@269: artifacts/src/main/java/de/intevation/artifacts/Artifact.java: ingo@269: Artifacts and ArtifactCollections have two out() operations to support ingo@269: the output type parameter now. I did not remove the out() without the ingo@269: 'type' parameter to keep compatible with older versions. ingo@269: ingo@268: 2011-05-27 Ingo Weinzierl ingo@268: ingo@268: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@268: The setCollectionAttribute() method will now set the incoming document ingo@268: as new attribute for the collection. Before, we looked for a xpath ingo@268: expression that contained the attribute. In the current implementation, ingo@268: the incoming document IS the attribute. ingo@268: ingo@268: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java: ingo@268: Extract the new attribute for a collection and call the ingo@268: setCollectionAttribute() method of ArtifactDatabase with this document ingo@268: instead of calling it with the incoming request document. ingo@268: ingo@267: 2011-05-27 Ingo Weinzierl ingo@267: ingo@267: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@267: New method that creates the document that is used to set an attribute of ingo@267: a collection. ingo@267: sascha@266: 2011-04-23 Sascha L. Teichmann sascha@266: sascha@266: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/JettyServer.java: sascha@266: Do not bind context to restlet app for security reasons. sascha@266: sascha@265: 2011-04-23 Sascha L. Teichmann sascha@265: sascha@265: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: sascha@265: XMLUtils.xpathString() returns empty string not null. sascha@265: sascha@264: 2011-04-22 Sascha L. Teichmann sascha@264: sascha@264: flys/issue65: Added Jetty HTTP server as a replacement option to foster sascha@264: better scalability. Needs testing. sascha@264: sascha@264: * pom.xml: Added repository for Jetty. sascha@264: sascha@264: * artifact-database/pom.xml: sascha@264: Added dependencies to Jetty (Licenses: Apache 2.0 or Eclipse). sascha@264: sascha@264: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/RestApp.java: sascha@264: Pass restlet context to super constructor. sascha@264: sascha@264: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/JettyServer.java: sascha@264: New. Use embedded Jetty server to serve rest API. sascha@264: To enable it set "/artifact-database/rest-server/http-server/text()" sascha@264: in global config to "de.intevation.artifactdatabase.rest.JettyServer". sascha@264: sascha@264: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: sascha@264: Refactored a bit to be useful as a base class. sascha@264: sascha@263: 2011-04-22 Sascha L. Teichmann sascha@263: sascha@263: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/HTTPServer.java: sascha@263: New. Interface to run an HTTP server. Enables the system to run on different sascha@263: HTTP servers. sascha@263: sascha@263: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: sascha@263: Implements the new interface. sascha@263: sascha@263: * artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: sascha@263: Load and setup the HTTP server configured by the XPath sascha@263: "/artifact-database/rest-server/http-server/text()" in the global config file. sascha@263: Defaults to "de.intevation.artifactdatabase.rest.Standalone" if not given. sascha@263: sascha@263: * artifact-database/src/main/java/de/intevation/artifactdatabase/App.java: sascha@263: Boot with the HTTP server configured by FactoryBootstrap. sascha@263: sascha@262: 2011-04-18 Sascha L. Teichmann sascha@262: sascha@262: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/Standalone.java: sascha@262: With '/artifact-database/rest-server/max-threads/text()' in conf.xml sascha@262: you can set the number of threads used by the restlet server. sascha@262: Defaults to 1024 now. Another attempt/workaround to cope with flys/issue65. sascha@262: ingo@261: 2011-05-17 Ingo Weinzierl ingo@261: ingo@261: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@261: Bugfix: The output name and its concrete type are both written into the ingo@261: document that is used to trigger the OUT operation of a collection. ingo@261: ingo@261: 2011-04-17 Sascha L. Teichmann sascha@260: sascha@260: * artifact-database/pom.xml: Bumped restlet to version 2.0.7 in hope sascha@260: to mitigate flys/issue65. sascha@260: ingo@259: 2011-05-13 Ingo Weinzierl ingo@259: ingo@286: Tagged as RELEASE 1.2 ingo@286: ingo@259: * Changes, NEWS: Changes and news for release 1.2 ingo@259: ingo@258: 2011-05-12 Ingo Weinzierl ingo@258: ingo@258: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@258: The method that is used to create the request document for querying ingo@258: charts will now take a document which might contain parameters to adjust ingo@258: chart settings (e.g. chart height/width). ingo@258: ingo@257: 2011-04-28 Ingo Weinzierl ingo@257: ingo@257: * artifact-database/src/main/java/de/intevation/artifactdatabase/transition/Transition.java: ingo@257: Modified the isValid() method. The transition needs to know about the ingo@257: current artifact where its data is stored, the current state and maybe ingo@257: the target state to determine if it is allowed to step from the current ingo@257: state to a target state! ingo@257: NOTE: This breaks the current API! ingo@257: ingo@257: artifact-database/src/main/java/de/intevation/artifactdatabase/transition/TransitionEngine.java ingo@257: ingo@256: 2011-04-28 Ingo Weinzierl ingo@256: ingo@256: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java, ingo@256: artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java: ingo@256: States have now a method getData(String) to retrieve just a single StateData object. ingo@256: ingo@255: 2011-04-28 Ingo Weinzierl ingo@255: ingo@255: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@255: Added a function that creates the document that is used to set the ingo@255: attribute of a CollectionItem (setCollectionItemAttribute() operation). ingo@255: ingo@254: 2011-04-27 Ingo Weinzierl ingo@254: ingo@254: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@254: Bugfix: Do not create empty XML documents and save those into database - ingo@254: exceptions while serialization/deserialization have been the result of ingo@254: this. ingo@254: ingo@253: 2011-04-26 Ingo Weinzierl ingo@253: ingo@253: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, ingo@253: artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java, ingo@253: artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: ingo@253: New methods for querying and updating attributes of collections. ingo@253: ingo@253: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java: ingo@253: Enabled the request dispatcher to handle requests specific to collection ingo@253: attributes and collection item attributes. ingo@253: ingo@253: * artifact-database/src/main/resources/sql/org-h2-driver.properties, ingo@253: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: ingo@253: New statements for querying and inserting attributes of collections. ingo@253: ingo@252: 2011-04-26 Ingo Weinzierl ingo@252: ingo@252: * artifacts/src/main/java/de/intevation/artifacts/ArtifactDatabase.java, ingo@252: artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, ingo@252: artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: ingo@252: Changed the names of the method names that set and retrieve the ingo@252: attributes of collection items (e.g. getCollectionAttribute() -> ingo@252: getCollectionItemAttribute()). ingo@252: ingo@252: * artifact-database/src/main/java/de/intevation/artifactdatabase/rest/CollectionResource.java: ingo@252: Modified method calls based on the changes above. ingo@252: ingo@251: 2011-04-21 Ingo Weinzierl ingo@251: ingo@251: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/Output.java, ingo@251: artifact-database/src/main/java/de/intevation/artifactdatabase/state/DefaultOutput.java: ingo@251: Added a method to add further facets. ingo@251: ingo@250: 2011-04-14 Ingo Weinzierl ingo@250: ingo@250: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: ingo@250: Bugfix: removed method CallContext specific method calls. ingo@250: ingo@249: 2011-04-14 Ingo Weinzierl ingo@249: ingo@249: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java, ingo@249: artifact-database/src/main/java/de/intevation/artifactdatabase/FactoryBootstrap.java: ingo@249: Enhanced the bootstrap - the CallContext.Listener is initialized (if ingo@249: configured). ingo@249: ingo@248: 2011-04-14 Ingo Weinzierl ingo@248: ingo@248: * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: ingo@248: Added a setup() method as in the other factories. ingo@248: sascha@247: 2011-04-14 Sascha L. Teichmann sascha@247: sascha@247: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@247: Added instance variable to hold a call context listener. sascha@247: sascha@246: 2011-04-14 Sascha L. Teichmann sascha@246: sascha@246: * artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java: sascha@246: Call the postCall() methods of all CallContextes. Removed superfluous context sascha@246: paramter to AbstractCallContext constructors. sascha@246: sascha@246: * artifact-database/src/main/java/de/intevation/artifactdatabase/AbstractCallContext.java: sascha@246: call ArtifactDatabaseImpl.initCallContext() in constructor and sascha@246: ArtifactDatabaseImpl.closeCallContext() in postCall(). sascha@246: sascha@246: * artifact-database/src/main/java/de/intevation/artifactdatabase/CollectionCallContext.java, sascha@246: artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactCallContext.java: sascha@246: adjusted to guarantee that super.postCall() is called. sascha@246: sascha@245: 2011-04-14 Sascha L. Teichmann sascha@245: sascha@245: * artifacts/src/main/java/de/intevation/artifacts/CallContext.java: sascha@245: Added a listener to be called if a call context was created and closed. sascha@245: ingo@244: 2011-04-14 Ingo Weinzierl ingo@244: ingo@244: * artifact-database/src/main/java/de/intevation/artifactdatabase/state/State.java, ingo@244: artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java: ingo@244: Added a reference to an artifact to the parameterlist of describe(). ingo@244: This is needed to retrieve other necessary information of an artifact. ingo@244: sascha@243: 2011-04-13 Sascha L. Teichmann sascha@243: sascha@243: * artifact-database/src/main/resources/sql/org-postgresql-driver.properties: sascha@243: Internal granularity should be milliseconds and not microseconds. sascha@243: sascha@243: * artifact-database/src/main/resources/sql/org-h2-driver.properties: sascha@243: Forget last commit. sascha@245: sascha@242: 2011-04-13 Sascha L. Teichmann sascha@242: sascha@242: Fix for flys/issue9 sascha@242: sascha@242: * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: sascha@242: Removed code that checks for outdated artifact in user land. sascha@242: sascha@242: * artifact-database/src/main/resources/sql/org-h2-driver.properties, sascha@242: artifact-database/src/main/resources/sql/org-postgresql-driver.properties: sascha@242: Do the check in the database and take into account if artifact sascha@242: is in a collection. XXX: Maybe this needs some speedup! sascha@242: sascha@241: 2011-04-13 Sascha L. Teichmann sascha@241: sascha@241: Fix for flys/issue8 (part 3) sascha@241: sascha@241: * artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: sascha@241: 'NOT IN (NULL)' does not work. Used 'NOT IN (-666)' instead. sascha@241: ingo@240: 2011-04-12 Ingo Weinzierl ingo@240: ingo@240: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@240: Added a method that returns a document that is used to trigger the ingo@240: artifact's DESCRIBE operation. ingo@240: ingo@239: 2011-04-07 Ingo Weinzierl ingo@239: ingo@239: * artifacts-common/src/main/java/de/intevation/artifacts/common/utils/ClientProtocolUtils.java: ingo@239: Added a method that creates documents used as input document for the ingo@239: Collection's out() operation. ingo@239: sascha@238: 2011-04-06 Sascha L. Teichmann sascha@238: sascha@238: Fix for flys/issue8 (part 2) sascha@238: sascha@238: * artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java: sascha@238: PostgreSQL does not like clauses like 'NOT IN ()' so write sascha@238: 'NOT IN (NULL)' in these cases. sascha@238: sascha@238: 2011-04-06 Sascha L. Teichmann sascha@238: sascha@238: Possible fix for flys/issue8 sascha@238: sascha@238: * artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java: sascha@238: (repeat) The term was repeated one time too often leading to invalid sascha@238: SQL statements in database cleaner. I really should start writing sascha@238: unit tests. sascha@237: ingo@236: 2011-04-06 Ingo Weinzierl ingo@236: ingo@236: * artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCollectionItem.java: ingo@236: Bugfix: Items are compressed in the Backend while adding an Artifact to ingo@236: a Collection. So this item needs to be decompressed when it is fetched ingo@236: from Backend again. This is done now! ingo@236: sascha@235: 2011-04-04 Sascha L. Teichmann sascha@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