X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fsifts%2FSiftsClient.java;fp=src%2Fjalview%2Fws%2Fsifts%2FSiftsClient.java;h=6c11dd29af024984b2a5fb809b73758aa52c5887;hb=408b2821c8daf99245bf6358d06760701d90ddd8;hp=e04bbb7b3a80dc4c6c25265e72208091a8c1cb89;hpb=f8e603128476ca6e093ea2fc65435d1294978c53;p=jalview.git diff --git a/src/jalview/ws/sifts/SiftsClient.java b/src/jalview/ws/sifts/SiftsClient.java index e04bbb7..6c11dd2 100644 --- a/src/jalview/ws/sifts/SiftsClient.java +++ b/src/jalview/ws/sifts/SiftsClient.java @@ -96,11 +96,9 @@ public class SiftsClient implements SiftsClientI private static final int PDB_ATOM_POS = 1; - private static final String NOT_FOUND = "Not_Found"; - private static final String NOT_OBSERVED = "Not_Observed"; - private static final String SIFTS_FTP_BASE_URL = "ftp://ftp.ebi.ac.uk/pub/databases/msd/sifts/xml/"; + private static final String SIFTS_FTP_BASE_URL = "http://ftp.ebi.ac.uk/pub/databases/msd/sifts/xml/"; private final static String NEWLINE = System.lineSeparator(); @@ -225,8 +223,9 @@ public class SiftsClient implements SiftsClientI */ public static File getSiftsFile(String pdbId) throws SiftsException { - File siftsFile = new File(SiftsSettings.getSiftDownloadDirectory() - + pdbId.toLowerCase() + ".xml.gz"); + String siftsFileName = SiftsSettings.getSiftDownloadDirectory() + + pdbId.toLowerCase() + ".xml.gz"; + File siftsFile = new File(siftsFileName); if (siftsFile.exists()) { // The line below is required for unit testing... don't comment it out!!! @@ -235,12 +234,28 @@ public class SiftsClient implements SiftsClientI if (isFileOlderThanThreshold(siftsFile, SiftsSettings.getCacheThresholdInDays())) { - // System.out.println("Downloaded file is out of date, hence re-downloading..."); - siftsFile = downloadSiftsFile(pdbId.toLowerCase()); + File oldSiftsFile = new File(siftsFileName + "_old"); + siftsFile.renameTo(oldSiftsFile); + try + { + siftsFile = downloadSiftsFile(pdbId.toLowerCase()); + oldSiftsFile.delete(); + return siftsFile; + } catch (IOException e) + { + e.printStackTrace(); + oldSiftsFile.renameTo(siftsFile); + return new File(siftsFileName); + } } - return siftsFile; } - siftsFile = downloadSiftsFile(pdbId.toLowerCase()); + try + { + siftsFile = downloadSiftsFile(pdbId.toLowerCase()); + } catch (IOException e) + { + throw new SiftsException(e.getMessage()); + } return siftsFile; } @@ -278,8 +293,10 @@ public class SiftsClient implements SiftsClientI * @param pdbId * @return downloaded SIFTs XML file * @throws SiftsException + * @throws IOException */ - public static File downloadSiftsFile(String pdbId) throws SiftsException + public static File downloadSiftsFile(String pdbId) throws SiftsException, + IOException { if (pdbId.contains(".cif")) { @@ -295,8 +312,6 @@ public class SiftsClient implements SiftsClientI { siftsDownloadDir.mkdirs(); } - try - { // System.out.println(">> Download ftp url : " + siftsFileFTPURL); URL url = new URL(siftsFileFTPURL); URLConnection conn = url.openConnection(); @@ -312,10 +327,6 @@ public class SiftsClient implements SiftsClientI outputStream.close(); inputStream.close(); // System.out.println(">>> File downloaded : " + downloadedSiftsFile); - } catch (IOException ex) - { - throw new SiftsException(ex.getMessage()); - } return new File(downloadedSiftsFile); } @@ -360,7 +371,8 @@ public class SiftsClient implements SiftsClientI DBRefEntry[] dbRefs = seq.getDBRefs(); if (dbRefs == null || dbRefs.length < 1) { - throw new SiftsException("Could not get source DB Ref"); + throw new SiftsException( + "Source DBRef could not be determined. DBRefs might not have been retrieved."); } for (DBRefEntryI dbRef : dbRefs) @@ -374,6 +386,7 @@ public class SiftsClient implements SiftsClientI && (dbRef.getSource().equalsIgnoreCase(DBRefSource.UNIPROT) || dbRef .getSource().equalsIgnoreCase(DBRefSource.PDB))) { + seq.setSourceDBRef(dbRef); return dbRef; } } @@ -413,7 +426,8 @@ public class SiftsClient implements SiftsClientI .getMapRegion(); for (MapRegion mapRegion : mapRegions) { - accessions.add(mapRegion.getDb().getDbAccessionId()); + accessions + .add(mapRegion.getDb().getDbAccessionId().toLowerCase()); } } } @@ -464,12 +478,9 @@ public class SiftsClient implements SiftsClientI jalview.util.Comparison.GapChars, seq.getSequenceAsString()); HashMap mapping = new HashMap(); DBRefEntryI sourceDBRef = seq.getSourceDBRef(); - if (sourceDBRef == null) - { - sourceDBRef = getValidSourceDBRef(seq); - // TODO ensure sequence start/end is in the same coordinate system and - // consistent with the choosen sourceDBRef - } + sourceDBRef = getValidSourceDBRef(seq); + // TODO ensure sequence start/end is in the same coordinate system and + // consistent with the choosen sourceDBRef // set sequence coordinate system - default value is UniProt if (sourceDBRef.getSource().equalsIgnoreCase(DBRefSource.PDB)) @@ -752,8 +763,9 @@ public class SiftsClient implements SiftsClientI private boolean isFoundInSiftsEntry(String accessionId) { + HashSet siftsDBRefs = getAllMappingAccession(); return accessionId != null - && getAllMappingAccession().contains(accessionId); + && siftsDBRefs.contains(accessionId.toLowerCase()); } /**