Author: kono
Date: 2011-12-13 13:53:34 -0800 (Tue, 13 Dec 2011)
New Revision: 27781

Modified:
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/loadnetwork/LoadNetworkFileTask.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/loadnetwork/LoadNetworkFileTaskFactoryImpl.java
   core3/impl/trunk/property-impl/src/main/resources/bookmarks.xml
   
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/data_mapper/MapPsiTwoFiveToInteractions.java
   
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewReader.java
   
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewTaskFactory.java
   
core3/impl/trunk/psi-mi-impl/src/test/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewReaderTest.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/WelcomeScreenAction.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/welcomescreen/CreateNewNetworkPanel.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/welcomescreen/WelcomeScreenDialog.java
   
core3/impl/trunk/work-swing-impl/impl/src/main/java/org/cytoscape/work/internal/task/SwingTaskMonitor.java
Log:
fixes #532 Now this reader can read HPRD PSI-MI files.  Also, minot bugs had 
been fixed in the PSI-MI reader.

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/loadnetwork/LoadNetworkFileTask.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/loadnetwork/LoadNetworkFileTask.java
      2011-12-13 18:19:41 UTC (rev 27780)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/loadnetwork/LoadNetworkFileTask.java
      2011-12-13 21:53:34 UTC (rev 27781)
@@ -69,7 +69,6 @@
                        throw new NullPointerException("Failed to find 
appropriate reader for file: " + file);
 
                uri = file.toURI();
-               
                name = file.getName();
 
                loadNetwork(reader);

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/loadnetwork/LoadNetworkFileTaskFactoryImpl.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/loadnetwork/LoadNetworkFileTaskFactoryImpl.java
   2011-12-13 18:19:41 UTC (rev 27780)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/loadnetwork/LoadNetworkFileTaskFactoryImpl.java
   2011-12-13 21:53:34 UTC (rev 27781)
@@ -65,6 +65,7 @@
        }
        
        public TaskIterator createTaskIterator() {
-               return new TaskIterator(new LoadNetworkFileTask(mgr, netmgr, 
networkViewManager, props, cyNetworkNaming));
+               // Load, visualize, and layout.
+               return new TaskIterator(3, new LoadNetworkFileTask(mgr, netmgr, 
networkViewManager, props, cyNetworkNaming));
        }
 }

Modified: core3/impl/trunk/property-impl/src/main/resources/bookmarks.xml
===================================================================
--- core3/impl/trunk/property-impl/src/main/resources/bookmarks.xml     
2011-12-13 18:19:41 UTC (rev 27780)
+++ core3/impl/trunk/property-impl/src/main/resources/bookmarks.xml     
2011-12-13 21:53:34 UTC (rev 27781)
@@ -337,24 +337,18 @@
                </category>
        </category>
        <category name="network">
-               <dataSource name="Yeast Protein-Protein: Ideker, T. et al. 
(galFiltered.sif)"
-                       
xlink:href="http://chianti.ucsd.edu/kono/data/galFiltered.sif";
+               <dataSource name="Yeast Protein-Protein: Ideker, T. et al. (362 
Interactions, galFiltered.sif)"
+                       
xlink:href="http://www.cytoscape.org/datasets/galFiltered.sif";
                        format="sif" />
-               <dataSource name="Human Protein-Protein: HPRD Literature 
Curated Interactions"
-                       xlink:href="http://cytoscape.org/datasets/HPRD.sif";
-                       format="sif" />
+               <dataSource name="Human Protein-Protein: HPRD (62226 
Interactions w/annotations, Rev. 4/12/2010)"
+                       
xlink:href="http://www.cytoscape.org/datasets/HPRD_SINGLE_PSIMI_041210.xml";
+                       format="psimi25" />
                <dataSource name="Human Protein-Protein: Rual et al. Toward a 
proteome-scale map of the human protein-protein interaction network. Nature 
2005."
                        xlink:href="http://cytoscape.org/datasets/rual.sif";
                        format="sif" />
                <dataSource name="Human Protein-Protein: Rual et al. 
(Subnetwork for tutorial)"
                        
xlink:href="http://www.cytoscape.org/tut/getting.started/RUAL.subset.sif";
                        format="sif" />
-               <dataSource name="Human Protein-Protein: Stelzl et al. A human 
protein-protein interaction network: a resource for annotating the proteome. 
Cell 2005."
-                       xlink:href="http://cytoscape.org/datasets/stelzl.sif";
-                       format="sif" />
-               <dataSource name="Yeast Protein-Protein: Ptacek et al. Global 
analysis of protein phosphorylation in yeast. Nature 2005"
-                       xlink:href="http://cytoscape.org/datasets/ptacek.sif";
-                       format="sif" />
        </category>
        
        <category name="table">

Modified: 
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/data_mapper/MapPsiTwoFiveToInteractions.java
===================================================================
--- 
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/data_mapper/MapPsiTwoFiveToInteractions.java
       2011-12-13 18:19:41 UTC (rev 27780)
+++ 
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/data_mapper/MapPsiTwoFiveToInteractions.java
       2011-12-13 21:53:34 UTC (rev 27781)
@@ -59,6 +59,8 @@
 import org.cytoscape.psi_mi.internal.schema.mi25.NamesType;
 import org.cytoscape.psi_mi.internal.schema.mi25.ParticipantType;
 import org.cytoscape.psi_mi.internal.schema.mi25.XrefType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -68,21 +70,28 @@
  * @author Nisha Vinod
  */
 public class MapPsiTwoFiveToInteractions implements Mapper {
-       private HashMap<String, InteractorElementType> interactorMap;
-       private Map<String, ExperimentType> experimentMap;
-       private List<Interaction> interactions;
-       private String xml;
-       private static final boolean DEBUG = false;
+       
+       private static final Logger logger = 
LoggerFactory.getLogger(MapPsiTwoFiveToInteractions.class);
+               
+       private final Map<String, InteractorElementType> interactorMap;
+       private final Map<String, ExperimentType> experimentMap;
+       
+       private final List<Interaction> interactions;
+       private final String xml;
+       
 
        /**
         * Constructor.
         *
-        * @param xml          XML Document.
+        * @param xml XML Document.
         * @param interactions ArrayList of Interaction objects.
         */
-       public MapPsiTwoFiveToInteractions(String xml, List<Interaction> 
interactions) {
+       public MapPsiTwoFiveToInteractions(final String xml, final 
List<Interaction> interactions) {
                this.xml = xml;
                this.interactions = interactions;
+               
+               interactorMap = new HashMap<String, InteractorElementType>();
+               experimentMap = new HashMap<String, ExperimentType>();
        }
 
        /**
@@ -90,46 +99,57 @@
         *
         * @throws MapperException Problem Performing mapping.
         */
+       @Override
        public void doMapping() throws MapperException {
                parseXml(xml);
        }
 
        /**
         * Parses the PSI XML Document.
+        * @throws MapperException 
         */
-       private void parseXml(String content) throws MapperException {
-               try {
-                       interactorMap = new HashMap<String, 
InteractorElementType>();
-                       experimentMap = new HashMap<String, ExperimentType>();
+       private void parseXml(final String xml) throws MapperException {
 
-                       StringReader reader = new StringReader(content);
-                       JAXBContext jc = 
JAXBContext.newInstance(MapInteractionsToPsiTwoFive.SCHEMA_NAMESPACE, 
getClass().getClassLoader());
-                       Unmarshaller u = jc.createUnmarshaller();
+               final StringReader reader = new StringReader(xml);
 
-                       EntrySet entrySet = (EntrySet) u.unmarshal(reader);
-                       int entryCount = entrySet.getEntry().size();
+               JAXBContext jc = null;
+               try {
+                       jc = 
JAXBContext.newInstance(MapInteractionsToPsiTwoFive.SCHEMA_NAMESPACE, getClass()
+                                       .getClassLoader());
+               } catch (JAXBException e) {
+                       logger.error("Could not create JAXBContext", e);
+               }
+               
+               Unmarshaller u = null;
+               try {
+                       u = jc.createUnmarshaller();
+               } catch (JAXBException e) {
+                       logger.error("Could not create Unmarshaller", e);
+               }
 
-                       for (int i = 0; i < entryCount; i++) {
-                               EntrySet.Entry entry = 
entrySet.getEntry().get(i);
-                               extractEntry(entry);
-                       }
+               EntrySet entrySet = null;
+               try {
+                       entrySet = (EntrySet) u.unmarshal(reader);
                } catch (JAXBException e) {
-                       throw new MapperException(e, "PSI-MI XML File is 
invalid:  " + e.getMessage());
+                       logger.error("unmarshal operation failed", e);
                }
+               
+               final int entryCount = entrySet.getEntry().size();
+               for (int i = 0; i < entryCount; i++)
+                       extractEntry(entrySet.getEntry().get(i));
        }
 
        /**
         * Extracts PSI Entry Root Element.
         */
        private void extractEntry(EntrySet.Entry entry) throws MapperException {
-               EntrySet.Entry.ExperimentList expList = 
entry.getExperimentList();
+               final EntrySet.Entry.ExperimentList expList = 
entry.getExperimentList();
                extractExperimentList(expList);
 
-               EntrySet.Entry.InteractorList interactorList = 
entry.getInteractorList();
-
+               final EntrySet.Entry.InteractorList interactorList = 
entry.getInteractorList();
                extractInteractorList(interactorList);
 
-               EntrySet.Entry.InteractionList interactionList = 
entry.getInteractionList();
+               final EntrySet.Entry.InteractionList interactionList = 
entry.getInteractionList();
                extractInteractionList(interactionList);
        }
 
@@ -137,68 +157,57 @@
         * Extracts Experiment List, and places into HashMap.
         */
        private void extractExperimentList(EntrySet.Entry.ExperimentList 
expList) {
-               log("Extracting Experiment List: Start");
-
-               if (expList != null) {
-                       int count = expList.getExperimentDescription().size();
-
+               if(expList != null) {
+                       final int count = 
expList.getExperimentDescription().size();
                        for (int i = 0; i < count; i++) {
-                               ExperimentType expType = 
expList.getExperimentDescription().get(i);
-                               String id = "" + expType.getId();
-                               experimentMap.put(id, expType);
+                               final ExperimentType expType = 
expList.getExperimentDescription().get(i);
+                               
experimentMap.put(Integer.toString(expType.getId()), expType);
                        }
                }
-
-               log("Extracting Experiment List: End");
        }
 
        /**
         * Extracts PSI InteractorList, and places into HashMap.
         */
        private void extractInteractorList(EntrySet.Entry.InteractorList 
interactorList) {
-               log("Extracting Interactor List: Start");
+               logger.debug("Extracting Interactor List: Start");
 
                if (interactorList != null) {
-                       for (InteractorElementType cProtein : 
interactorList.getInteractor()) {
-                               String id = "" + cProtein.getId();
-                               log("Extracting:  " + id + " --> " + cProtein);
-                               interactorMap.put(id, cProtein);
-                       }
+                       for (InteractorElementType cProtein : 
interactorList.getInteractor())
+                               
interactorMap.put(Integer.toString(cProtein.getId()), cProtein);
                }
 
-               log("Extracting Interactor List: End");
+               logger.debug("Extracting Interactor List: End");
        }
 
        /**
         * Extracts PSI Interaction List
         */
-       private void extractInteractionList(EntrySet.Entry.InteractionList 
interactionList)
-           throws MapperException {
-               log("Extracting Interaction List: Start");
+       private void extractInteractionList(EntrySet.Entry.InteractionList 
interactionList) throws MapperException {
+               logger.debug("Extracting Interaction List: Start");
 
                for (EntrySet.Entry.InteractionList.Interaction cInteraction : 
interactionList.getInteraction()) {
                        Interaction interaction = new Interaction();
-            List<CvType> interactionTypes = cInteraction.getInteractionType();
+                       final List<CvType> interactionTypes = 
cInteraction.getInteractionType();
 
-                       InteractionElementType.ParticipantList pList = 
cInteraction.getParticipantList();
-                       int pCount = pList.getParticipant().size();
-                       ArrayList<Interactor> interactorList = new 
ArrayList<Interactor>();
-                       Map<String, String> interactorRoles = new 
HashMap<String, String>();
+                       final InteractionElementType.ParticipantList pList = 
cInteraction.getParticipantList();
+                       final int pCount = pList.getParticipant().size();
+                       final List<Interactor> interactorList = new 
ArrayList<Interactor>();
+                       final Map<String, String> interactorRoles = new 
HashMap<String, String>();
 
                        for (int j = 0; j < pCount; j++) {
                                Interactor interactor = 
extractInteractorRefOrElement(pList, j);
-                               log("Getting interactor:  " + interactor);
+                               logger.debug("Getting interactor:  " + 
interactor);
                                interactorList.add(interactor);
 
                                ParticipantType participant = 
pList.getParticipant().get(j);
                                ParticipantType.ExperimentalRoleList role = 
participant.getExperimentalRoleList();
 
                                if (role != null) {
-                                       for 
(ParticipantType.ExperimentalRoleList.ExperimentalRole expRole : role
-                                                                               
                                                                                
                                                                                
      .getExperimentalRole()) {
+                                       for 
(ParticipantType.ExperimentalRoleList.ExperimentalRole expRole : 
role.getExperimentalRole()) {
                                                NamesType namesType = 
expRole.getNames();
                                                String roleName = 
namesType.getShortLabel();
-                                               log("Storing role for:  " + 
interactor.getName() + " --> " + roleName);
+                                               logger.debug("Storing role for: 
 " + interactor.getName() + " --> " + roleName);
                                                
interactorRoles.put(interactor.getName(), roleName);
                                        }
                                }
@@ -209,37 +218,36 @@
 
                        List<Interaction> expDatalist = 
extractExperimentalData(cInteraction, interaction);
 
-                       //  Add BAIT MAP / Names To all Interactions.
+                       // Add BAIT MAP / Names To all Interactions.
                        for (int j = 0; j < expDatalist.size(); j++) {
                                interaction = expDatalist.get(j);
                                
interaction.addAttribute(InteractionVocab.BAIT_MAP, interactorRoles);
                                extractInteractionNamesXrefs(cInteraction, 
interaction);
-                addInteractorType(interactionTypes, interaction);
-            }
+                               addInteractorType(interactionTypes, 
interaction);
+                       }
 
-                       log("Adding num interactions:  " + expDatalist.size());
+                       logger.debug("Adding num interactions:  " + 
expDatalist.size());
                        interactions.addAll(expDatalist);
                }
 
-               log("Extracting Interaction List: End");
+               logger.debug("Extracting Interaction List: End");
        }
 
-    private void addInteractorType(List<CvType> interactionTypes,
-        org.cytoscape.psi_mi.internal.model.Interaction interaction) {
-        if (interactionTypes != null) {
-            if (interactionTypes.size() ==1) {
-                CvType interactionType = interactionTypes.get(0);
-                NamesType namesType = interactionType.getNames();
-                if (namesType != null) {
-                    String shortName = namesType.getShortLabel();
-                    if (shortName != null) {
-                        
interaction.addAttribute(InteractionVocab.INTERACTION_TYPE_NAME,
-                            shortName);
-                    }
-                }
-            }
-        }
-    }    
+       private void addInteractorType(List<CvType> interactionTypes,
+                       org.cytoscape.psi_mi.internal.model.Interaction 
interaction) {
+               if (interactionTypes != null) {
+                       if (interactionTypes.size() == 1) {
+                               CvType interactionType = 
interactionTypes.get(0);
+                               NamesType namesType = 
interactionType.getNames();
+                               if (namesType != null) {
+                                       String shortName = 
namesType.getShortLabel();
+                                       if (shortName != null) {
+                                               
interaction.addAttribute(InteractionVocab.INTERACTION_TYPE_NAME, shortName);
+                                       }
+                               }
+                       }
+               }
+       }
 
     /**
         * Extracts Interaction Names.
@@ -252,20 +260,18 @@
                        String shortLabel = names.getShortLabel();
                        String fullName = names.getFullName();
 
-                       if (shortLabel != null) {
+                       if (shortLabel != null)
                                
interaction.addAttribute(InteractionVocab.INTERACTION_SHORT_NAME, shortLabel);
-                       }
 
-                       if (fullName != null) {
+                       if (fullName != null)
                                
interaction.addAttribute(InteractionVocab.INTERACTION_FULL_NAME, fullName);
-                       }
                }
 
                XrefType xref = cInteraction.getXref();
                ExternalReference[] refs = extractExternalRefs(xref);
 
                if ((refs != null) && (refs.length > 0)) {
-                       log("Got refs:  " + refs.length);
+                       logger.debug("Got refs:  " + refs.length);
                        interaction.setExternalRefs(refs);
                }
        }
@@ -273,18 +279,17 @@
        /**
         * Extracts Interactor From Reference or Element.
         */
-       private Interactor 
extractInteractorRefOrElement(InteractionElementType.ParticipantList pList,
-                                                        int j) throws 
MapperException {
+       private Interactor 
extractInteractorRefOrElement(InteractionElementType.ParticipantList pList, int 
j)
+                       throws MapperException {
                Interactor interactor;
                InteractorElementType cInteractor = null;
                ParticipantType participant = pList.getParticipant().get(j);
                Integer ref = participant.getInteractorRef();
 
-               if (ref != null) {
-                       cInteractor = interactorMap.get("" + ref);
-               } else {
+               if (ref != null)
+                       cInteractor = interactorMap.get(ref.toString());
+               else
                        cInteractor = participant.getInteractor();
-               }
 
                interactor = createInteractor(cInteractor);
 
@@ -408,12 +413,15 @@
        /**
         * Gets Interaction Detection.
         */
-       private void extractInteractionDetection(ExperimentType expDesc, 
Interaction interaction) {
+       private void extractInteractionDetection(final ExperimentType expDesc, 
final Interaction interaction) {
                String expSystem;
 
                if (expDesc != null) {
-                       CvType detection = 
expDesc.getInteractionDetectionMethod();
-                       NamesType names = detection.getNames();
+                       final CvType detection = 
expDesc.getInteractionDetectionMethod();
+                       if(detection == null)
+                               return;
+                       
+                       final NamesType names = detection.getNames();
                        expSystem = names.getShortLabel();
 
                        if (expSystem != null) {
@@ -528,10 +536,4 @@
             }
         }
        }
-
-       private void log(String msg) {
-               if (DEBUG) {
-                       System.out.println(msg);
-               }
-       }
 }

Modified: 
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewReader.java
===================================================================
--- 
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewReader.java
 2011-12-13 18:19:41 UTC (rev 27780)
+++ 
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewReader.java
 2011-12-13 21:53:34 UTC (rev 27781)
@@ -6,6 +6,7 @@
 import java.io.InputStreamReader;
 import java.io.StringWriter;
 import java.util.ArrayList;
+import java.util.List;
 
 import org.cytoscape.io.read.CyNetworkReader;
 import org.cytoscape.model.CyNetwork;
@@ -18,21 +19,23 @@
 import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewFactory;
-import org.cytoscape.view.vizmap.VisualStyle;
 import org.cytoscape.work.AbstractTask;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.TaskIterator;
 import org.cytoscape.work.TaskMonitor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class PsiMiNetworkViewReader extends AbstractTask implements 
CyNetworkReader {
        
+       private static final Logger logger = 
LoggerFactory.getLogger(PsiMiNetworkViewReader.class);
+       
        private static final int BUFFER_SIZE = 16384;
        
        private final CyNetworkViewFactory networkViewFactory;
        private final CyNetworkFactory networkFactory;
        
        private InputStream inputStream;
-
        private CyNetwork network;
 
        private CyLayoutAlgorithmManager layouts;
@@ -46,36 +49,58 @@
 
        @Override
        public void run(TaskMonitor taskMonitor) throws Exception {
-               taskMonitor.setProgress(0.0);
+               long start = System.currentTimeMillis();
+               logger.info("==================== PSI-MI XML Data Import start 
==============");
+               
+               taskMonitor.setProgress(0.01d);
+               taskMonitor.setTitle("Loading PSI-MI XML File ");
+               taskMonitor.setStatusMessage("Loading data file in PSI-MI 2.5 
XML format.");
+               
                String xml = readString(inputStream);
+               taskMonitor.setProgress(0.2d);
+               taskMonitor.setStatusMessage("Data Loaded.  Mapping Data to 
Network...");
 
-               ArrayList<Interaction> interactions = new 
ArrayList<Interaction>();
+               final List<Interaction> interactions = new 
ArrayList<Interaction>();
 
                //  Pick one of two mappers
-               int level2 = xml.indexOf("level=\"2\"");
+               final int level2 = xml.indexOf("level=\"2\"");
 
                if ((level2 > 0) && (level2 < 500)) {
+                       // This is 2.5 format
                        MapPsiTwoFiveToInteractions mapper = new 
MapPsiTwoFiveToInteractions(xml, interactions);
                        mapper.doMapping();
+                       mapper = null;
                } else {
                        MapPsiOneToInteractions mapper = new 
MapPsiOneToInteractions(xml, interactions);
                        mapper.doMapping();
+                       mapper = null;
                }
-               taskMonitor.setProgress(0.25);
+               taskMonitor.setProgress(0.6d);
 
                //  Now map to Cytoscape network objects.
                network = networkFactory.createNetwork();
-               MapToCytoscape mapper2 = new MapToCytoscape(network, 
interactions, MapToCytoscape.SPOKE_VIEW);
+               xml = null;
+               
+               taskMonitor.setStatusMessage("Creating Network...");
+               final MapToCytoscape mapper2 = new MapToCytoscape(network, 
interactions, MapToCytoscape.SPOKE_VIEW);
                mapper2.doMapping();
-
-               taskMonitor.setProgress(1.0);
+               taskMonitor.setProgress(1.0d);
+               logger.info("PSI-MI 2.5 XML Data Import finihsed in " + 
(System.currentTimeMillis() - start) + " msec.");
        }
 
 
-
+       /**
+        * Create big String object from the entire XML file
+        * TODO: is this OK for huge data files?
+        * 
+        * @param source
+        * @return
+        * @throws IOException
+        */
        private static String readString(InputStream source) throws IOException 
{
-               StringWriter writer = new StringWriter();
-               BufferedReader reader = new BufferedReader(new 
InputStreamReader(source));
+               final StringWriter writer = new StringWriter();
+       
+               final BufferedReader reader = new BufferedReader(new 
InputStreamReader(source));
                try {
                        char[] buffer = new char[BUFFER_SIZE];
                        int charactersRead = reader.read(buffer, 0, 
buffer.length);

Modified: 
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewTaskFactory.java
===================================================================
--- 
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewTaskFactory.java
    2011-12-13 18:19:41 UTC (rev 27780)
+++ 
core3/impl/trunk/psi-mi-impl/src/main/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewTaskFactory.java
    2011-12-13 21:53:34 UTC (rev 27781)
@@ -27,7 +27,8 @@
        
        @Override
        public TaskIterator createTaskIterator() {
-               return new TaskIterator(new PsiMiNetworkViewReader(inputStream, 
networkFactory, networkViewFactory, layouts));
+               // Usually 3 tasks: load, visualize, and layout.
+               return new TaskIterator(3, new 
PsiMiNetworkViewReader(inputStream, networkFactory, networkViewFactory, 
layouts));
        }
 
        @Override

Modified: 
core3/impl/trunk/psi-mi-impl/src/test/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewReaderTest.java
===================================================================
--- 
core3/impl/trunk/psi-mi-impl/src/test/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewReaderTest.java
     2011-12-13 18:19:41 UTC (rev 27780)
+++ 
core3/impl/trunk/psi-mi-impl/src/test/java/org/cytoscape/psi_mi/internal/plugin/PsiMiNetworkViewReaderTest.java
     2011-12-13 21:53:34 UTC (rev 27781)
@@ -23,8 +23,13 @@
 import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class PsiMiNetworkViewReaderTest {
+       
+       private static final Logger logger = 
LoggerFactory.getLogger(PsiMiNetworkViewReaderTest.class);
+
        @Mock CyLayoutAlgorithmManager layouts;
        @Mock CyLayoutAlgorithm layout;
        @Mock TaskMonitor taskMonitor;
@@ -85,4 +90,35 @@
                assertEquals(40, network.getNodeCount());
                assertEquals(39, network.getEdgeCount());
        }
+       
+       // The following is for performance testing.  Enable when necessary.
+       //@Test
+       public void testReadPsiMi25Large() throws Exception {
+               long total = 0;
+
+               for (int i = 0; i < 5; i++) {
+                       long start = System.currentTimeMillis();
+                       logger.debug("HPRD Data Import start");
+                       File file = new 
File("src/test/resources/testData/HPRD_SINGLE_PSIMI_041210.xml");
+                       CyNetworkReader reader = createReader(file);
+                       reader.run(taskMonitor);
+                       CyNetwork[] networks = reader.getNetworks();
+
+                       long time = System.currentTimeMillis() - start;
+                       total+= time;
+                       
+                       logger.debug("HPRD Data Import finihsed in " + time + " 
msec.");
+
+                       assertNotNull(networks);
+                       assertEquals(1, networks.length);
+
+                       final CyNetwork network = networks[0];
+                       assertNotNull(network);
+
+                       assertEquals(9869, network.getNodeCount());
+                       assertEquals(62226, network.getEdgeCount());
+               }
+               
+               logger.debug("Average loading time = " + total/5 + " msec.");
+       }
 }

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
       2011-12-13 18:19:41 UTC (rev 27780)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
       2011-12-13 21:53:34 UTC (rev 27781)
@@ -145,6 +145,7 @@
        public void start(BundleContext bc) {
                
                ImportNetworksTaskFactory importNetworkTF = getService(bc, 
ImportNetworksTaskFactory.class, "(id=loadNetworkURLTaskFactory)");
+               TaskFactory importNetworkFileTF = getService(bc, 
TaskFactory.class, "(id=loadNetworkFileTaskFactory)");
                NetworkTaskFactory createNetworkViewTaskFactory = 
getService(bc, NetworkTaskFactory.class, "(id=createNetworkViewTaskFactory)");
                TaskFactory openSessionTaskFactory = getService(bc, 
TaskFactory.class, "(id=openSessionTaskFactory)");
 
@@ -293,7 +294,7 @@
                                                                                
     cyApplicationManagerServiceRef);
                
                // Show Welcome Screen
-               final WelcomeScreenAction welcomeScreenAction = new 
WelcomeScreenAction(cytoscapeDesktop, cyApplicationManagerServiceRef, 
openBrowserServiceRef, recentlyOpenedTrackerServiceRef, openSessionTaskFactory, 
submenuTaskManagerServiceRef, importNetworkTF, createNetworkViewTaskFactory, 
cyApplicationConfigurationServiceRef, dsManagerServiceRef, 
cytoscapePropertiesServiceRef);
+               final WelcomeScreenAction welcomeScreenAction = new 
WelcomeScreenAction(cytoscapeDesktop, cyApplicationManagerServiceRef, 
openBrowserServiceRef, recentlyOpenedTrackerServiceRef, openSessionTaskFactory, 
submenuTaskManagerServiceRef, importNetworkFileTF, importNetworkTF, 
createNetworkViewTaskFactory, cyApplicationConfigurationServiceRef, 
dsManagerServiceRef, cytoscapePropertiesServiceRef);
                
                registerService(bc, welcomeScreenAction, CyAction.class, new 
Properties());
                registerService(bc, undoAction, CyAction.class, new 
Properties());

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/WelcomeScreenAction.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/WelcomeScreenAction.java
       2011-12-13 18:19:41 UTC (rev 27780)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/WelcomeScreenAction.java
       2011-12-13 21:53:34 UTC (rev 27781)
@@ -35,13 +35,14 @@
        
        private final NetworkTaskFactory networkTaskFactory;
        private final TaskFactory openSessionTaskFactory;
+       private final TaskFactory importNetworkFileTF;
 
        private final CySwingApplication app;
        private final CyProperty<Properties> cyProps;
 
        public WelcomeScreenAction(final CySwingApplication app, final 
CyApplicationManager applicationManager,
                        OpenBrowser openBrowserServiceRef, 
RecentlyOpenedTracker fileTracker, final TaskFactory openSessionTaskFactory, 
TaskManager guiTaskManager,
-                       final ImportNetworksTaskFactory 
importNetworksTaskFactory, final NetworkTaskFactory networkTaskFactory,
+                       final TaskFactory importNetworkFileTF, final 
ImportNetworksTaskFactory importNetworksTaskFactory, final NetworkTaskFactory 
networkTaskFactory,
                        final CyApplicationConfiguration config, final 
DataSourceManager dsManager, final CyProperty<Properties> cyProps) {
                super(MENU_NAME, applicationManager);
                setPreferredMenu(PARENT_NAME);
@@ -56,13 +57,14 @@
                this.app = app;
                this.cyProps = cyProps;
                this.openSessionTaskFactory = openSessionTaskFactory;
+               this.importNetworkFileTF = importNetworkFileTF;
 
        }
 
        @Override
        public void actionPerformed(ActionEvent ae) {
                final JDialog welcomeScreen = new 
WelcomeScreenDialog(openBrowser, fileTracker, openSessionTaskFactory, 
guiTaskManager, config,
-                               importNetworksTaskFactory, networkTaskFactory, 
dsManager, cyProps);
+                               importNetworkFileTF, importNetworksTaskFactory, 
networkTaskFactory, dsManager, cyProps);
                welcomeScreen.setLocationRelativeTo(app.getJFrame());
                welcomeScreen.setVisible(true);
        }

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/welcomescreen/CreateNewNetworkPanel.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/welcomescreen/CreateNewNetworkPanel.java
       2011-12-13 18:19:41 UTC (rev 27780)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/welcomescreen/CreateNewNetworkPanel.java
       2011-12-13 21:53:34 UTC (rev 27781)
@@ -67,7 +67,8 @@
 
        private Window parent;
 
-       private final ImportNetworksTaskFactory loadNetworkFileTF;
+       private final ImportNetworksTaskFactory importNetworkFromURLTF;
+       private final TaskFactory importNetworkFileTF;
        private final NetworkTaskFactory createViewTaskFactory;
 
        private final DataSourceManager dsManager;
@@ -77,12 +78,13 @@
        
        private boolean firstSelection = false;
 
-       CreateNewNetworkPanel(Window parent, final TaskManager guiTaskManager, 
final ImportNetworksTaskFactory loadTF,
+       CreateNewNetworkPanel(Window parent, final TaskManager guiTaskManager, 
final TaskFactory importNetworkFileTF, final ImportNetworksTaskFactory loadTF,
                        final NetworkTaskFactory createViewTaskFactory, final 
CyApplicationConfiguration config,
                        final DataSourceManager dsManager, final Properties 
props) {
                this.parent = parent;
-               this.loadNetworkFileTF = loadTF;
+               this.importNetworkFromURLTF = loadTF;
                this.createViewTaskFactory = createViewTaskFactory;
+               this.importNetworkFileTF = importNetworkFileTF;
                this.guiTaskManager = guiTaskManager;
                this.dsManager = dsManager;
                this.viewThreshold = getViewThreshold(props);
@@ -148,7 +150,7 @@
                        public void mouseClicked(MouseEvent ev) {
                                // Load network from file.
                                parent.dispose();
-                               guiTaskManager.execute((TaskFactory) 
loadNetworkFileTF);
+                               guiTaskManager.execute(importNetworkFileTF);
                        }
                });
                this.setBorder(new LineBorder(new Color(0, 0, 0, 0), 10));
@@ -178,7 +180,7 @@
 
                        @Override
                        public TaskIterator createTaskIterator() {
-                               return new TaskIterator(2, new 
CreateNetworkViewTask(url, loadNetworkFileTF, createViewTaskFactory));
+                               return new TaskIterator(2, new 
CreateNetworkViewTask(url, importNetworkFromURLTF, createViewTaskFactory));
                        }
                });
 

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/welcomescreen/WelcomeScreenDialog.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/welcomescreen/WelcomeScreenDialog.java
 2011-12-13 18:19:41 UTC (rev 27780)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/welcomescreen/WelcomeScreenDialog.java
 2011-12-13 21:53:34 UTC (rev 27781)
@@ -63,10 +63,12 @@
        private final DataSourceManager dsManager;
        
        private final CyProperty<Properties> cyProps;
+       
+       private final TaskFactory importNetworkFileTF;
 
        public WelcomeScreenDialog(OpenBrowser openBrowserServiceRef, 
RecentlyOpenedTracker fileTracker, final TaskFactory openSessionTaskFactory,
                        TaskManager guiTaskManager, final 
CyApplicationConfiguration config,
-                       final ImportNetworksTaskFactory importNetworkTF, final 
NetworkTaskFactory networkTaskFactory,
+                       final TaskFactory importNetworkFileTF, final 
ImportNetworksTaskFactory importNetworkTF, final NetworkTaskFactory 
networkTaskFactory,
                        final DataSourceManager dsManager, final 
CyProperty<Properties> cyProps) {
                this.openBrowserServiceRef = openBrowserServiceRef;
                this.fileTracker = fileTracker;
@@ -75,6 +77,7 @@
                this.networkTaskFactory = networkTaskFactory;
                this.dsManager = dsManager;
                this.openSessionTaskFactory = openSessionTaskFactory;
+               this.importNetworkFileTF = importNetworkFileTF;
 
                this.guiTaskManager = guiTaskManager;
                this.cyProps = cyProps;
@@ -167,7 +170,7 @@
                panel4.setBackground(PANEL_COLOR);
 
                buildHelpPanel(panel1, new OpenPanel(this, fileTracker, 
guiTaskManager, openSessionTaskFactory), "Open a Recent Session");
-               buildHelpPanel(panel2, new CreateNewNetworkPanel(this, 
guiTaskManager, loadNetworkTF, networkTaskFactory, config, dsManager, 
cyProps.getProperties()),
+               buildHelpPanel(panel2, new CreateNewNetworkPanel(this, 
guiTaskManager, importNetworkFileTF, loadNetworkTF, networkTaskFactory, config, 
dsManager, cyProps.getProperties()),
                                "Create New Network");
                buildHelpPanel(panel3, new HelpPanel(openBrowserServiceRef), 
"Help");
                buildHelpPanel(panel4, new LogoPanel(), "Latest News");

Modified: 
core3/impl/trunk/work-swing-impl/impl/src/main/java/org/cytoscape/work/internal/task/SwingTaskMonitor.java
===================================================================
--- 
core3/impl/trunk/work-swing-impl/impl/src/main/java/org/cytoscape/work/internal/task/SwingTaskMonitor.java
  2011-12-13 18:19:41 UTC (rev 27780)
+++ 
core3/impl/trunk/work-swing-impl/impl/src/main/java/org/cytoscape/work/internal/task/SwingTaskMonitor.java
  2011-12-13 21:53:34 UTC (rev 27781)
@@ -118,12 +118,9 @@
                        if (dialog != null)
                                dialog.setPercentCompleted(-1);
                } else {
-                       logger.info("Set Progeress called: " + progress);
                        double completed = 
(double)currentTaskNum/(double)expectedNumTasks;
                        double adjustedProgress = (progress * 
fractionOfOverall) + completed;
-                       this.progress = (int) Math.floor(100.0 * 
adjustedProgress); 
-                       
-                       logger.info("## Set Progeress converted: " + 
this.progress);
+                       this.progress = (int) Math.floor(100.0 * 
adjustedProgress);                     
                        if (dialog != null)
                                dialog.setPercentCompleted(this.progress);
                }

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