package hu.sztaki.ilab.longneck.process.constraint; import hu.sztaki.ilab.longneck.process.AbstractSourceInfoContainer; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Base class for atomic constraints. * * @author Molnar Peter <molnarp@sztaki.mta.hu> */ abstract public class AbstractAtomicConstraint extends AbstractSourceInfoContainer implements AtomicConstraint, Cloneable { /** The list of fields the constraint is applied to.*/ protected List<String> applyTo; public List<String> getApplyTo() { return applyTo; } @Override public void setApplyTo(List<String> applyTo) { this.applyTo = applyTo; } public void setApplyTo(String applyTo) { // Create list by splitting List<String> initialList = Arrays.asList(applyTo.split("\\s")); // Filter empty entries List<String> filteredList = new ArrayList<String>(initialList.size()); for (String s : initialList) { if (s != null && ! "".equals(s)) { filteredList.add(s); } } // Assign filtered list this.applyTo = filteredList; } @Override public AbstractAtomicConstraint clone() { AbstractAtomicConstraint copy = (AbstractAtomicConstraint) super.clone(); if (applyTo != null) { copy.applyTo = new ArrayList<String>(applyTo.size()); copy.applyTo.addAll(applyTo); } return copy; } }