X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fstructures%2Fmodels%2FAAStructureBindingModel.java;fp=src%2Fjalview%2Fstructures%2Fmodels%2FAAStructureBindingModel.java;h=b9dc58d0ad9e76b7ebf58270be8a52d2ad1fd8b2;hb=dcbbfa95b35e8316628a92ce3c2ba31c555d3faa;hp=252828601a738b6ebe153b142f60d438cf2b3e7c;hpb=6b88cfe942593f7ab1c5c90b99aa3a3e315c94bc;p=jalview.git diff --git a/src/jalview/structures/models/AAStructureBindingModel.java b/src/jalview/structures/models/AAStructureBindingModel.java index 2528286..b9dc58d 100644 --- a/src/jalview/structures/models/AAStructureBindingModel.java +++ b/src/jalview/structures/models/AAStructureBindingModel.java @@ -72,9 +72,9 @@ public abstract class AAStructureBindingModel private SequenceI[][] sequence; /* - * array of target chains for sequences - tied to pdbentry and sequence[] + * array of list of target chains for sequences - tied to pdbentry and sequence[] */ - private String[][] chains; + private List[][] chains; /* * datasource protocol for access to PDBEntrylatest @@ -164,20 +164,26 @@ public abstract class AAStructureBindingModel int chainmaps = 0; // JBPNote: JAL-2693 - this should be a list of chain mappings per // [pdbentry][sequence] - String[][] newchains = new String[pdbEntry.length][]; + List[][] newchains = new List[pdbEntry.length][]; int pe = 0; for (PDBEntry pdb : pdbEntry) { SequenceI[] seqsForPdb = sequence[pe]; if (seqsForPdb != null) { - newchains[pe] = new String[seqsForPdb.length]; + newchains[pe] = new List[seqsForPdb.length]; int se = 0; for (SequenceI asq : seqsForPdb) { - String chain = (chains != null && chains[pe] != null) + List chain = (chains != null && chains[pe] != null) ? chains[pe][se] : null; + if (chain == null) + { + chain = new ArrayList<>(); + } + newchains[pe][se] = chain; + SequenceI sq = (asq.getDatasetSequence() == null) ? asq : asq.getDatasetSequence(); if (sq.getAllPDBEntries() != null) @@ -190,14 +196,12 @@ public abstract class AAStructureBindingModel String chaincode = pdbentry.getChainCode(); if (chaincode != null && chaincode.length() > 0) { - chain = chaincode; + newchains[pe][se].add(chaincode); chainmaps++; - break; } } } } - newchains[pe][se] = chain; se++; } pe++; @@ -259,7 +263,7 @@ public abstract class AAStructureBindingModel return sequence; } - public String[][] getChains() + public List[][] getChains() { return chains; } @@ -280,7 +284,7 @@ public abstract class AAStructureBindingModel this.sequence = sequence; } - protected void setChains(String[][] chains) + protected void setChains(List[][] chains) { this.chains = chains; } @@ -354,12 +358,11 @@ public abstract class AAStructureBindingModel new Object[] { Integer.valueOf(pe).toString() })); } - final String nullChain = "TheNullChain"; - List s = new ArrayList(); - List c = new ArrayList(); + List s = new ArrayList<>(); + List> c = new ArrayList<>(); if (getChains() == null) { - setChains(new String[getPdbCount()][]); + setChains(new List[getPdbCount()][]); } if (getSequence()[pe] != null) { @@ -374,14 +377,14 @@ public abstract class AAStructureBindingModel } else { - c.add(nullChain); + c.add(new ArrayList()); } } else { if (tchain != null && tchain.length > 0) { - c.add(nullChain); + c.add(new ArrayList()); } } } @@ -393,7 +396,12 @@ public abstract class AAStructureBindingModel s.add(seq[i]); if (tchain != null && i < tchain.length) { - c.add(tchain[i] == null ? nullChain : tchain[i]); + List clist = new ArrayList(); + c.add(clist); + if (tchain[i] != null) + { + clist.add(tchain[i]); + } } } } @@ -401,14 +409,7 @@ public abstract class AAStructureBindingModel getSequence()[pe] = tmp; if (c.size() > 0) { - String[] tch = c.toArray(new String[c.size()]); - for (int i = 0; i < tch.length; i++) - { - if (tch[i] == nullChain) - { - tch[i] = null; - } - } + List[] tch = c.toArray(new List[c.size()]); getChains()[pe] = tch; } else @@ -425,8 +426,8 @@ public abstract class AAStructureBindingModel public synchronized PDBEntry[] addSequenceAndChain(PDBEntry[] pdbe, SequenceI[][] seq, String[][] chns) { - List v = new ArrayList(); - List rtn = new ArrayList(); + List v = new ArrayList<>(); + List rtn = new ArrayList<>(); for (int i = 0; i < getPdbCount(); i++) { v.add(getPdbEntry(i)); @@ -451,7 +452,7 @@ public abstract class AAStructureBindingModel { // expand the tied sequence[] and string[] arrays SequenceI[][] sqs = new SequenceI[getPdbCount()][]; - String[][] sch = new String[getPdbCount()][]; + List[][] sch = new List[getPdbCount()][]; System.arraycopy(getSequence(), 0, sqs, 0, getSequence().length); System.arraycopy(getChains(), 0, sch, 0, this.getChains().length); setSequence(sqs);