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.