# HG changeset patch # User Ingo Weinzierl # Date 1311093172 0 # Node ID 374712890b945096e70eba32966beef3b897f195 # Parent 653ae84533e79913599ac62829958474943336ad Facets read from Collection's DESCRIBE document keep all their attributes after the Collection's attribute has been modified. flys-client/trunk@2362 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 653ae84533e7 -r 374712890b94 flys-client/ChangeLog --- a/flys-client/ChangeLog Mon Jul 18 09:52:16 2011 +0000 +++ b/flys-client/ChangeLog Tue Jul 19 16:32:52 2011 +0000 @@ -1,3 +1,25 @@ +2011-07-19 Ingo Weinzierl + + * src/main/java/de/intevation/flys/client/shared/model/AttributedTheme.java: + New. This theme stores all its attributes in a map. The intent of this + theme is to save all the facet's values contained in the DESCRIBE of the + Collection to be able to write an equivalent attribute part as the + incoming DESCRIBE has -> no loss of attributes like WMS URL or + layernames in a map theme! + + * src/main/java/de/intevation/flys/client/server/DescribeCollectionServiceImpl.java: + Instantiate new AttributedThemes to save all information of a facet. + + * src/main/java/de/intevation/flys/client/server/CollectionHelper.java: + Write all attributes of an AttributedTheme into a facet's element. + + * src/main/java/de/intevation/flys/client/shared/model/Theme.java, + src/main/java/de/intevation/flys/client/shared/model/DefaultTheme.java, + src/main/java/de/intevation/flys/client/shared/model/FacetRecord.java, + src/main/java/de/intevation/flys/client/client/ui/chart/ChartThemePanel.java: + The 'active' member variable is an integer value now as it is in the + Collection's DESCRIBE document, too. + 2011-07-18 Ingo Weinzierl * src/main/java/de/intevation/flys/client/client/services/ArtifactServiceAsync.java, diff -r 653ae84533e7 -r 374712890b94 flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartThemePanel.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartThemePanel.java Mon Jul 18 09:52:16 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartThemePanel.java Tue Jul 19 16:32:52 2011 +0000 @@ -236,7 +236,7 @@ FacetRecord rec = (FacetRecord) list.getRecord(row); Theme theme = rec.getTheme(); - theme.setActive(rec.getActive()); + theme.setActive(rec.getActive() ? 1 : 0); updateCollection(); } diff -r 653ae84533e7 -r 374712890b94 flys-client/src/main/java/de/intevation/flys/client/server/CollectionHelper.java --- a/flys-client/src/main/java/de/intevation/flys/client/server/CollectionHelper.java Mon Jul 18 09:52:16 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/server/CollectionHelper.java Tue Jul 19 16:32:52 2011 +0000 @@ -2,6 +2,7 @@ import java.util.List; import java.util.Map; +import java.util.Set; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -10,6 +11,7 @@ import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; +import de.intevation.flys.client.shared.model.AttributedTheme; import de.intevation.flys.client.shared.model.Collection; import de.intevation.flys.client.shared.model.OutputMode; import de.intevation.flys.client.shared.model.Theme; @@ -143,14 +145,24 @@ return null; } - Element t = cr.create("theme"); + Element t = cr.create("facet"); - cr.addAttr(t, "active", theme.isActive() ? "1" : "0", true); - cr.addAttr(t, "artifact", theme.getArtifact(), true); - cr.addAttr(t, "facet", theme.getFacet(), true); - cr.addAttr(t, "pos", Integer.toString(theme.getPosition()), true); - cr.addAttr(t, "index", Integer.toString(theme.getIndex()), true); - cr.addAttr(t, "description", theme.getDescription(), true); + if (theme instanceof AttributedTheme) { + AttributedTheme at = (AttributedTheme) theme; + Set keys = at.getKeys(); + + for (String key: keys) { + cr.addAttr(t, key, at.getAttr(key), true); + } + } + else { + cr.addAttr(t, "active", Integer.toString(theme.getActive()), true); + cr.addAttr(t, "artifact", theme.getArtifact(), true); + cr.addAttr(t, "facet", theme.getFacet(), true); + cr.addAttr(t, "pos", Integer.toString(theme.getPosition()), true); + cr.addAttr(t, "index", Integer.toString(theme.getIndex()), true); + cr.addAttr(t, "description", theme.getDescription(), true); + } return t; } diff -r 653ae84533e7 -r 374712890b94 flys-client/src/main/java/de/intevation/flys/client/server/DescribeCollectionServiceImpl.java --- a/flys-client/src/main/java/de/intevation/flys/client/server/DescribeCollectionServiceImpl.java Mon Jul 18 09:52:16 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/server/DescribeCollectionServiceImpl.java Tue Jul 19 16:32:52 2011 +0000 @@ -9,6 +9,8 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; import org.w3c.dom.NodeList; import com.google.gwt.user.server.rpc.RemoteServiceServlet; @@ -23,6 +25,7 @@ import de.intevation.artifacts.httpclient.http.response.DocumentResponseHandler; import de.intevation.flys.client.shared.exceptions.ServerException; +import de.intevation.flys.client.shared.model.AttributedTheme; import de.intevation.flys.client.shared.model.Collection; import de.intevation.flys.client.shared.model.CollectionItem; import de.intevation.flys.client.shared.model.DefaultCollection; @@ -206,7 +209,7 @@ NodeList themes = node.getElementsByTagNameNS( ArtifactNamespaceContext.NAMESPACE_URI, - "theme"); + "facet"); int num = themes != null ? themes.getLength() : 0; @@ -229,29 +232,22 @@ String uri = ArtifactNamespaceContext.NAMESPACE_URI; - String strAct = ele.getAttributeNS(uri, "active"); - String art = ele.getAttributeNS(uri, "artifact"); - String fac = ele.getAttributeNS(uri, "facet"); - String strPos = ele.getAttributeNS(uri, "pos"); - String desc = ele.getAttributeNS(uri, "description"); - String strIdx = ele.getAttributeNS(uri, "index"); + NamedNodeMap attrMap = ele.getAttributes(); + int attrNum = attrMap != null ? attrMap.getLength() : 0; - if (strAct.length() > 0 && art.length() > 0 && fac.length() > 0 - && strPos.length() > 0 && strIdx.length() > 0) - { - try { - int pos = Integer.valueOf(strPos); - int active = Integer.valueOf(strAct); - int idx = Integer.valueOf(strIdx); + AttributedTheme t = new AttributedTheme(); - return new DefaultTheme(pos, idx, active > 0, art, fac, desc); - } - catch (NumberFormatException nfe) { - nfe.printStackTrace(); - } + for (int i = 0; i < attrNum; i++) { + Node attr = attrMap.item(i); + + String prefix = attr.getPrefix(); + String name = attr.getNodeName().replace(prefix + ":", ""); + String value = attr.getNodeValue(); + + t.addAttr(name, value); } - return null; + return t; } diff -r 653ae84533e7 -r 374712890b94 flys-client/src/main/java/de/intevation/flys/client/shared/model/AttributedTheme.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/AttributedTheme.java Tue Jul 19 16:32:52 2011 +0000 @@ -0,0 +1,157 @@ +package de.intevation.flys.client.shared.model; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + + +/** + * @author Ingo Weinzierl + */ +public class AttributedTheme implements Theme { + + protected Map attributes; + + + public AttributedTheme() { + this.attributes = new HashMap(); + } + + + public Set getKeys() { + return attributes.keySet(); + } + + + public void addAttr(String name, String value) { + if (name != null && value != null) { + attributes.put(name, value); + } + } + + + public String getAttr(String name) { + return attributes.get(name); + } + + + public Integer getAttrAsInt(String name) { + String attr = getAttr(name); + + if (attr != null && attr.length() > 0) { + try { + return Integer.parseInt(attr); + } + catch (NumberFormatException nfe) { + } + } + + return null; + } + + + public boolean getAttrAsBoolean(String name) { + String attr = getAttr(name); + + if (attr != null) { + try { + int num = Integer.valueOf(attr); + return num > 0; + } + catch (NumberFormatException nfe) { + // do nothing + } + } + + return Boolean.valueOf(attr); + } + + + @Override + public int getPosition() { + Integer pos = getAttrAsInt("pos"); + + return pos != null ? pos.intValue() : -1; + } + + + @Override + public void setPosition(int pos) { + addAttr("pos", String.valueOf(pos)); + } + + + @Override + public int getIndex() { + Integer idx = getAttrAsInt("index"); + + return idx != null ? idx.intValue() : -1; + } + + + @Override + public int getActive() { + return getAttrAsInt("active"); + } + + + @Override + public void setActive(int active) { + addAttr("active", String.valueOf(active)); + } + + + @Override + public String getArtifact() { + return getAttr("artifact"); + } + + + @Override + public String getFacet() { + return getAttr("facet"); + } + + + @Override + public String getDescription() { + return getAttr("description"); + } + + + @Override + public boolean equals(Object o) { + if (!(o instanceof AttributedTheme)) { + return false; + } + + AttributedTheme other = (AttributedTheme) o; + + if (other.getPosition() != getPosition()) { + return false; + } + + if (!other.getArtifact().equals(getArtifact())) { + return false; + } + + if (other.getActive() != getActive()) { + return false; + } + + if (!other.getFacet().equals(getFacet())) { + return false; + } + + if (!other.getDescription().equals(getDescription())) { + return false; + } + + if (other.getIndex() != getIndex()) { + return false; + } + + return true; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 653ae84533e7 -r 374712890b94 flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultTheme.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultTheme.java Mon Jul 18 09:52:16 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/DefaultTheme.java Tue Jul 19 16:32:52 2011 +0000 @@ -10,7 +10,7 @@ protected int index; - protected boolean active; + protected int active; protected String artifact; @@ -26,7 +26,7 @@ public DefaultTheme( int pos, int index, - boolean active, + int active, String art, String facet, String description) @@ -55,12 +55,12 @@ } - public boolean isActive() { + public int getActive() { return active; } - public void setActive(boolean active) { + public void setActive(int active) { this.active = active; } diff -r 653ae84533e7 -r 374712890b94 flys-client/src/main/java/de/intevation/flys/client/shared/model/FacetRecord.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/FacetRecord.java Mon Jul 18 09:52:16 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/FacetRecord.java Tue Jul 19 16:32:52 2011 +0000 @@ -10,15 +10,13 @@ */ public class FacetRecord extends ListGridRecord { - protected boolean active; - protected Theme theme; public FacetRecord(Theme theme) { this.theme = theme; - setActive(theme.isActive()); + setActive(theme.getActive() == 1); setName(theme.getDescription()); } @@ -46,7 +44,6 @@ public void setActive(boolean active) { - this.active = active; setAttribute("active", active); } } diff -r 653ae84533e7 -r 374712890b94 flys-client/src/main/java/de/intevation/flys/client/shared/model/Theme.java --- a/flys-client/src/main/java/de/intevation/flys/client/shared/model/Theme.java Mon Jul 18 09:52:16 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/shared/model/Theme.java Tue Jul 19 16:32:52 2011 +0000 @@ -14,9 +14,9 @@ int getIndex(); - boolean isActive(); + int getActive(); - void setActive(boolean active); + void setActive(int active); String getArtifact();