diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java @ 2095:8cb679d4ec49

Implemented initialize() in FloodMapState to enable cloning floodmaps. flys-artifacts/trunk@3642 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 10 Jan 2012 11:50:01 +0000
parents ebc2aa64c1be
children 85d31c2620e5
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java	Tue Jan 10 11:44:46 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java	Tue Jan 10 11:50:01 2012 +0000
@@ -262,7 +262,7 @@
             State state = getState(context, stateId);
 
             if (state != null) {
-                state.initialize(artifact, context, callMeta);
+                state.initialize(artifact, this, context, callMeta);
             }
         }
     }
@@ -620,6 +620,21 @@
     }
 
 
+    public List<Facet> getFacets() {
+        List<Facet> all = new ArrayList<Facet>();
+
+        Set<Map.Entry<String, List<Facet>>> entries = facets.entrySet();
+        for (Map.Entry<String, List<Facet>> entry: entries) {
+            List<Facet> fs = entry.getValue();
+            for (Facet f: fs) {
+                all.add(f);
+            }
+        }
+
+        return all;
+    }
+
+
     /**
      * Get facet as stored internally, with equalling name and index than given
      * facet.
@@ -772,18 +787,29 @@
      * @return filtered Outputlist.
      */
     protected List<Output> filterOutputs(List<Output> outs) {
-
         if (filterFacets == null || filterFacets.isEmpty()) {
             logger.debug("No filter for Outputs.");
             return outs;
         }
 
+        logger.debug("Filter Facets with " + filterFacets.size() + " filters.");
+
         List<Output> filtered = new ArrayList<Output>();
 
         for (Output out: outs) {
+            String outName = out.getName();
 
-            List<Facet> fFacets = filterFacets.get(out.getName());
+            logger.debug("  filter Facets for Output: " + outName);
+
+            List<Facet> fFacets = filterFacets.get(outName);
             if (fFacets != null) {
+                logger.debug("" + fFacets.size() + " filters for: " + outName);
+
+                if (logger.isDebugEnabled()) {
+                    for (Facet tmp: fFacets) {
+                        logger.debug("   filter = '" + tmp.getName() + "'");
+                    }
+                }
 
                 List<Facet> resultFacets = new ArrayList<Facet>();
 
@@ -797,6 +823,8 @@
                     }
                 }
 
+                logger.debug("Facets after filtering = " + resultFacets.size());
+
                 if (!resultFacets.isEmpty()) {
                     DefaultOutput nout = new DefaultOutput(
                         out.getName(),
@@ -808,6 +836,8 @@
             }
         }
 
+        logger.debug("All Facets after filtering = " + filtered.size());
+
         return filtered;
     }
 
@@ -819,6 +849,8 @@
      * @return list of outputs
      */
     public List<Output> getOutputs(Object context) {
+        logger.debug("##### Get Outputs for: " + identifier() + " #####");
+
         List<String> stateIds  = getPreviousStateIds();
         List<Output> generated = new ArrayList<Output>();
 
@@ -857,20 +889,28 @@
      * @return list of output(s) for given state.
      */
     protected List<Output> getOutputForState(DefaultState state) {
+        logger.debug("Find Outputs for State: " + state.getID());
+
         List<Output> list = state.getOutputs();
         if (list == null || list.size() == 0) {
             logger.debug("-> No output modes for this state.");
             return new ArrayList<Output>();
         }
 
-        List<Facet> fs = facets.get(state.getID());
+        String stateId = state.getID();
+
+        List<Facet> fs = facets.get(stateId);
 
         if (fs == null || fs.size() == 0) {
             logger.debug("No facets found.");
             return new ArrayList<Output>();
         }
 
-        return generateOutputs(list, fs);
+        List<Output> gen = generateOutputs(list, fs);
+
+        logger.debug("State '" + stateId + "' has " + gen.size() + " outs");
+
+        return gen;
     }
 
 
@@ -1077,11 +1117,54 @@
 
             logger.debug("CURRENT STATE: " + getCurrentStateId());
 
+            debugFacets();
+            dumpFilterFacets();
+
             logger.debug("++++++++++++++ END ARTIFACT DUMP +++++++++++++++++");
         }
     }
 
 
+    protected void debugFacets() {
+        logger.debug("######### FACETS #########");
+        Set<Map.Entry<String, List<Facet>>> entries = facets.entrySet();
+
+        for (Map.Entry<String, List<Facet>> entry: entries) {
+            String out = entry.getKey();
+            List<Facet> fs = entry.getValue();
+            for (Facet f: fs) {
+                logger.debug("  # " + out + " : " + f.getName());
+            }
+        }
+
+        logger.debug("######## FACETS END ########");
+    }
+
+
+    protected void dumpFilterFacets() {
+        logger.debug("######## FILTER FACETS ########");
+
+        if (filterFacets == null || filterFacets.isEmpty()) {
+            logger.debug("No Filter Facets defined.");
+            return;
+        }
+
+        Set<Map.Entry<String, List<Facet>>> entries = filterFacets.entrySet();
+        for (Map.Entry<String, List<Facet>> entry: entries) {
+            String      out     = entry.getKey();
+            List<Facet> filters = entry.getValue();
+
+            logger.debug("There are " + filters.size() + " filters for: " +out);
+
+            for (Facet filter: filters) {
+                logger.debug("  filter: " + filter.getName());
+            }
+        }
+
+        logger.debug("######## FILTER FACETS END ########");
+    }
+
+
     protected void destroyState(String id, Object context) {
         State s = getState(context, id);
         s.endOfLife(this, context);

http://dive4elements.wald.intevation.org