Author: oriol
Date: 2012-07-12 02:07:49 -0700 (Thu, 12 Jul 2012)
New Revision: 29855
Modified:
core3/impl/trunk/property-impl/pom.xml
core3/impl/trunk/property-impl/src/main/java/org/cytoscape/property/internal/CyActivator.java
core3/impl/trunk/property-impl/src/main/java/org/cytoscape/property/internal/bookmark/BookmarksUtilImpl.java
Log:
Modifications to allow new added bookmarks to be available in URL imports
Modified: core3/impl/trunk/property-impl/pom.xml
===================================================================
--- core3/impl/trunk/property-impl/pom.xml 2012-07-12 03:14:03 UTC (rev
29854)
+++ core3/impl/trunk/property-impl/pom.xml 2012-07-12 09:07:49 UTC (rev
29855)
@@ -80,6 +80,14 @@
<artifactId>application-api</artifactId>
</dependency>
<dependency>
+ <groupId>org.cytoscape</groupId>
+ <artifactId>datasource-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.cytoscape</groupId>
+ <artifactId>service-api</artifactId>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
Modified:
core3/impl/trunk/property-impl/src/main/java/org/cytoscape/property/internal/CyActivator.java
===================================================================
---
core3/impl/trunk/property-impl/src/main/java/org/cytoscape/property/internal/CyActivator.java
2012-07-12 03:14:03 UTC (rev 29854)
+++
core3/impl/trunk/property-impl/src/main/java/org/cytoscape/property/internal/CyActivator.java
2012-07-12 09:07:49 UTC (rev 29855)
@@ -9,6 +9,7 @@
import org.cytoscape.property.internal.bookmark.BookmarkReader;
import org.cytoscape.property.internal.bookmark.BookmarksUtilImpl;
import org.cytoscape.service.util.AbstractCyActivator;
+import org.cytoscape.service.util.CyServiceRegistrar;
import org.osgi.framework.BundleContext;
@@ -18,9 +19,11 @@
}
public void start(BundleContext bc) {
+ CyServiceRegistrar cyServiceRegistrarRef = getService(bc,
CyServiceRegistrar.class);
BookmarkReader bookmarksReader = new
BookmarkReader("bookmarks","bookmarks.xml");
- BookmarksUtilImpl bookmarksUtil = new BookmarksUtilImpl();
+ BookmarksUtilImpl bookmarksUtil = new BookmarksUtilImpl(
cyServiceRegistrarRef);
+
Properties bookmarksReaderProps = new Properties();
bookmarksReaderProps.setProperty("cyPropertyName","bookmarks");
registerService(bc,bookmarksReader,CyProperty.class,
bookmarksReaderProps);
Modified:
core3/impl/trunk/property-impl/src/main/java/org/cytoscape/property/internal/bookmark/BookmarksUtilImpl.java
===================================================================
---
core3/impl/trunk/property-impl/src/main/java/org/cytoscape/property/internal/bookmark/BookmarksUtilImpl.java
2012-07-12 03:14:03 UTC (rev 29854)
+++
core3/impl/trunk/property-impl/src/main/java/org/cytoscape/property/internal/bookmark/BookmarksUtilImpl.java
2012-07-12 09:07:49 UTC (rev 29855)
@@ -34,8 +34,13 @@
*/
package org.cytoscape.property.internal.bookmark;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Properties;
import org.cytoscape.property.bookmark.Attribute;
import org.cytoscape.property.bookmark.Bookmarks;
@@ -43,6 +48,14 @@
import org.cytoscape.property.bookmark.Category;
import org.cytoscape.property.bookmark.DataSource;
+import org.cytoscape.service.util.CyServiceRegistrar;
+import org.cytoscape.io.DataCategory;
+import org.cytoscape.io.datasource.DefaultDataSource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+
/**
* Utility methods for getting entries in the bookmark object.
*
@@ -50,6 +63,18 @@
*
*/
public class BookmarksUtilImpl implements BookmarksUtil {
+
+ //Map to keep information of new bookmarks converted to DataSource for
dataSourceManager
+ private Map<DataSource, org.cytoscape.io.datasource.DataSource>
dataSourceMap;
+ private static final Logger logger =
LoggerFactory.getLogger(BookmarksUtilImpl.class);
+ private CyServiceRegistrar register;
+
+ public BookmarksUtilImpl( final CyServiceRegistrar register){
+
+ this.register =register;
+ this.dataSourceMap = new HashMap<DataSource,
org.cytoscape.io.datasource.DataSource>();
+
+ }
/*
* (non-Javadoc)
*
@@ -179,8 +204,47 @@
List<Object> theObjList = theCategory.getCategoryOrDataSource();
theObjList.add(pDataSource);
+
+ org.cytoscape.io.datasource.DataSource data =
convertToDataSource(pBookmarks,pCategoryName,pDataSource);
+
+ if(data != null && !dataSourceMap.containsKey(pDataSource))
+ {
+
+ register.registerService(data,
org.cytoscape.io.datasource.DataSource.class, new Properties());
+ dataSourceMap.put(pDataSource, data);
+ }
+
}
+
+ public org.cytoscape.io.datasource.DataSource
convertToDataSource(Bookmarks pBookmarks,
+ String pCategoryName,DataSource pDataSource){
+
+ final String location = pDataSource.getHref();
+ final String name = pDataSource.getName();
+ final String description = "From Bookmarks";
+ final String provider = "Example";
+ DataCategory dataType;
+ URL url = null;
+
+ if(pCategoryName == "network")
+ {
+ dataType = DataCategory.NETWORK;
+ }else if(pCategoryName == "table"){
+ dataType = DataCategory.TABLE;
+ }else {
+ return null;
+ }
+
+ try {
+ url = new URL(location);
+ } catch (MalformedURLException e) {
+ logger.warn("Bookmark file coniatin invalid URL: " +
location);
+ return null;
+ }
+ return (new DefaultDataSource(name, provider,description,
dataType, url));
+ }
+
/*
* (non-Javadoc)
*
@@ -191,6 +255,7 @@
*/
public boolean deleteBookmark(Bookmarks pBookmarks, String
pCategoryName,
DataSource pDataSource) {
+ org.cytoscape.io.datasource.DataSource data = null ;
if (!containsBookmarks(pBookmarks, pCategoryName, pDataSource))
{
return false;
}
@@ -208,6 +273,13 @@
if (theDataSource.getName().equalsIgnoreCase(
pDataSource.getName())) {
+
+
if(dataSourceMap.containsKey(pDataSource))
+ {
+
+
register.unregisterService(dataSourceMap.get(pDataSource),
org.cytoscape.io.datasource.DataSource.class);
+
dataSourceMap.remove(pDataSource);
+ }
theObjList.remove(i);
}
}
--
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.