# HG changeset patch # User Felix Wolfsteller # Date 1319040280 0 # Node ID 62efd1288e34fa3c8ba5bdfa344e46d220d1b7b4 # Parent 8a2cbf9473956325dc24764252136808fdce5351 Fix setting of masterartifact in flyscollections. flys-artifacts/trunk@3038 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 8a2cbf947395 -r 62efd1288e34 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Wed Oct 19 15:32:22 2011 +0000 +++ b/flys-artifacts/ChangeLog Wed Oct 19 16:04:40 2011 +0000 @@ -1,3 +1,16 @@ +2011-10-19 Felix Wolfsteller + + Fix masterartifact in collections in cases where the original + masterartifacts facets do not come first in certain list. Query + 'backend'/db instead. + + * src/main/java/de/intevation/flys/exports/WDifferencesCurveGenerator.java: + (addSubtitles): Overridden, the master artifact has no range. + + * src/main/java/de/intevation/flys/collections/FLYSArtifactCollection.java: + Set 'real' master artifact, defined to be oldest belonging to this + collection. + 2011-10-19 Ingo Weinzierl * src/main/java/de/intevation/flys/artifacts/states/DefaultState.java, diff -r 8a2cbf947395 -r 62efd1288e34 flys-artifacts/src/main/java/de/intevation/flys/collections/FLYSArtifactCollection.java --- a/flys-artifacts/src/main/java/de/intevation/flys/collections/FLYSArtifactCollection.java Wed Oct 19 15:32:22 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/collections/FLYSArtifactCollection.java Wed Oct 19 16:04:40 2011 +0000 @@ -58,11 +58,12 @@ public static final String XPATH_OUT_TYPE = "/art:action/@art:type"; + public static final String XPATH_MASTER_UUID = "/art:artifact-collection/art:artifact/@art:uuid"; + public static final String XPATH_LOADED_RECOMMENDATIONS = "/art:attribute/art:loaded-recommendations"; - /** * Return description Document for this collection. */ @@ -217,7 +218,23 @@ generator.init(format, out, context); - // TODO Determine the correct master artifact here! + // Get master artifact. + try{ + ArtifactDatabase db = context.getDatabase(); + CallMeta callMeta = context.getMeta(); + Document document = + db.getCollectionsMasterArtifact(identifier(), callMeta); + + //log.debug(XMLUtils.toString(document)); + + String masterUUID = XMLUtils.xpathString( + document, XPATH_MASTER_UUID, ArtifactNamespaceContext.INSTANCE); + + log.error("Will set master Artifact to uuid: " + masterUUID); + generator.setMasterArtifact(getArtifact(masterUUID, context)); + } catch (ArtifactDatabaseException adb) { + log.error(adb, adb); + } try { Document attr = getAttribute(context, name); @@ -277,9 +294,6 @@ } Artifact artifact = getArtifact(art, context); - if (i == 0) { - generator.setMasterArtifact(artifact); - } generator.doOut( artifact,