package sushi.transformation.element.externalknowledge; import java.util.ArrayList; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import sushi.event.attribute.SushiAttributeTypeEnum; import sushi.persistence.Persistable; import sushi.transformation.TransformationRule; /** * Container object for external knowledge expressions. * References the attribute (using its attribute expression) of the event type for transformed events. * It also contains the type of the attribute and a default value. * The default value is used if no external knowledge expression can retrieve a value for the specified attribute. * */ @Entity @Table(name = "ExternalKnowledgeExpressionSet") public class ExternalKnowledgeExpressionSet extends Persistable { private static final long serialVersionUID = -7637140960882882120L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ExpressionSetID") private int ID; @Column(name = "attributeExpression") private String attributeExpression; @ManyToOne private TransformationRule transformationRule; @Column(name = "resultingType") private SushiAttributeTypeEnum resultingType; @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name="ExpressionSetID", referencedColumnName="ExpressionSetID") private List<ExternalKnowledgeExpression> externalKnowledgeExpressions; @Column(name = "defaultValue") private String defaultValue; public ExternalKnowledgeExpressionSet() { this.ID = 0; this.attributeExpression = null; this.resultingType = null; this.externalKnowledgeExpressions = new ArrayList<ExternalKnowledgeExpression>(); this.defaultValue = null; } /** * Constructor. * * @param resultingType the event type for the transformed events * @param attributeExpression the attribute expression of the attribute of the event type for the transformed events */ public ExternalKnowledgeExpressionSet(SushiAttributeTypeEnum resultingType, String attributeExpression) { this(); this.resultingType = resultingType; this.attributeExpression = attributeExpression; } public int getID() { return ID; } public void setID(int iD) { ID = iD; } public SushiAttributeTypeEnum getResultingType() { return resultingType; } public void setResultingType(SushiAttributeTypeEnum resultingType) { this.resultingType = resultingType; } public List<ExternalKnowledgeExpression> getExternalKnowledgeExpressions() { return externalKnowledgeExpressions; } public void setExternalKnowledgeExpressions(List<ExternalKnowledgeExpression> externalKnowledgeExpressions) { this.externalKnowledgeExpressions = externalKnowledgeExpressions; } public String getAttributeExpression() { return attributeExpression; } public void setAttributeExpression(String attributeExpression) { this.attributeExpression = attributeExpression; } public TransformationRule getTransformationRule() { return transformationRule; } public void setTransformationRule(TransformationRule transformationRule) { this.transformationRule = transformationRule; } public boolean addExpression(ExternalKnowledgeExpression expression) { return externalKnowledgeExpressions.add(expression); } public boolean removeExpression(ExternalKnowledgeExpression expression) { return externalKnowledgeExpressions.remove(expression); } public String getDefaultValue() { return defaultValue; } public void setDefaultValue(String defaultValue) { this.defaultValue = defaultValue; } @Override public ExternalKnowledgeExpressionSet save() { return (ExternalKnowledgeExpressionSet) super.save(); } @Override public ExternalKnowledgeExpressionSet remove() { return (ExternalKnowledgeExpressionSet) super.remove(); } }