view flys-client/src/main/java/de/intevation/flys/client/shared/model/Recommendation.java @ 5200:42bb6ff78d1b 2.9.11

Directly set the connectionInitSqls on the datasource Somehow the factory fails to set the connectionInitSqls if we add it to the dbcpProperties. So we now set it directly
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 08 Mar 2013 11:48:33 +0100
parents 0b79630e3bcb
children
line wrap: on
line source
package de.intevation.flys.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 :

http://dive4elements.wald.intevation.org