X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FContactMapHolder.java;h=45c0d18773e044d9705a8eec53174c71c977a03d;hb=85299bc2db43c8b108169661ebc1c4d9b2d3d2e5;hp=a555a1795fd25d4aaea6a3e69e0057edbe661b19;hpb=8fce85002e6f6a5957dc95662c6a3d80fcce8e82;p=jalview.git diff --git a/src/jalview/datamodel/ContactMapHolder.java b/src/jalview/datamodel/ContactMapHolder.java index a555a17..45c0d18 100644 --- a/src/jalview/datamodel/ContactMapHolder.java +++ b/src/jalview/datamodel/ContactMapHolder.java @@ -3,8 +3,11 @@ package jalview.datamodel; import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import jalview.ws.datamodel.MappableContactMatrixI; + public class ContactMapHolder implements ContactMapHolderI { @@ -15,7 +18,9 @@ public class ContactMapHolder implements ContactMapHolderI { if (contactmaps != null && contactmaps.size() > 0) { - return contactmaps.values(); + // defensive copy, and return non redundant set of ContactMatrixI + // instances + return new HashSet(contactmaps.values()); } return Collections.EMPTY_LIST; } @@ -28,6 +33,14 @@ public class ContactMapHolder implements ContactMapHolderI { return null; } + if (cm instanceof MappableContactMatrixI) + { + if (_aa.sequenceRef != null) + { + return ((MappableContactMatrixI) cm) + .getMappableContactList(_aa.sequenceRef, column); + } + } // TODO: could resolve sequence position to column position here // TODO: what about for complexes - where contactMatrix may involve two or // more sequences @@ -49,9 +62,9 @@ public class ContactMapHolder implements ContactMapHolderI contactmaps.put(aa.annotationId, cm); // TODO: contact matrices could be intra or inter - more than one refseq // possible! - if (cm.hasReferenceSeq()) + if (cm instanceof MappableContactMatrixI) { - aa.setSequenceRef(cm.getReferenceSeq()); + aa.setSequenceRef(((MappableContactMatrixI) cm).getReferenceSeq()); } return aa; } @@ -72,8 +85,15 @@ public class ContactMapHolder implements ContactMapHolderI annotation.editable = false; annotation.graph = AlignmentAnnotation.CONTACT_MAP; annotation.calcId = cm.getType(); - annotation.label = cm.getAnnotLabel(); - annotation.description = cm.getAnnotDescr(); + if (annotation.label == null || "".equals(annotation.label)) + { + annotation.label = cm.getAnnotLabel(); + + } + if (annotation.description == null || "".equals(annotation.description)) + { + annotation.description = cm.getAnnotDescr(); + } contactmaps.put(annotation.annotationId, cm); } }