org.psikeds.resolutionengine.datalayer.vo.Relation.java Source code

Java tutorial

Introduction

Here is the source code for org.psikeds.resolutionengine.datalayer.vo.Relation.java

Source

/*******************************************************************************
 * psiKeds :- ps induced knowledge entity delivery system
 *
 * Copyright (c) 2013, 2014 Karsten Reincke, Marco Juliano, Deutsche Telekom AG
 *
 * This file is free software: you can redistribute
 * it and/or modify it under the terms of the
 * [x] GNU Affero General Public License
 * [ ] GNU General Public License
 * [ ] GNU Lesser General Public License
 * [ ] Creatice Commons ShareAlike License
 *
 * For details see file LICENSING in the top project directory
 *******************************************************************************/
package org.psikeds.resolutionengine.datalayer.vo;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlRootElement;

import org.codehaus.jackson.annotate.JsonIgnore;

import org.springframework.util.StringUtils;

/**
 * A Relation is always attached to a Variant and defined as some logical
 * Operation/Dependency between two Features or a Feature and a constant Value,
 * defined by the corresponding Relation-Partners.
 * 
 * Optionally a conditional can be specified (conditionalEventID), meaning that
 * this Relation is only relevant if the corresponding Event was triggered.
 * 
 * Note 1: Relation-ID must be globally unique.
 * 
 * Note 2: Variant-ID must point to an existing Object!
 * 
 * @author marco@juliano.de
 * 
 */
@XmlRootElement(name = "Relation")
public class Relation extends ValueObject implements Serializable {

    private static final long serialVersionUID = 1L;

    public static final RelationOperator DEFAULT_OPERATOR = RelationOperator.DEFAULT_OPERATOR;

    private String label;
    private String description;
    private String variantID;
    private String conditionalEventID;
    private RelationParameter leftSide;
    private RelationParameter rightSide;
    private RelationOperator operator;

    public Relation() {
        this(null, null, null, null, null, null);
    }

    public Relation(final String label, final String description, final String relationID, final String variantID,
            final RelationParameter leftSide, final RelationParameter rightSide) {
        this(label, description, relationID, variantID, leftSide, rightSide, DEFAULT_OPERATOR);
    }

    public Relation(final String label, final String description, final String relationID, final String variantID,
            final RelationParameter leftSide, final RelationParameter rightSide, final RelationOperator operator) {
        this(label, description, relationID, variantID, leftSide, rightSide, operator, null);
    }

    public Relation(final String label, final String description, final String relationID, final String variantID,
            final RelationParameter leftSide, final RelationParameter rightSide, final RelationOperator operator,
            final String conditionalEventID) {
        super(relationID);
        setLabel(label);
        setDescription(description);
        setVariantID(variantID);
        setLeftSide(leftSide);
        setRightSide(rightSide);
        setOperator(operator);
        setConditionalEventID(conditionalEventID);
    }

    public String getLabel() {
        return this.label;
    }

    public void setLabel(final String label) {
        this.label = label;
    }

    public String getDescription() {
        return this.description;
    }

    public void setDescription(final String description) {
        this.description = description;
    }

    public String getRelationID() {
        return getId();
    }

    public void setRelationID(final String relationID) {
        setId(relationID);
    }

    public String getVariantID() {
        return this.variantID;
    }

    public void setVariantID(final String variantID) {
        this.variantID = variantID;
    }

    public RelationOperator getOperator() {
        return this.operator;
    }

    public void setOperator(final RelationOperator operator) {
        this.operator = (operator != null ? operator : DEFAULT_OPERATOR);
    }

    public RelationParameter getLeftSide() {
        return this.leftSide;
    }

    public void setLeftSide(final RelationParameter leftSide) {
        this.leftSide = leftSide;
    }

    public RelationParameter getRightSide() {
        return this.rightSide;
    }

    public void setRightSide(final RelationParameter rightSide) {
        this.rightSide = rightSide;
    }

    public String getConditionalEventID() {
        return this.conditionalEventID;
    }

    public void setConditionalEventID(final String conditionalEventID) {
        this.conditionalEventID = conditionalEventID;
    }

    @JsonIgnore
    public boolean isConditional() {
        return (!StringUtils.isEmpty(getConditionalEventID()));
    }
}