- if (pe < 0 || pe >= pdbentry.length)
- {
- throw new Error(MessageManager.formatMessage(
- "error.implementation_error_no_pdbentry_from_index",
- new Object[]
- { Integer.valueOf(pe).toString() }));
- }
- final String nullChain = "TheNullChain";
- List<SequenceI> s = new ArrayList<SequenceI>();
- List<String> c = new ArrayList<String>();
- if (chains == null)
- {
- chains = new String[pdbentry.length][];
- }
- if (sequence[pe] != null)
- {
- for (int i = 0; i < sequence[pe].length; i++)
- {
- s.add(sequence[pe][i]);
- if (chains[pe] != null)
- {
- if (i < chains[pe].length)
- {
- c.add(chains[pe][i]);
- }
- else
- {
- c.add(nullChain);
- }
- }
- else
- {
- if (tchain != null && tchain.length > 0)
- {
- c.add(nullChain);
- }
- }
- }
- }
- for (int i = 0; i < seq.length; i++)
- {
- if (!s.contains(seq[i]))
- {
- s.add(seq[i]);
- if (tchain != null && i < tchain.length)
- {
- c.add(tchain[i] == null ? nullChain : tchain[i]);
- }
- }
- }
- SequenceI[] tmp = s.toArray(new SequenceI[s.size()]);
- sequence[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;
- }
- }
- chains[pe] = tch;
- }
- else
- {
- chains[pe] = null;
- }