view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/DataFacet.java @ 4198:1cdbd8a0c994

Added two new tables ClickableQDTable and ClickableWTable and made Ws and Qs clickable in historical discharge calculation. The new tables define listener interfaces (clicked lower or upper icon) to listen to user clicks. In addition to this, there is an enum ClickMode with NONE, SINGLE and RANGE options, which allows to specifiy, which icons are displayed in the tables. NONE means no icon for user clicks, SINGLE has 1 icon, RANGE 2 icons for lower and upper.
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 22 Oct 2012 13:31:25 +0200
parents 79a94c4171cb
children
line wrap: on
line source
package de.intevation.flys.artifacts.model;

import de.intevation.artifacts.Artifact;
import de.intevation.artifacts.CallContext;

import de.intevation.artifactdatabase.state.Facet;

import de.intevation.flys.artifacts.FLYSArtifact;

import de.intevation.flys.artifacts.states.DefaultState.ComputeType;

public class DataFacet
extends      BlackboardDataFacet
{
    protected ComputeType type;
    protected String      hash;
    protected String      stateId;


    /** Trivial constructor. */
    public DataFacet() {
    }

    /**
     * Defaults to ADVANCE Compute type.
     * @param name Name of the facet.
     * @param description maybe localized description of the facet.
     */
    public DataFacet(String name, String description) {
        this(name, description, ComputeType.ADVANCE);
    }


    public DataFacet(String name, String description, ComputeType type) {
        this(name, description, type, null);
    }


    public DataFacet(
        String      name,
        String      description,
        ComputeType type,
        String      hash
    ) {
        super(name, description);
        this.type = type;
        this.hash = hash;
    }


    public DataFacet(
        String      name,
        String      description,
        ComputeType type,
        String      hash,
        String      stateId
    ) {
        super(name, description);
        this.type    = type;
        this.hash    = hash;
        this.stateId = stateId;
    }


    public DataFacet(
        int         index,
        String      name,
        String      description,
        ComputeType type,
        String      hash,
        String      stateId
    ) {
        super(index, name, description);
        this.type    = type;
        this.hash    = hash;
        this.stateId = stateId;
    }


    /**
     * Return computation result.
     */
    @Override
    public Object getData(Artifact artifact, CallContext context) {
        FLYSArtifact flys = (FLYSArtifact)artifact;
        String    theHash = (hash != null) ? hash : flys.hash();

        return (stateId != null && stateId.length() > 0)
            ? flys.compute(context, theHash, stateId, type, false)
            : flys.compute(context, theHash, type, false);
    }


    /**
     * Return a deep copy.
     */
    @Override
    public Facet deepCopy() {
        DataFacet copy = new DataFacet();
        copy.set(this);
        copy.type    = type;
        copy.hash    = hash;
        copy.stateId = stateId;
        return copy;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org