package uk.org.squirm3.model.level.validators; import java.util.Collection; import uk.org.squirm3.model.Atom; import uk.org.squirm3.model.level.AtomValidator; import uk.org.squirm3.model.level.LevelMessages; import uk.org.squirm3.model.type.def.BasicType; import com.google.common.collect.Lists; public class PassMessageValidator implements AtomValidator { private Atom seed; private final Collection<Atom> innerAtoms = Lists.newArrayList(); private Atom extremity; @Override public void setup(final Collection<? extends Atom> atoms) { for (final Atom atom : atoms) { if (atom.getType() == BasicType.C) { seed = atom; continue; } if (atom.getType() == BasicType.B) { if (atom.getBonds().size() == 2) { innerAtoms.add(atom); } else { extremity = atom; } } } } @Override public String evaluate(final Collection<? extends Atom> atoms, final LevelMessages messages) { if (seed.getBonds().size() != 1 || extremity.getBonds().size() != 1) { return messages.getError(1); } for (final Atom atom : innerAtoms) { if (atom.getBonds().size() != 2) { return messages.getError(1); } } if (seed.getType() != BasicType.C || extremity.getType() != BasicType.C) { return messages.getError(2); } for (final Atom atom : innerAtoms) { if (atom.getType() != BasicType.C) { return messages.getError(2); } } return null; } }