diff flys-artifacts/src/main/java/de/intevation/flys/themes/ThemeMapping.java @ 1822:6ed439ff61bf

Changed theme-mapping mechanism to include further condition (on master-artifacts attributes), added point themes for longitudinal.ws for calculations at locations. flys-artifacts/trunk@3151 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 03 Nov 2011 10:25:23 +0000
parents d2a17e990c70
children 9562ca537143
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/themes/ThemeMapping.java	Thu Nov 03 10:19:29 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/themes/ThemeMapping.java	Thu Nov 03 10:25:23 2011 +0000
@@ -1,28 +1,51 @@
 package de.intevation.flys.themes;
 
+import org.apache.log4j.Logger;
+
 import java.io.Serializable;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import de.intevation.flys.artifacts.FLYSArtifact;
 
+/**
+ * Represents mapping to a theme (including conditions).
+ */
 public class ThemeMapping implements Serializable {
 
+    /** The logger that is used in this class */
+    private static Logger logger = Logger.getLogger(ThemeMapping.class);
+
+    /** Name from which to map. */
     protected String from;
+
+    /** Name to which to map. */
     protected String to;
+
+    /** Given pattern (held against facet description). */
     protected String patternStr;
 
+    /** Given masterAttr pattern (held against masterartifacts attributes). */
+    protected String masterAttr;
+
     protected Pattern pattern;
 
 
     public ThemeMapping(String from, String to) {
-        this(from, to, null);
+        this(from, to, null, null);
     }
 
 
-    public ThemeMapping(String from, String to, String patternStr) {
+    public ThemeMapping(
+        String from,
+        String to,
+        String patternStr,
+        String masterAttr)
+   {
         this.from       = from;
         this.to         = to;
         this.patternStr = patternStr;
+        this.masterAttr = masterAttr;
 
         this.pattern = Pattern.compile(patternStr);
     }
@@ -33,19 +56,62 @@
     }
 
 
+    /**
+     * Get name of theme that is mapped to.
+     */
     public String getTo() {
         return to;
     }
 
 
+    /**
+     * Get pattern.
+     */
     public String getPatternStr() {
         return patternStr;
     }
 
 
+    /**
+     * Match regular expression against text.
+     *
+     * @param text string to be matched against.
+     * @return true if pattern matches text or pattern is empty.
+     */
     public boolean applyPattern(String text) {
+        if (patternStr == null || patternStr.equals("")) {
+            return true;
+        }
         Matcher m = pattern.matcher(text);
         return m.matches();
     }
+
+
+    /**
+     * Inspects Artifacts data given the masterAttr-condition.
+     *
+     * The only condition implemented so far is 'key==value', for which
+     * the Artifacts data with name "key" has to be of value "value" in order
+     * for true to be returned.
+     *
+     * @param artifact Artifact of which to inspect data.
+     * @return true if no condition is specified or condition is met.
+     */
+    public boolean masterAttrMatches(FLYSArtifact artifact) {
+        if (masterAttr == null || masterAttr.equals("")) {
+           return true;
+        }
+
+        // Operator split.
+        String[] parts = masterAttr.split("==");
+        if (parts.length != 2) {
+            logger.error("ThemeMapping could not parse masterAttr.-condition:_"
+                + masterAttr + "_");
+            return false;
+        }
+
+        // Test.
+        return artifact.getDataAsString(parts[0]).equals(parts[1]);
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org