package org.nextprot.api.commons.bio.variation.prot.impl.varseq;
import org.nextprot.api.commons.bio.AminoAcidCode;
import org.nextprot.api.commons.bio.variation.prot.varseq.VaryingSequence;
import java.util.Objects;
/**
* This object describes protein sequence variations of many types (substitution, deletion, delins, frameshift, ...)
* Its instanciation is based on a fluent interface.
*
* See specifications at http://varnomen.hgvs.org/recommendations/protein/
*
* Created by fnikitin on 09/07/15.
*/
public class VaryingSequenceImpl implements VaryingSequence {
private final AminoAcidCode firstChangingAminoAcid;
private final int firstChangingAminoAcidPos;
private final AminoAcidCode lastChangingAminoAcid;
private final int lastChangingAminoAcidPos;
public VaryingSequenceImpl(AminoAcidCode firstChangingAminoAcid, int firstChangingAminoAcidPos, AminoAcidCode lastChangingAminoAcid, int lastChangingAminoAcidPos) {
this.firstChangingAminoAcid = firstChangingAminoAcid;
this.firstChangingAminoAcidPos = firstChangingAminoAcidPos;
this.lastChangingAminoAcid = lastChangingAminoAcid;
this.lastChangingAminoAcidPos = lastChangingAminoAcidPos;
}
public AminoAcidCode getFirstAminoAcid() {
return firstChangingAminoAcid;
}
public int getFirstAminoAcidPos() {
return firstChangingAminoAcidPos;
}
public AminoAcidCode getLastAminoAcid() {
return lastChangingAminoAcid;
}
public int getLastAminoAcidPos() {
return lastChangingAminoAcidPos;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof VaryingSequenceImpl)) return false;
VaryingSequenceImpl that = (VaryingSequenceImpl) o;
return firstChangingAminoAcidPos == that.firstChangingAminoAcidPos &&
lastChangingAminoAcidPos == that.lastChangingAminoAcidPos &&
firstChangingAminoAcid == that.firstChangingAminoAcid &&
lastChangingAminoAcid == that.lastChangingAminoAcid;
}
@Override
public int hashCode() {
return Objects.hash(firstChangingAminoAcid, firstChangingAminoAcidPos, lastChangingAminoAcid, lastChangingAminoAcidPos);
}
@Override
public String toString() {
return "ChangingSequenceImpl{" +
"firstChangingAminoAcid=" + firstChangingAminoAcid +
", firstChangingAminoAcidPos=" + firstChangingAminoAcidPos +
", lastChangingAminoAcid=" + lastChangingAminoAcid +
", lastChangingAminoAcidPos=" + lastChangingAminoAcidPos +
'}';
}
}