/** * */ package org.openntf.domino.schema.impl; import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.util.regex.Pattern; import org.openntf.domino.ext.Formula; import org.openntf.domino.schema.IDatabaseSchema; import org.openntf.domino.schema.IDominoType; import org.openntf.domino.schema.IItemDefinition; import org.openntf.domino.schema.IItemValidation; import org.openntf.domino.schema.exceptions.ItemException; public class ItemValidation implements IItemValidation, Externalizable { private boolean required_; private boolean unique_; private Formula uniqueFormula_; private Pattern expression_; private long maxValue_; private long minValue_; private int maxMembers_; private int minMembers_; private transient ItemDefinition definition_; public ItemDefinition getDefinition() { return definition_; } public void setDefinition(final ItemDefinition definition) { definition_ = definition; } public Pattern getPattern() { return expression_; } public void setRegex(final String expression) { expression_ = Pattern.compile(expression); } public boolean isRequired() { return required_; } public void setRequired(final boolean required) { required_ = required; } public boolean isUnique() { return unique_; } public void setUnique(final boolean unique) { unique_ = unique; } public Formula getUniqueFormula() { return uniqueFormula_; } public void setUniqueFormula(final Formula uniqueFormula) { uniqueFormula_ = uniqueFormula; } public long getMaxValue() { return maxValue_; } public void setMaxValue(final long maxValue) { maxValue_ = maxValue; } public long getMinValue() { return minValue_; } public void setMinValue(final long minValue) { minValue_ = minValue; } public int getMaxMembers() { return maxMembers_; } public void setMaxMembers(final int maxMembers) { maxMembers_ = maxMembers; } public int getMinMembers() { return minMembers_; } public void setMinMembers(final int minMembers) { minMembers_ = minMembers; } private Class<? extends IDominoType> getItemType() { return getDefinition().getType(); } public boolean validateItem(final org.openntf.domino.Item item) throws ItemException { boolean result = true; Class<? extends IDominoType> clazz = getItemType(); IItemDefinition definition = getDefinition(); IDatabaseSchema schema = definition.getParent(); IDominoType type = schema.getTypeDefinition(clazz); type.validateItem(item); return result; } /* * (non-Javadoc) * * @see java.io.Externalizable#readExternal(java.io.ObjectInput) */ @Override public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException { required_ = in.readBoolean(); unique_ = in.readBoolean(); maxValue_ = in.readLong(); minValue_ = in.readLong(); maxMembers_ = in.readInt(); minMembers_ = in.readInt(); uniqueFormula_ = (Formula) in.readObject(); expression_ = (Pattern) in.readObject(); } /* * (non-Javadoc) * * @see java.io.Externalizable#writeExternal(java.io.ObjectOutput) */ @Override public void writeExternal(final ObjectOutput out) throws IOException { out.writeBoolean(required_); out.writeBoolean(unique_); out.writeLong(maxValue_); out.writeLong(minValue_); out.writeInt(maxMembers_); out.writeInt(minMembers_); out.writeObject(uniqueFormula_); out.writeObject(expression_); } }