Author: kono
Date: 2011-12-08 13:07:17 -0800 (Thu, 08 Dec 2011)
New Revision: 27741

Added:
   core3/impl/trunk/datasource-impl/
   core3/impl/trunk/datasource-impl/pom.xml
   core3/impl/trunk/datasource-impl/src/
   core3/impl/trunk/datasource-impl/src/main/
   core3/impl/trunk/datasource-impl/src/main/java/
   core3/impl/trunk/datasource-impl/src/main/java/org/
   core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/
   core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/
   
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/
   
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/CyActivator.java
   
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/DataSourceManagerImpl.java
   
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/bookmarks/
   
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/bookmarks/BookmarkDataSourceBuilder.java
   core3/impl/trunk/datasource-impl/src/main/resources/
   core3/impl/trunk/datasource-impl/src/test/
   core3/impl/trunk/datasource-impl/src/test/java/
Log:
Implementation of datasource.  This bundle provides service manager.

Added: core3/impl/trunk/datasource-impl/pom.xml
===================================================================
--- core3/impl/trunk/datasource-impl/pom.xml                            (rev 0)
+++ core3/impl/trunk/datasource-impl/pom.xml    2011-12-08 21:07:17 UTC (rev 
27741)
@@ -0,0 +1,62 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+
+       <parent>
+               <groupId>org.cytoscape</groupId>
+               <artifactId>impl-parent</artifactId>
+               <version>3.0.0-alpha8-SNAPSHOT</version>
+       </parent>
+
+
+       <modelVersion>4.0.0</modelVersion>
+       <artifactId>datasource-impl</artifactId>
+
+       <properties>
+               
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+               
<bundle.symbolicName>org.cytoscape.datasource-impl</bundle.symbolicName>
+               
<bundle.namespace>org.cytoscape.datasource.internal</bundle.namespace>
+       </properties>
+
+       <packaging>bundle</packaging>
+
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.felix</groupId>
+                               <artifactId>maven-bundle-plugin</artifactId>
+                               
<version>${maven-bundle-plugin.version}</version>
+                               <extensions>true</extensions>
+                               <configuration>
+                                       <instructions>
+                                               
<Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
+                                               
<Bundle-Version>${project.version}</Bundle-Version>
+                                               
<Export-Package>!${bundle.namespace}.*</Export-Package>
+                                               
<Private-Package>${bundle.namespace}.*</Private-Package>
+                                               
<Bundle-Activator>${bundle.namespace}.CyActivator</Bundle-Activator>
+                                       </instructions>
+                               </configuration>
+                       </plugin>
+               </plugins>
+       </build>
+
+
+       <dependencies>
+               <!-- Cytoscape Core API -->
+               <dependency>
+                       <groupId>org.cytoscape</groupId>
+                       <artifactId>datasource-api</artifactId>
+               </dependency>
+
+               <!-- Testing -->
+               <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.mockito</groupId>
+                       <artifactId>mockito-all</artifactId>
+                       <scope>test</scope>
+               </dependency>
+       </dependencies>
+</project>

Added: 
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/CyActivator.java
                           (rev 0)
+++ 
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/CyActivator.java
   2011-12-08 21:07:17 UTC (rev 27741)
@@ -0,0 +1,35 @@
+package org.cytoscape.datasource.internal;
+
+import java.util.Properties;
+import java.util.Set;
+
+import org.cytoscape.datasource.DataSource;
+import org.cytoscape.datasource.DataSourceManager;
+import org.cytoscape.datasource.internal.bookmarks.BookmarkDataSourceBuilder;
+import org.cytoscape.property.CyProperty;
+import org.cytoscape.property.bookmark.Bookmarks;
+import org.cytoscape.property.bookmark.BookmarksUtil;
+import org.cytoscape.service.util.AbstractCyActivator;
+import org.osgi.framework.BundleContext;
+
+public class CyActivator extends AbstractCyActivator {
+       public CyActivator() {
+               super();
+       }
+
+       public void start(BundleContext bc) {
+               // Import required Services
+               CyProperty<Bookmarks> bookmarkServiceRef = getService(bc, 
CyProperty.class, "(cyPropertyName=bookmarks)");
+               BookmarksUtil bookmarksUtilServiceRef = getService(bc, 
BookmarksUtil.class);
+
+               DataSourceManager dataSourceManager = new 
DataSourceManagerImpl();
+               registerService(bc, dataSourceManager, DataSourceManager.class, 
new Properties());
+               registerServiceListener(bc, dataSourceManager, "addDataSource", 
"removeDataSource", DataSource.class);
+
+               BookmarkDataSourceBuilder bkBuilder = new 
BookmarkDataSourceBuilder(bookmarkServiceRef, bookmarksUtilServiceRef);
+               final Set<DataSource> bkDataSources = 
bkBuilder.getDataSources();
+               for (final DataSource ds : bkDataSources)
+                       registerService(bc, ds, DataSource.class, new 
Properties());
+
+       }
+}
\ No newline at end of file

Added: 
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/DataSourceManagerImpl.java
===================================================================
--- 
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/DataSourceManagerImpl.java
                         (rev 0)
+++ 
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/DataSourceManagerImpl.java
 2011-12-08 21:07:17 UTC (rev 27741)
@@ -0,0 +1,68 @@
+package org.cytoscape.datasource.internal;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.cytoscape.datasource.DataSource;
+import org.cytoscape.datasource.DataSourceManager;
+import org.cytoscape.io.DataCategory;
+
+public final class DataSourceManagerImpl implements DataSourceManager {
+       
+       
+       private final Map<String, DataSource> dataSourceMap;
+       
+       DataSourceManagerImpl() {
+               this.dataSourceMap = new HashMap<String, DataSource>();
+       }
+       
+       /**
+        * Will be used by OSGi services
+        * @param datasource
+        */
+       public void addDataSource(final DataSource datasource, Map metadata) {
+               if(datasource == null)
+                       return;
+
+               dataSourceMap.put(datasource.getName(), datasource);
+       }
+       
+       public void removeDataSource(final DataSource datasource, Map metadata) 
{
+               if(datasource == null)
+                       return;
+
+               dataSourceMap.remove(datasource.getName());
+       }
+       
+
+       @Override
+       public Collection<DataSource> getDataSources(DataCategory category) {
+               final Set<DataSource> sources = new HashSet<DataSource>();
+               for(DataSource source: dataSourceMap.values()) {
+                       if(source.getDataCategory() == category)
+                               sources.add(source);
+               }
+               
+               return sources;
+       }
+
+       @Override
+       public Collection<DataSource> getDataSources(String providerName) {
+               final Set<DataSource> sources = new HashSet<DataSource>();
+               for(DataSource source: dataSourceMap.values()) {
+                       if(source.getProvider().equals(providerName))
+                               sources.add(source);
+               }
+               
+               return sources;
+       }
+
+       @Override
+       public Collection<DataSource> getAllDataSources() {
+               return dataSourceMap.values();
+       }
+
+}

Added: 
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/bookmarks/BookmarkDataSourceBuilder.java
===================================================================
--- 
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/bookmarks/BookmarkDataSourceBuilder.java
                           (rev 0)
+++ 
core3/impl/trunk/datasource-impl/src/main/java/org/cytoscape/datasource/internal/bookmarks/BookmarkDataSourceBuilder.java
   2011-12-08 21:07:17 UTC (rev 27741)
@@ -0,0 +1,83 @@
+package org.cytoscape.datasource.internal.bookmarks;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.cytoscape.datasource.DefaultDataSource;
+import org.cytoscape.io.DataCategory;
+import org.cytoscape.property.CyProperty;
+import org.cytoscape.property.bookmark.Bookmarks;
+import org.cytoscape.property.bookmark.BookmarksUtil;
+import org.cytoscape.property.bookmark.Category;
+import org.cytoscape.property.bookmark.DataSource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BookmarkDataSourceBuilder {
+
+       private static final Logger logger = 
LoggerFactory.getLogger(BookmarkDataSourceBuilder.class);
+
+       private static final Map<String, DataCategory> CONVERSION_MAP;
+
+       static {
+               CONVERSION_MAP = new HashMap<String, DataCategory>();
+               CONVERSION_MAP.put("network", DataCategory.NETWORK);
+               CONVERSION_MAP.put("table", DataCategory.TABLE);
+       }
+
+       private final Bookmarks bookMarks;
+       private final BookmarksUtil bookmarksUtil;
+
+       private final Set<org.cytoscape.datasource.DataSource> datasourceSet;
+
+       public BookmarkDataSourceBuilder(final CyProperty<Bookmarks> 
bookmarkServiceRef, final BookmarksUtil bookmarksUtil) {
+               bookMarks = bookmarkServiceRef.getProperties();
+
+               this.bookmarksUtil = bookmarksUtil;
+               datasourceSet = new 
HashSet<org.cytoscape.datasource.DataSource>();
+               buildDataSource();
+       }
+
+       public Set<org.cytoscape.datasource.DataSource> getDataSources() {
+               return this.datasourceSet;
+       }
+
+       private void buildDataSource() {
+
+               final List<Category> categoryList = bookMarks.getCategory();
+
+               for (final Category category : categoryList) {
+                       final DataCategory dataType = 
CONVERSION_MAP.get(category.getName());
+                       if (dataType == null)
+                               continue;
+
+                       final List<DataSource> theDataSourceList = bookmarksUtil
+                                       .getDataSourceList(category.getName(), 
categoryList);
+                       if (theDataSourceList != null) {
+                               for (final DataSource ds : theDataSourceList) {
+                                       final String location = ds.getHref();
+                                       final String name = ds.getName();
+                                       final String description = "From 
Bookmarks";
+                                       final String provider = "default 
bookmarks";
+                                       URL url = null;
+                                       try {
+                                               url = new URL(location);
+                                       } catch (MalformedURLException e) {
+                                               logger.warn("Bookmark file 
coniatin invalid URL: " + location);
+                                               continue;
+                                       }
+
+                                       final 
org.cytoscape.datasource.DataSource dataSource = new DefaultDataSource(name, 
provider,
+                                                       description, dataType, 
url);
+                                       datasourceSet.add(dataSource);
+                               }
+                       }
+               }
+       }
+
+}

-- 
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