Show
Ignore:
Timestamp:
08/19/09 05:53:32 (3 years ago)
Author:
jgao
Message:

IDMapperBiomart refactor to clean the interface

Location:
trunk/corelib/src/org/bridgedb/webservice/biomart/util
Files:
1 added
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/corelib/src/org/bridgedb/webservice/biomart/util/BiomartClient.java

    r156 r161  
    1616// 
    1717 
    18 package org.bridgedb.webservice.biomart; 
     18package org.bridgedb.webservice.biomart.util; 
    1919 
    2020import java.io.BufferedReader; 
     
    3030import java.util.HashMap; 
    3131import java.util.Map; 
    32 import java.util.Vector; 
    3332 
    3433import javax.xml.parsers.DocumentBuilder; 
     
    4544 * BioMart service class, adapted from BioMart client in Cytoscape. 
    4645 */ 
    47 public final class BiomartStub { 
     46public final class BiomartClient { 
    4847    public static final String defaultBaseURL = "http://www.biomart.org/biomart/martservice"; 
    4948     
    5049    private final String baseURL; 
    51     private static final String RESOURCE = "/org/bridgedb/webservice/biomart/filterconversion.txt"; 
     50    private static final String RESOURCE = "/org/bridgedb/webservice/biomart/util/filterconversion.txt"; 
    5251 
    5352    //private Map<String, Map<String, String>> databases = null; 
    54     private Map<String, Database> databases = null; 
     53    private Map<String, Database> marts = null; 
    5554 
    5655    private Map<String, Dataset> datasets = new HashMap(); 
    57     private Map<String, Vector<Dataset>> mapDbDss = new HashMap(); 
     56    private Map<String, Map<String,Dataset>> mapDbDss = new HashMap(); 
    5857    private Map<String, Map<String, Filter>> mapDsFilters = new HashMap(); 
    5958    private Map<String, Map<String, Attribute>> mapDsAttrs = new HashMap(); 
     
    6261 
    6362    private static final int BUFFER_SIZE = 81920; 
    64  
    65     // one instance per base url 
    66     private static Map<String, BiomartStub> instances = new HashMap(); 
    67  
    68     /** 
    69      * Get a BioMartStub with the default base URL. 
    70      * @return BiomartStub 
    71      * @throws IOException if failed to read local resource 
    72      */ 
    73     public static BiomartStub getInstance() throws IOException { 
    74         return getInstance(defaultBaseURL); 
    75     } 
    76  
    77     /** 
    78      * Get a BioMartStub with the base URL. 
    79      * @param baseURL base URL of BioMart 
    80      * @return BioMartStub 
    81      * @throws IOException if failed to read local resource 
    82      */ 
    83     public static BiomartStub getInstance(String baseURL) throws IOException { 
    84         if (baseURL==null) { 
    85             throw new IllegalArgumentException("base url cannot be null"); 
    86         } 
    87  
    88         BiomartStub instance = instances.get(baseURL); 
    89         if (instance==null) { 
    90             instance = new BiomartStub(baseURL); 
    91             instances.put(baseURL, instance); 
    92         } 
    93  
    94         return instance; 
    95    } 
    96  
    9763 
    9864    /** 
     
    10268     * @throws IOException if failed to read local resource 
    10369     */ 
    104     private BiomartStub(String baseURL) throws IOException { 
     70    public BiomartClient(String baseURL) throws IOException { 
    10571        this.baseURL = baseURL + "?"; 
    10672        loadConversionFile(); 
     
    149115     * @return converted attribute 
    150116     */ 
    151     public Attribute filterToAttributeName(String dsName, String dbName, 
     117    private Attribute filterToAttribute(String dsName, String dbName, 
    152118                String filterID) { 
    153119        if (filterConversionMap.get(dbName) == null) { 
     
    160126 
    161127    /** 
     128     * 
     129     * @param dataset 
     130     * @param filter 
     131     * @return 
     132     */ 
     133    public Attribute filterToAttribute(String dataset, String filter) { 
     134        Attribute attr; 
     135        if (dataset.contains("REACTOME")) { 
     136            attr = filterToAttribute(dataset, "REACTOME", filter); 
     137        } else if (dataset.contains("UNIPROT")) { 
     138            attr = filterToAttribute(dataset, "UNIPROT", filter); 
     139        } else if (dataset.contains("VARIATION")) { 
     140            attr = getAttribute(dataset, filter + "_stable_id"); 
     141        } else { 
     142            attr = getAttribute(dataset, filter); 
     143        } 
     144 
     145        return attr; 
     146    } 
     147 
     148    /** 
    162149     *  Get the registry information from the base URL. 
    163150     * 
     
    170157            throws IOException, ParserConfigurationException, SAXException { 
    171158        // If already loaded, just return it. 
    172         if (databases != null) 
    173             return databases; 
     159        if (marts != null) 
     160            return marts; 
    174161 
    175162        // Initialize database map. 
    176         databases = new HashMap<String, Database>(); 
     163        marts = new HashMap<String, Database>(); 
    177164 
    178165        // Prepare URL for the registry status 
     
    208195            } 
    209196 
    210             databases.put(dbID, new Database(dbID,entry)); 
     197            marts.put(dbID, new Database(dbID,entry)); 
    211198        } 
    212199 
     
    214201        is = null; 
    215202 
    216         return databases; 
     203        return marts; 
    217204    } 
    218205 
     
    223210     * @throws IOException if failed to read 
    224211     */ 
    225     public Vector<Dataset> getAvailableDatasets(final String martName) 
     212    public Map<String, Dataset> getAvailableDatasets(final String martName) 
    226213            throws IOException { 
    227         Vector<Dataset> result = mapDbDss.get(martName); 
     214        Map<String, Dataset> result = mapDbDss.get(martName); 
    228215        if (result!=null) { 
    229216            return result; 
     
    239226 
    240227        //final Map<String, String> datasources = new HashMap<String, String>(); 
    241         result = new Vector(); 
    242  
    243         Database database = databases.get(martName); 
     228        result = new HashMap(); 
     229 
     230        Database database = marts.get(martName); 
    244231 
    245232        if (database==null) { 
     
    266253            if ((parts.length > 4) && parts[3].equals("1")) { 
    267254                Dataset dataset = new Dataset(parts[1], parts[2], database); 
    268                 result.add(dataset); 
     255                result.put(dataset.getName(),dataset); 
    269256                //datasourceMap.put(parts[1], martName); 
    270257                datasets.put(parts[1], dataset); 
     
    498485     * @return database 
    499486     */ 
    500     public Database getDatabase(final String dbname) { 
    501         return databases.get(dbname); 
     487    public Database getMart(final String dbname) { 
     488        return marts.get(dbname); 
    502489    } 
    503490