Author: pwang
Date: 2012-08-17 16:59:52 -0700 (Fri, 17 Aug 2012)
New Revision: 30219

Modified:
   
core3/api/trunk/datasource-api/src/main/java/org/cytoscape/io/datasource/DataSourceManager.java
   
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/io/datasource/internal/DataSourceManagerImpl.java
Log:
Add three new methods to the API

Modified: 
core3/api/trunk/datasource-api/src/main/java/org/cytoscape/io/datasource/DataSourceManager.java
===================================================================
--- 
core3/api/trunk/datasource-api/src/main/java/org/cytoscape/io/datasource/DataSourceManager.java
     2012-08-17 23:01:20 UTC (rev 30218)
+++ 
core3/api/trunk/datasource-api/src/main/java/org/cytoscape/io/datasource/DataSourceManager.java
     2012-08-17 23:59:52 UTC (rev 30219)
@@ -1,7 +1,6 @@
 package org.cytoscape.io.datasource;
 
 import java.util.Collection;
-
 import org.cytoscape.io.DataCategory;
 
 /**
@@ -36,4 +35,23 @@
         * @return all data sources
         */
        Collection<DataSource> getAllDataSources();
+       
+       /**
+        * Remove a DataSource from the DataSourceManager
+        * @return true if the dataSource is removed successfully
+        */     
+       boolean deleteDataSource(DataSource pDataSource);
+
+       /**
+        * Save a DataSource to the DataSourceManager
+        * @return void
+        */             
+       void saveDataSource(DataSource pDataSource);
+
+       /**
+        * Check if a DataSource already existed in the DataSourceManager
+        * @return true if the dataSource is in the DataSourceManager
+        */             
+       boolean containsDataSource(DataSource pDataSource);
+
 }

Modified: 
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/io/datasource/internal/DataSourceManagerImpl.java
===================================================================
--- 
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/io/datasource/internal/DataSourceManagerImpl.java
      2012-08-17 23:01:20 UTC (rev 30218)
+++ 
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/io/datasource/internal/DataSourceManagerImpl.java
      2012-08-17 23:59:52 UTC (rev 30219)
@@ -5,6 +5,7 @@
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
+import java.util.Iterator;
 
 import org.cytoscape.io.DataCategory;
 import org.cytoscape.io.datasource.DataSource;
@@ -13,10 +14,10 @@
 public final class DataSourceManagerImpl implements DataSourceManager {
        
        
-       private final Map<String, DataSource> dataSourceMap;
+       private final Map<DataCategory, Map<String, DataSource>> dataSourceMap;
        
        DataSourceManagerImpl() {
-               this.dataSourceMap = new HashMap<String, DataSource>();
+               this.dataSourceMap = new HashMap<DataCategory, Map<String, 
DataSource>>();
        }
        
        /**
@@ -27,42 +28,110 @@
                if(datasource == null)
                        return;
 
-               dataSourceMap.put(datasource.getName(), datasource);
+               if (dataSourceMap.containsKey(datasource.getDataCategory())){
+                       Map<String, DataSource> map = 
dataSourceMap.get(datasource.getDataCategory());
+                       map.put(datasource.getName(), datasource);
+               }
+               else {// this DataCategory does not exist yet
+                       Map<String, DataSource> map = new HashMap<String, 
DataSource>();
+                       map.put(datasource.getName(), datasource);
+                       
+                       this.dataSourceMap.put(datasource.getDataCategory(), 
map);
+               }               
        }
        
+       
        public void removeDataSource(final DataSource datasource, Map metadata) 
{
                if(datasource == null)
                        return;
 
-               dataSourceMap.remove(datasource.getName());
+               Map<String, DataSource> map = 
this.dataSourceMap.get(datasource.getDataCategory());
+               if (map == null){
+                       return;
+               }
+               map.remove(datasource.getName());
        }
        
 
        @Override
        public Collection<DataSource> getDataSources(DataCategory category) {
+               return this.dataSourceMap.get(category).values();               
+       }
+
+       
+       @Override
+       public Collection<DataSource> getDataSources(String providerName) {
+               
                final Set<DataSource> sources = new HashSet<DataSource>();
-               for(DataSource source: dataSourceMap.values()) {
-                       if(source.getDataCategory() == category)
-                               sources.add(source);
-               }
                
+               Iterator<DataCategory> it = 
this.dataSourceMap.keySet().iterator();
+               Map<String, DataSource> map;
+               while (it.hasNext()){
+                       map = this.dataSourceMap.get(it.next());
+                       Iterator<DataSource> it_ds = map.values().iterator();
+                       while (it_ds.hasNext()){
+                               DataSource ds = it_ds.next(); 
+                               if(ds.getProvider().equals(providerName))
+                                       sources.add(ds);                        
        
+                       }
+               }               
+               
                return sources;
        }
 
        @Override
-       public Collection<DataSource> getDataSources(String providerName) {
+       public Collection<DataSource> getAllDataSources() {
+               
                final Set<DataSource> sources = new HashSet<DataSource>();
-               for(DataSource source: dataSourceMap.values()) {
-                       if(source.getProvider().equals(providerName))
-                               sources.add(source);
+               
+               Iterator<DataCategory> it = 
this.dataSourceMap.keySet().iterator();
+               while (it.hasNext()){
+                       
sources.addAll(this.dataSourceMap.get(it.next()).values());
                }
                
-               return sources;
+               return sources;         
        }
 
+       
        @Override
-       public Collection<DataSource> getAllDataSources() {
-               return dataSourceMap.values();
+       public boolean deleteDataSource(DataSource pDataSource){
+               Map<String, DataSource> map = 
this.dataSourceMap.get(pDataSource.getDataCategory());
+               if (map == null || map.get(pDataSource.getName()) == null){
+                       return false;
+               }
+               map.remove(pDataSource.getName());
+               
+               return true;
        }
 
+       
+       @Override
+       public void saveDataSource(DataSource pDataSource){
+               Map<String, DataSource> map = 
this.dataSourceMap.get(pDataSource.getDataCategory());
+               if (map == null){
+                       map = new HashMap<String, DataSource>();
+                       this.dataSourceMap.put(pDataSource.getDataCategory(), 
map);
+               }
+               map.put(pDataSource.getName(), pDataSource);
+       }
+
+       
+       @Override
+       public boolean containsDataSource(DataSource pDataSource){
+               Collection<DataSource> dataSourcesSet = 
this.getDataSources(pDataSource.getDataCategory());
+               
+               if (dataSourcesSet == null || dataSourcesSet.size() == 0){
+                       return false;
+               }
+               
+               Iterator<DataSource> it = dataSourcesSet.iterator();
+               while (it.hasNext()){
+                       DataSource ds = it.next();
+                       if 
(ds.getName().equalsIgnoreCase(pDataSource.getName())){
+                               return true;
+                       }
+               }
+               
+               return false;
+       }
 }

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to