package org.nextprot.api.core.domain; import org.nextprot.api.commons.utils.Pair; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** * Try to be a generic specificity for annotations, antibodies and peptides * @author mpereira * */ @Deprecated public class IsoformSpecificity implements Serializable, Comparable<IsoformSpecificity>{ private static final long serialVersionUID = -6617265777393722080L; @Deprecated private String deprecatedIsoformName; private String isoformMainName; private String isoformAc; public void setIsoformAc(String isoformAc) { this.isoformAc = isoformAc; } private List<Pair<Integer, Integer>> positions; /** * * @param isoformName should be Iso 1 * @param isoformAc should be NX_Q5VYM1-1 */ public IsoformSpecificity(String isoformName, String isoformAc) { this.isoformMainName = isoformName; this.isoformAc = isoformAc; } //isoform name should be replaced with ac @Deprecated public IsoformSpecificity(String isoformName) { this.deprecatedIsoformName = isoformName; } public void setIsoformMainName(String isoformMainName) { this.isoformMainName = isoformMainName; } public String getIsoformMainName() { return isoformMainName; } public String getIsoformAc() { return isoformAc; } @Deprecated public String getIsoformName() { return deprecatedIsoformName; } @Deprecated public void setIsoformName(String isoformName) { this.deprecatedIsoformName = isoformName; } public List<Pair<Integer, Integer>> getPositions() { return positions; } public void setPositions(List<Pair<Integer, Integer>> positions) { this.positions = positions; } public void addPosition(int startPosition, int endPosition) { addPosition(Pair.create(startPosition, endPosition)); } public void addPosition(Pair<Integer, Integer> position) { if(this.positions == null) this.positions = new ArrayList<>(); this.positions.add(position); } public String toString() { StringBuffer sb = new StringBuffer(); sb.append("specificity for isoform "+ deprecatedIsoformName + ": "); boolean afterFirst = false; for (Pair<Integer,Integer> pos : positions) { if (afterFirst) sb.append(" , "); sb.append(pos.getFirst() + " -> " + pos.getSecond()); afterFirst=true; } return sb.toString(); } @Override public int compareTo(IsoformSpecificity o) { String sn1 = buildSortableNameFromMainName(this.getIsoformMainName()); String sn2 = buildSortableNameFromMainName(o.getIsoformMainName()); return sn1.compareTo(sn2); } static String buildSortableNameFromMainName(String name) { if (name==null) name=""; String sortableName = name; // by default: same as name if (name.startsWith("Iso ")) { String nb = name.substring(4); try { Integer.parseInt(nb); while (nb.length()<3) nb = "0" + nb; sortableName = "Iso "+ nb; } catch (Exception e) { } } return sortableName; } }