StateMetaData.java
package com.tradecloud.domain.configuration;
import com.tradecloud.common.base.PersistenceBase;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.MappedSuperclass;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import java.io.Serializable;
/**
* Superclass for state meta-data.
* <p>
* The meta-data in this entity is used by the system to determine (for each client)
* how each state is used (or not used).
*
* @see LineItemStateMetaData
* @see OrderStateMetaData
*/
@MappedSuperclass
@XmlAccessorType(XmlAccessType.FIELD)
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class StateMetaData<X extends Enum<?>> extends PersistenceBase implements Serializable {
private static final long serialVersionUID = 1L;
@XmlAttribute
@NotNull
private boolean inUse;
@XmlAttribute
@NotNull
private boolean editable;
public StateMetaData() {
}
// Mostly for testing
public StateMetaData(boolean inUse) {
this.inUse = inUse;
}
public boolean isInUse() {
return inUse;
}
public void setInUse(boolean inUse) {
this.inUse = inUse;
}
public boolean isEditable() {
return editable;
}
public void setEditable(boolean editable) {
this.editable = editable;
}
public abstract X getState();
public abstract void setState(X state);
}