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.
