- String file = jmb.getPdbEntry(pi).getFile();
- if (file == null)
- {
- // todo: extract block as method and pull up (also ChimeraViewFrame)
- // retrieve the pdb and store it locally
- AlignmentI pdbseq = null;
- pdbid = jmb.getPdbEntry(pi).getId();
- long hdl = pdbid.hashCode() - System.currentTimeMillis();
- setProgressMessage(MessageManager
- .formatMessage("status.fetching_pdb", new String[]
- { pdbid }), hdl);
- try
- {
- pdbseq = pdbclient.getSequenceRecords(pdbid);
- } catch (OutOfMemoryError oomerror)
- {
- new OOMWarning("Retrieving PDB id " + pdbid, oomerror);
- } catch (Exception ex)
- {
- ex.printStackTrace();
- errormsgs.append("'").append(pdbid).append("'");
- } finally
- {
- setProgressMessage(
- MessageManager.getString("label.state_completed"), hdl);
- }
- if (pdbseq != null)
- {
- // just transfer the file name from the first sequence's first
- // PDBEntry
- file = new File(pdbseq.getSequenceAt(0).getAllPDBEntries()
- .elementAt(0).getFile()).getAbsolutePath();
- jmb.getPdbEntry(pi).setFile(file);
- files.add(file);
- }
- else
- {
- errormsgs.append("'").append(pdbid).append("' ");
- }
- }
- else
- {
- if (filesInViewer != null && filesInViewer.length > 0)
- {
- addingStructures = true; // already files loaded.
- for (int c = 0; c < filesInViewer.length; c++)
- {
- if (Platform.pathEquals(filesInViewer[c], file))
- {
- file = null;
- break;
- }
- }
- }
- if (file != null)
- {
- files.add(file);
- }
- }