- EBIFetchClient ebi = new EBIFetchClient();
- String query = "pdb:" + pdbentry.getId();
- pdbentry.setFile(ebi.fetchDataAsFile(query, "default", "raw")
- .getAbsolutePath());
- initJmol("load "+pdbentry.getFile());
- }
- catch (Exception ex)
+ String[] curfiles = jmb.getPdbFile(); // files currently in viewer
+ // TODO: replace with reference fetching/transfer code (validate PDBentry
+ // as a DBRef?)
+ jalview.ws.dbsources.Pdb pdbclient = new jalview.ws.dbsources.Pdb();
+ for (int pi = 0; pi < jmb.pdbentry.length; pi++)
+ {
+ String file = jmb.pdbentry[pi].getFile();
+ if (file == null)
+ {
+ // retrieve the pdb and store it locally
+ AlignmentI pdbseq = null;
+ pdbid = jmb.pdbentry[pi].getId();
+ long hdl = pdbid.hashCode() - System.currentTimeMillis();
+ if (progressBar != null)
+ {
+ progressBar.setProgressBar("Fetching PDB " + pdbid, hdl);
+ }
+ try
+ {
+ pdbseq = pdbclient.getSequenceRecords(pdbid = jmb.pdbentry[pi]
+ .getId());
+ } catch (OutOfMemoryError oomerror)
+ {
+ new OOMWarning("Retrieving PDB id " + pdbid, oomerror);
+ } catch (Exception ex)
+ {
+ ex.printStackTrace();
+ errormsgs.append("'" + pdbid + "'");
+ }
+ if (progressBar != null)
+ {
+ progressBar.setProgressBar("Finished.", hdl);
+ }
+ if (pdbseq != null)
+ {
+ // just transfer the file name from the first sequence's first
+ // PDBEntry
+ jmb.pdbentry[pi].setFile(file = ((PDBEntry) pdbseq
+ .getSequenceAt(0).getPDBId().elementAt(0)).getFile());
+ files.append(" \"" + file + "\"");
+ }
+ else
+ {
+ errormsgs.append("'" + pdbid + "' ");
+ }
+ }
+ else
+ {
+ if (curfiles != null && curfiles.length > 0)
+ {
+ addingStructures = true; // already files loaded.
+ for (int c = 0; c < curfiles.length; c++)
+ {
+ if (curfiles[c].equals(file))
+ {
+ file = null;
+ break;
+ }
+ }
+ }
+ if (file != null)
+ {
+ files.append(" \"" + file + "\"");
+ }
+ }
+ }
+ } catch (OutOfMemoryError oomerror)
+ {
+ new OOMWarning("Retrieving PDB files: " + pdbid, oomerror);
+ } catch (Exception ex)