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.

Reply via email to