package org.nextprot.api.commons.bio.variation.prot.impl.seqchange; import com.google.common.base.Preconditions; import org.nextprot.api.commons.bio.AminoAcidCode; import org.nextprot.api.commons.bio.variation.prot.seqchange.SequenceChange; abstract class Extension implements SequenceChange<AminoAcidCode> { private final int newPos; private final AminoAcidCode newAminoAcid; public Extension(int newPos, AminoAcidCode newAminoAcid) { Preconditions.checkNotNull(newAminoAcid); Preconditions.checkArgument(isPosOk(newPos)); this.newPos = newPos; this.newAminoAcid = newAminoAcid; } protected abstract boolean isPosOk(int newPos); @Override public AminoAcidCode getValue() { return newAminoAcid; } /** * @return new position of new initiation or termination site */ public int getNewPos() { return newPos; } }