Mercurial > dive4elements > river
annotate flys-artifacts/src/main/java/de/intevation/flys/collections/AttributeWriter.java @ 2089:0da8874bd378
Added initial state to map artifact to be able to advance and step back.
The map artifact overrides describe() to have the complete UI information in the
describe response document.
flys-artifacts/trunk@3613 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Fri, 06 Jan 2012 12:02:10 +0000 |
parents | ca6ccf722c24 |
children | 22732713c54d |
rev | line source |
---|---|
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.collections; |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
2 |
1639
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
3 import java.util.ArrayList; |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
4 import java.util.List; |
1810
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
5 import java.util.HashMap; |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
6 import java.util.Map; |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
7 |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
8 import org.apache.log4j.Logger; |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
9 |
1709
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
10 import de.intevation.artifacts.ArtifactDatabase; |
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
11 import de.intevation.artifacts.ArtifactDatabaseException; |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
12 |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
13 import de.intevation.artifactdatabase.state.Facet; |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
14 import de.intevation.artifactdatabase.state.Output; |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
15 |
1709
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
16 import de.intevation.flys.artifacts.FLYSArtifact; |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 import de.intevation.flys.artifacts.model.ManagedFacet; |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
18 |
1634
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
19 /** |
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
20 * Create attribute- element of describe document of an ArtifactCollection. |
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
21 * The attribute-element contains the merged output of all outputmodes and |
1780
b503d92dd709
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1709
diff
changeset
|
22 * facets that are part of the collection. |
1634
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
23 */ |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
24 public class AttributeWriter { |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
25 |
1709
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
26 /** ArtifactDatabase used to fetch Artifacts. */ |
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
27 protected ArtifactDatabase db = null; |
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
28 |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
29 protected Map<String, Output> oldAttr; |
1709
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
30 |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
31 protected Map<String, Output> newAttr; |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
32 |
1785
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
33 /** List of already seen facets. */ |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
34 protected List<Facet> oldFacets; |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
35 |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
36 /** List of "new" facets. */ |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
37 protected List<Facet> newFacets; |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
38 |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
39 /** |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
40 * "Compatibility matrix", mapws list of facet names to output names. |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
41 * Any facet that is not found in the list for a specific output will |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
42 * not be added to the resulting document. |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
43 */ |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
44 protected Map<String, List<String>> compatibilities; |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
45 |
1976
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
46 |
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
47 /** The result of the <i>write()</i> operation.*/ |
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
48 protected CollectionAttribute attribute; |
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
49 |
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
50 |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
51 private static Logger logger = Logger.getLogger(AttributeWriter.class); |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
52 |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
53 |
1634
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
54 /** |
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
55 * Create a AttributeWriter. |
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
56 * Attributes not present in newAttr will not be included in the document. |
1709
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
57 * @param db Database to fetch artifacts. |
1634
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
58 * @param oldAttr "Old" (possibly user-changed) outputs. |
1780
b503d92dd709
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1709
diff
changeset
|
59 * @param newAttr "New" (eventually re-read in its original, unchanged |
1634
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
60 * form) outputs. |
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
61 */ |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
62 public AttributeWriter( |
1709
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
63 ArtifactDatabase db, |
1993
85132c9edd64
Make reuse of the old CollectionAttribute during the describe() operation of FLYSArtifactCollection - remove the old facets only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1984
diff
changeset
|
64 CollectionAttribute attribute, |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
65 Map<String, Output> oldAttr, |
1785
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
66 List<Facet> oldFacets, |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
67 Map<String, Output> newAttr, |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
68 List<Facet> newFacets, |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
69 Map<String, List<String>> matrix) |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
70 { |
1785
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
71 this.db = db; |
1993
85132c9edd64
Make reuse of the old CollectionAttribute during the describe() operation of FLYSArtifactCollection - remove the old facets only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1984
diff
changeset
|
72 this.attribute = attribute; |
1785
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
73 this.oldAttr = oldAttr; |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
74 this.newAttr = newAttr; |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
75 this.oldFacets = oldFacets; |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
76 this.newFacets = newFacets; |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
77 this.compatibilities = matrix; |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
78 } |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
79 |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
80 |
1628
16c74ca3586e
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1171
diff
changeset
|
81 /** |
1634
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
82 * Create document by merging outputs given in |
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
83 * constructor. |
1780
b503d92dd709
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1709
diff
changeset
|
84 * |
1634
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
85 * The "new" set rules about existance of attributes, so anything not |
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
86 * present in it will not be included in the resulting document. |
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
87 * The "old" set rules about the content of attributes (as user changes |
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
88 * are recorded here and not in the new set). |
1780
b503d92dd709
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1709
diff
changeset
|
89 * |
1634
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
90 * @return document with merged outputs as described. |
1628
16c74ca3586e
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1171
diff
changeset
|
91 */ |
1976
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
92 protected CollectionAttribute write() { |
1995
f114c0d55d19
Little optimisation when writing CollectionAttributes
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1993
diff
changeset
|
93 for (Map.Entry<String, Output> entry: newAttr.entrySet()) { |
f114c0d55d19
Little optimisation when writing CollectionAttributes
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1993
diff
changeset
|
94 String outName = entry.getKey(); |
f114c0d55d19
Little optimisation when writing CollectionAttributes
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1993
diff
changeset
|
95 Output a = entry.getValue(); |
1996
c6432e8ea31e
Bugfix: add new Outputs during merge process in AttributeWriter.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1995
diff
changeset
|
96 |
c6432e8ea31e
Bugfix: add new Outputs during merge process in AttributeWriter.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1995
diff
changeset
|
97 Output exists = attribute.getOutput(outName); |
c6432e8ea31e
Bugfix: add new Outputs during merge process in AttributeWriter.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1995
diff
changeset
|
98 if (exists == null) { |
c6432e8ea31e
Bugfix: add new Outputs during merge process in AttributeWriter.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1995
diff
changeset
|
99 attribute.addOutput(outName, a); |
c6432e8ea31e
Bugfix: add new Outputs during merge process in AttributeWriter.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1995
diff
changeset
|
100 } |
c6432e8ea31e
Bugfix: add new Outputs during merge process in AttributeWriter.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1995
diff
changeset
|
101 |
1993
85132c9edd64
Make reuse of the old CollectionAttribute during the describe() operation of FLYSArtifactCollection - remove the old facets only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1984
diff
changeset
|
102 attribute.clearFacets(outName); |
1976
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
103 writeOutput(a.getName(), newFacets, oldFacets); |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
104 } |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
105 |
2079
ca6ccf722c24
#447 removed empty Outputs from Collection's attribute.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1996
diff
changeset
|
106 // THIS CALL IS ABSOLUTELY NECESSARY! |
ca6ccf722c24
#447 removed empty Outputs from Collection's attribute.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1996
diff
changeset
|
107 attribute.cleanEmptyOutputs(); |
ca6ccf722c24
#447 removed empty Outputs from Collection's attribute.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1996
diff
changeset
|
108 |
1976
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
109 return attribute; |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
110 } |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
111 |
1634
cc47828a1390
Added documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1628
diff
changeset
|
112 |
1628
16c74ca3586e
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1171
diff
changeset
|
113 /** |
1785
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
114 * @param outputName the "new" outputs name |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
115 * @param newOutFacets Facets of the new outputs |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
116 * @param oldOutFacets Facets of the old outputs (can be null) |
1628
16c74ca3586e
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1171
diff
changeset
|
117 */ |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
118 protected void writeOutput( |
1976
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
119 String outputName, |
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
120 List<Facet> newOutFacets, |
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
121 List<Facet> oldOutFacets |
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
122 ) { |
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
123 List<String> compatFacets = this.compatibilities.get(outputName); |
1709
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
124 try { |
1976
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
125 writeFacets(outputName, newOutFacets, oldOutFacets, compatFacets); |
1709
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
126 } |
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
127 catch (ArtifactDatabaseException ade) { |
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
128 logger.error(ade, ade); |
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
129 } |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
130 } |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
131 |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
132 |
1628
16c74ca3586e
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1171
diff
changeset
|
133 /** |
1785
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
134 * @param newFacets the new facets |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
135 * @param oldFacets the old facets |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
136 * @param compatibleFacets List of facets to accept |
1831
490ab097f58c
Prevent empty output-nodes in flyscollections attributes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1810
diff
changeset
|
137 * @return true if any facets are written to the out. |
1628
16c74ca3586e
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1171
diff
changeset
|
138 */ |
1831
490ab097f58c
Prevent empty output-nodes in flyscollections attributes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1810
diff
changeset
|
139 protected boolean writeFacets( |
1976
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
140 String outputName, |
1635
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
141 List<Facet> newFacets, |
1785
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
142 List<Facet> oldFacets, |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
143 List<String> compatibleFacets) |
1709
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
144 throws ArtifactDatabaseException |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
145 { |
1788
d5d2bffb26ca
Avoid NPE when compatibility matrix is empty for given output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1785
diff
changeset
|
146 if (compatibleFacets == null) { |
d5d2bffb26ca
Avoid NPE when compatibility matrix is empty for given output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1785
diff
changeset
|
147 logger.warn("No compatible facets, not generating out."); |
1831
490ab097f58c
Prevent empty output-nodes in flyscollections attributes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1810
diff
changeset
|
148 return false; |
1788
d5d2bffb26ca
Avoid NPE when compatibility matrix is empty for given output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1785
diff
changeset
|
149 } |
d5d2bffb26ca
Avoid NPE when compatibility matrix is empty for given output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1785
diff
changeset
|
150 |
1635
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
151 int num = newFacets.size(); |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
152 |
1635
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
153 // Add all new Facets either in their old state or (if really |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
154 // new) as they are. |
1639
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
155 List<ManagedFacet> currentFacets = new ArrayList<ManagedFacet>(); |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
156 List<ManagedFacet> genuinelyNewFacets = new ArrayList<ManagedFacet>(); |
1785
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
157 |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
158 for (int i = 0; i < num; i++) { |
1635
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
159 ManagedFacet facet = (ManagedFacet) newFacets.get(i); |
1785
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
160 if (!compatibleFacets.contains(facet.getName())) { |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
161 //logger.debug("Have incompatible facet, skip: " + facet.getName()); |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
162 continue; |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
163 } |
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
164 //else logger.debug("Have compatible facet: " + facet.getName()); |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
165 |
1635
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
166 ManagedFacet picked = pickFacet(facet, oldFacets); |
1785
661dfad9910a
Use compatibility matrix when creating collections output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1780
diff
changeset
|
167 |
1639
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
168 if (facet.equals(picked)) { |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
169 genuinelyNewFacets.add(picked); |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
170 } |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
171 else { |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
172 currentFacets.add(picked); |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
173 } |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
174 } |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
175 |
1709
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
176 // With each genuinely new Facet, ask Artifact whether it comes to live |
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
177 // in/activate. |
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
178 for (ManagedFacet newMF: genuinelyNewFacets) { |
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
179 FLYSArtifact flys = (FLYSArtifact) db.getRawArtifact(newMF.getArtifact()); |
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
180 newMF.setActive(flys.getInitialFacetActivity( |
1976
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
181 outputName, |
1709
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
182 newMF.getName(), |
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
183 newMF.getIndex())); |
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
184 } |
1976
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
185 |
1639
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
186 // For each genuinely new Facet check positional conflicts. |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
187 for (ManagedFacet newMF: genuinelyNewFacets) { |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
188 boolean conflicts = true; |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
189 // Loop until all conflicts resolved. |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
190 while (conflicts) { |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
191 conflicts = false; |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
192 for (ManagedFacet oldMF: currentFacets) { |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
193 if (newMF.getPosition() == oldMF.getPosition()) { |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
194 conflicts = true; |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
195 logger.debug("Positional conflict while merging " + |
1780
b503d92dd709
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1709
diff
changeset
|
196 "facets, pushing newest facet 1 up (" + newMF.getPosition() + ")"); |
1639
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
197 newMF.setPosition(newMF.getPosition() + 1); |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
198 break; |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
199 } |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
200 } |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
201 } |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
202 currentFacets.add(newMF); |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
203 } |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
204 |
1810
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
205 // Fill/correct "gaps" (e.g. position 1,2,5 are taken, after gap filling |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
206 // expect positions 1,2,3 [5->3]) |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
207 // Preparations to be able to detect gaps. |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
208 Map<Integer, ManagedFacet> mfmap = new HashMap<Integer, ManagedFacet>(); |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
209 int max = 0; |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
210 for (ManagedFacet mf: currentFacets) { |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
211 int pos = mf.getPosition(); |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
212 mfmap.put(Integer.valueOf(pos), mf); |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
213 if (pos > max) max = pos; |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
214 } |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
215 |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
216 // Finally do gap correction. |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
217 if (max != currentFacets.size()) { |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
218 int gap = 0; |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
219 for (int i = 1; i <= max; i++) { |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
220 ManagedFacet mf = mfmap.get(Integer.valueOf(i)); |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
221 if (mf == null) { |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
222 gap++; |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
223 continue; |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
224 } |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
225 mf.setPosition(mf.getPosition() - gap); |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
226 } |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
227 } |
193a916d1ab5
Pass output name to artifacts getInitialFacetActivity, prevent gaps in collection attributes outputs facets positions.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1788
diff
changeset
|
228 |
1639
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
229 // Now add all facets. |
12235a2ace21
Add positional-conflict-awareness when merging Facets in attribute
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1635
diff
changeset
|
230 for (ManagedFacet oldMF: currentFacets) { |
1976
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
231 attribute.addFacet(outputName, oldMF); |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
232 } |
1831
490ab097f58c
Prevent empty output-nodes in flyscollections attributes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1810
diff
changeset
|
233 |
490ab097f58c
Prevent empty output-nodes in flyscollections attributes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1810
diff
changeset
|
234 return currentFacets.size() > 0; |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
235 } |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
236 |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
237 |
1628
16c74ca3586e
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1171
diff
changeset
|
238 /** |
1635
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
239 * Returns the facet to be added to Document. |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
240 * Return the new facet only if the "same" facet was not present before. |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
241 * Return the "old" facet otherwise (user-defined information sticks |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
242 * to it). |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
243 * @param facet the new facet. |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
244 * @param oldFacets the old facets, new facet is compared against each of |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
245 * these. |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
246 * @return facet if genuinely new, matching old facet otherwise. |
1628
16c74ca3586e
Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1171
diff
changeset
|
247 */ |
1976
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
248 protected ManagedFacet pickFacet(ManagedFacet facet, List<Facet> oldFacets) |
1709
f643ea084213
Allow simple codepaths to have Facets initially being 'inactive' (wrt rendering).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1639
diff
changeset
|
249 { |
1635
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
250 if (oldFacets == null) { |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
251 logger.debug("No old facets to compare a new to found."); |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
252 return facet; |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
253 } |
1976
0b466bd4ab24
Introduced a CollectionAttribute class that stores the information provided by the Collection's attribute document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1831
diff
changeset
|
254 |
1635
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
255 String hash = facet.getName() + facet.getIndex() + facet.getArtifact(); |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
256 |
1635
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
257 // Compare "new" facet with all old facets. |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
258 // Take oldFacet if that facet was already present (otherwise |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
259 // information is lost, the new one otherwise. |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
260 for (Facet oFacet: oldFacets) { |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
261 ManagedFacet oldFacet = (ManagedFacet) oFacet; |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
262 String oldHash = oldFacet.getName() |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
263 + oldFacet.getIndex() |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
264 + oldFacet.getArtifact(); |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
265 if (hash.equals(oldHash)) { |
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
266 return oldFacet; |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
267 } |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
268 } |
1635
1b5204203e18
Minor refactoring, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1634
diff
changeset
|
269 return facet; |
346
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
270 } |
16161de47662
The Attributes of a collection are written into its DESCRIBE now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
271 } |
705
853dceead0f4
Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
694
diff
changeset
|
272 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |