Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java @ 1059:fdb0f4ef96f0
Made FLYS artifacts cloneable.
flys-artifacts/trunk@2531 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 23 Aug 2011 11:07:21 +0000 |
parents | d4a5d3941cc0 |
children | f364410c7bc9 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java Tue Aug 23 07:53:41 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java Tue Aug 23 11:07:21 2011 +0000 @@ -121,8 +121,9 @@ * * @return the name of the concrete artifact. */ - public abstract String getName(); - + public String getName() { + return name; + } /** * Returns the FLYSContext from context object. @@ -190,13 +191,52 @@ filterFacets = buildFilterFacets(data); } + protected List<String> clonePreviousStateIds() { + return new ArrayList<String>(previousStateIds); + } + + protected Map<String, StateData> cloneData() { + Map<String, StateData> copy = new TreeMap<String, StateData>(); + + for (Map.Entry<String, StateData> entry: data.entrySet()) { + copy.put(entry.getKey(), entry.getValue().deepCopy()); + } + + return copy; + } + + protected Map<String, List<Facet>> cloneFacets() { + Map copy = new HashMap<String, List<Facet>>(); + + for (Map.Entry<String, List<Facet>> entry: facets.entrySet()) { + List<Facet> facets = entry.getValue(); + List<Facet> facetCopies = new ArrayList<Facet>(facets.size()); + for (Facet facet: facets) { + facetCopies.add(facet.deepCopy()); + } + copy.put(entry.getKey(), facetCopies); + } + + return copy; + } protected void initialize( Artifact artifact, Object context, CallMeta callMeta) { - // do nothing here + if (!(artifact instanceof FLYSArtifact)) { + return; + } + + FLYSArtifact flys = (FLYSArtifact)artifact; + + currentStateId = flys.currentStateId; + previousStateIds = flys.clonePreviousStateIds(); + name = flys.name; + data = flys.cloneData(); + facets = flys.cloneFacets(); + // Do not clone filter facets! } protected Map<String, List<Facet>> buildFilterFacets(Document document) {