Mercurial > dive4elements > river
diff gwt-client/src/main/java/org/dive4elements/river/client/shared/model/Recommendation.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-client/src/main/java/org/dive4elements/river/client/shared/model/Recommendation.java@821a02bbfb4e |
children | 172338b1407f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/shared/model/Recommendation.java Thu Apr 25 15:23:37 2013 +0200 @@ -0,0 +1,219 @@ +package org.dive4elements.river.client.shared.model; + + +import java.util.List; +import java.util.Map; +import java.util.HashMap; + +import java.io.Serializable; + +/** + * Information bundle to let client create/clone an artifact with facets. + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public class Recommendation implements Serializable { + + /** Index and name of a facet. */ + public static class Facet implements Serializable { + + /** Facet name. */ + protected String name; + + /** Facet index. */ + protected String index; + + public Facet() { + } + + public Facet(String name, String index) { + this.name = name; + this.index = index; + } + + public String getName() { + return name; + } + + public String getIndex() { + return index; + } + + + @Override + public int hashCode() { + int hash = 0; + if (getName() != null) { + hash += getName().hashCode(); + } + if (getIndex() != null) { + hash += getIndex().hashCode(); + } + return hash; + } + + + @Override + public boolean equals(Object other) { + if (!(other instanceof Facet) || other == null) { + return false; + } + Facet facet = (Facet) other; + return (same(facet.getIndex(), this.getIndex())) + && (same(facet.getName(), this.getName())); + } + } // class Facet + + + /** Mapping of outnames to Facet-Lists. */ + public static class Filter implements Serializable { + + protected Map<String, List<Facet>> outs; + + public Filter() { + outs = new HashMap<String, List<Facet>>(); + } + + public void add(String out, List<Facet> facets) { + outs.put(out, facets); + } + + public Map<String, List<Facet>> getOuts() { + return outs; + } + + + @Override + public int hashCode() { + if (getOuts() != null) { + return getOuts().hashCode(); + } + return 0; + } + + + @Override + public boolean equals(Object other) { + if (!(other instanceof Filter) || other == null) { + return false; + } + Filter filter = (Filter) other; + return Recommendation.same(filter.getOuts(), this.getOuts()); + } + } // class Filter + + /** Factory to speak to when creating/cloning. */ + protected String factory; + /** Sometimes database ids, sometimes other freeform text. */ + protected String ids; + /** Artifacts uuid that should serve as master artifact. */ + protected String masterArtifact; + /** Optional facet filter. */ + protected Filter filter; + protected String displayName = null; + + public Recommendation() { + } + + public Recommendation(String factory, String ids) { + this(factory, ids, null, null); + } + + public Recommendation( + String factory, + String ids, + String masterArtifact, + Filter filter + ) { + this.factory = factory; + this.ids = ids; + this.masterArtifact = masterArtifact; + this.filter = filter; + } + + public String getFactory() { + return factory; + } + + public void setFactory(String factory) { + this.factory = factory; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public String getDisplayName() { + return this.displayName; + } + + public String getIDs() { + return ids; + } + + public String getMasterArtifact() { + return masterArtifact; + } + + public void setMasterArtifact(String masterArtifact) { + this.masterArtifact = masterArtifact; + } + + public Filter getFilter() { + return filter; + } + + public void setFilter(Filter filter) { + this.filter = filter; + } + + + @Override + public int hashCode() { + int hash = 0; + hash += (getFactory() != null) + ? getFactory().hashCode() + : 0; + hash += (getIDs() != null) + ? getIDs().hashCode() + : 0; + hash += (getFilter() != null) + ? getFilter().hashCode() + : 0; + hash += (getMasterArtifact() != null) + ? getMasterArtifact().hashCode() + : 0; + return hash; + } + + + /** + * Null-pointer guarded equals. + * Two null's are assumed equal (returns true); + * @param a Object to compare against parameter b. + * @param b Object to compare against parameter a. + * @return true if either a and b are null or a.equals(b) returns true. + */ + protected static boolean same(Object a, Object b) { + // Do null-check. + if (a == null) { + return b == null; + } else if (b == null) { + return false; + } + return a.equals(b); + } + + + @Override + public boolean equals(Object other) { + if (!(other instanceof Recommendation) || other == null) { + return false; + } + Recommendation rec = (Recommendation) other; + return (same(this.getFactory(), rec.getFactory())) + && (same(this.getIDs(), rec.getIDs())) + && (same(this.getFilter(), rec.getFilter())) + && (same(this.getMasterArtifact(), rec.getMasterArtifact())); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :