package org.nextprot.api.web.domain; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class PepXResponse { private Map<String, Object> params = new HashMap<>(); private List<PepXMatch> peptideMatches = new ArrayList<PepXMatch>(); public Map<String, Object> getParams() { return params; } public void setParams(Map<String, Object> params) { this.params = params; } public List<PepXMatch> getPeptideMatches() { return peptideMatches; } public void setPeptideMatches(List<PepXMatch> peptideMatches) { this.peptideMatches = peptideMatches; } public PepXMatch getPeptideMatch(String peptide) { for(PepXMatch pepMatch : peptideMatches){ if(pepMatch.getPeptide().equals(peptide)) return pepMatch; } return null; } public Set<String> getEntriesNames() { Set<String> entryNames = new HashSet<>(); for(PepXMatch pepXMatch : peptideMatches){ entryNames.addAll(pepXMatch.getEntryNamesMatches()); } return entryNames; } public Set<String> getPeptidesForEntry(String entryName) { Set<String> peptides = new HashSet<>(); for(PepXMatch pep: peptideMatches){ if (pep.getEntryNamesMatches().contains(entryName)) { peptides.add(pep.getPeptide()); } } return peptides; } public static class PepXMatch { private String peptide; private List<PepXEntryMatch> entryMatches = new ArrayList<PepXEntryMatch>(); public String getPeptide() { return peptide; } public void setPeptide(String peptide) { this.peptide = peptide; } public List<PepXEntryMatch> getEntryMatches() { return entryMatches; } public void setEntryMatches(List<PepXEntryMatch> entryMatches) { this.entryMatches = entryMatches; } public List<String> getEntryNamesMatches() { List<String> entryNames = new ArrayList<>(); for(PepXEntryMatch pepxEntryMatch : entryMatches){ entryNames.add(pepxEntryMatch.getEntryName()); } return entryNames; } public PepXEntryMatch getPepxMatchesForEntry(String entryName) { for(PepXEntryMatch pepxEntryMatch : entryMatches){ if(pepxEntryMatch.getEntryName().equals(entryName)){ return pepxEntryMatch; } } return null; } } public static class PepXIsoformMatch { public PepXIsoformMatch(){}; public PepXIsoformMatch(String isoformName){ setIsoformAccession(isoformName); }; public PepXIsoformMatch(String isoformName, Integer position){ setIsoformAccession(isoformName); this.position = position; }; private String isoformAc; private Integer position = null; @Deprecated public String getIsoformName() { return isoformAc; } public String getIsoformAccession() { return isoformAc; } // Should be removed and replaced with setIsoformAccession() // but it will require change in pepx json output format // Only used by json object mapper @Deprecated public void setIsoformName(String isoformAc) { setIsoformAccession( isoformAc) ; } public void setIsoformAccession(String isoformAc) { if(!isoformAc.startsWith("NX_")){ this.isoformAc = "NX_" + isoformAc; }else this.isoformAc = isoformAc; } public Integer getPosition() { if(position != null && position == 0) { return null; // If position =0 we assume it is null (don't exist) }else return position; } public void setPosition(Integer position) { if(position == 0){ this.position = null; }else this.position = position; } } public static class PepXEntryMatch { private String entryName; private List<PepXIsoformMatch> isoforms = new ArrayList<PepXIsoformMatch>(); public String getEntryName() { return entryName; } public void setEntryName(String entryName) { this.entryName = entryName; } public List<PepXIsoformMatch> getIsoforms() { return isoforms; } public void setIsoforms(List<PepXIsoformMatch> isoforms) { this.isoforms = isoforms; } } }