/* * BioJava development code * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. If you do not have a copy, * see: * * http://www.gnu.org/copyleft/lesser.html * * Copyright for this code is held jointly by the individual * authors. These should be listed in @author doc comments. * * For more information on the BioJava project and its aims, * or to join the biojava-l mailing list, visit the home page * at: * * http://www.biojava.org/ * * Created on Aug 2, 2010 * Author: Jianjiong Gao * */ package org.biojava.nbio.protmod.structure; import org.biojava.nbio.structure.ResidueNumber; /** * Information of a group (residue or ligand) involved in a modification. * @author Jianjiong Gao * @since 3.0 */ public class StructureGroup implements Comparable<StructureGroup> { private ResidueNumber resNum; private String pdbName; private Boolean isAminoAcid; public StructureGroup(){ resNum = new ResidueNumber(); } public StructureGroup( ResidueNumber resNum, String pdbName, boolean isAminoAcid) { this.resNum = resNum; this.pdbName = pdbName; this.isAminoAcid = isAminoAcid; } // public StructureGroup( ResidueNumber resNum, // String pdbName) { // this(resNum, pdbName, true); // } public ResidueNumber getPDBResidueNumber() { return resNum; } public void setPDBResidueNumber(ResidueNumber resNum) { this.resNum = resNum; } public String getChainId() { return resNum.getChainName(); } public void setChainId(String chainId){ if ( resNum == null) resNum = new ResidueNumber(); resNum.setChainName(chainId); } public int getResidueNumber() { return resNum.getSeqNum(); } public void setResidueNumber(int seqNr){ if ( resNum == null) resNum = new ResidueNumber(); resNum.setSeqNum(seqNr); } public Character getInsCode() { return resNum.getInsCode(); } public void setInsCode(Character c){ if ( resNum == null) resNum = new ResidueNumber(); resNum.setInsCode(c); } public String getPDBName() { return pdbName; } public void setPDBName(String pdbName){ this.pdbName = pdbName; } public void setIsAminoAcid(boolean isAminoAcid) { this.isAminoAcid = isAminoAcid; } public boolean isAminoAcid() { return isAminoAcid; } @Override public boolean equals(Object obj) { if (obj == this) return true; if (!(obj instanceof StructureGroup)) return false; StructureGroup aGroup = (StructureGroup) obj; if (!resNum.equals(aGroup.resNum)) return false; return true; } @Override public int hashCode() { int result = 17; if ( resNum != null) result = result * 31 + resNum.hashCode(); return result; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(pdbName); sb.append('\t'); sb.append(resNum.getChainName()); sb.append('\t'); sb.append(resNum.getSeqNum()); if (resNum.getInsCode() != null) sb.append(resNum.getInsCode()); sb.append('\t'); return sb.toString(); } @Override public int compareTo(StructureGroup aGroup) { int result = getChainId().compareTo(aGroup.getChainId()); if (result != 0) return result; result = getResidueNumber()-aGroup.getResidueNumber(); if (result != 0) return result; if (getInsCode()==null) { if (aGroup.getInsCode()!=null) return -1; } else { if (aGroup.getInsCode()==null) return 1; else { result = getInsCode().compareTo(aGroup.getInsCode()); if (result != 0) return result; } } return 0; } }