Mercurial > dive4elements > river
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 :