Author: mes
Date: 2010-10-06 17:35:17 -0700 (Wed, 06 Oct 2010)
New Revision: 22176
Added:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/properties/PropertiesFileFilter.java
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/CyFileFilterImpl.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderFactoryImpl.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderImpl.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterFactoryImpl.java
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterImpl.java
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
Log:
got session reader and writer working using other reader managers
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/CyFileFilterImpl.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/CyFileFilterImpl.java
2010-10-06 21:21:08 UTC (rev 22175)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/CyFileFilterImpl.java
2010-10-07 00:35:17 UTC (rev 22176)
@@ -191,7 +191,7 @@
br = null;
}
-
+
return header;
}
@@ -217,4 +217,16 @@
return header.toString();
}
+ public String toString() {
+ String s = description + " [category: " + category + "]
[extensions: ";
+ for ( String ext : extensions )
+ s += ext + ",";
+ s += "] [contentTypes: ";
+ for ( String c : contentTypes )
+ s += c + ",";
+ s += "]";
+
+ return s;
+ }
+
}
Added:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/properties/PropertiesFileFilter.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/properties/PropertiesFileFilter.java
(rev 0)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/properties/PropertiesFileFilter.java
2010-10-07 00:35:17 UTC (rev 22176)
@@ -0,0 +1,48 @@
+package org.cytoscape.io.internal.read.properties;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.cytoscape.io.DataCategory;
+import org.cytoscape.io.util.StreamUtil;
+import org.cytoscape.io.internal.CyFileFilterImpl;
+
+public class PropertiesFileFilter extends CyFileFilterImpl {
+
+ Matcher matcher;
+
+ public PropertiesFileFilter(Set<String> extensions, Set<String>
contentTypes,
+ String description, DataCategory category, StreamUtil
streamUtil) {
+ super(extensions, contentTypes, description, category,
streamUtil);
+
+ Pattern p = Pattern.compile("^.+=.+$", Pattern.DOTALL);
+ matcher = p.matcher("");
+ }
+
+ public boolean accept(InputStream stream, DataCategory category) {
+
+ // Check data category
+ if (category != this.category)
+ return false;
+
+ final String header = this.getHeader(stream,20);
+
+ // These two tests are so that we don't mistakenly accept a
cysession
+ // or bookmarks file, which might otherwise match the pattern
above.
+ if (header.contains("<cysession") && header.contains("xmlns"))
+ return false;
+ if (header.contains("<bookmarks") && header.contains("xmlns"))
+ return false;
+
+ // This is the real test to see if we're a .props file
+ // TODO can we find a better test?
+ if(matcher.reset(header).matches())
+ return true;
+
+ return false;
+ }
+}
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderFactoryImpl.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderFactoryImpl.java
2010-10-06 21:21:08 UTC (rev 22175)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderFactoryImpl.java
2010-10-07 00:35:17 UTC (rev 22176)
@@ -35,6 +35,7 @@
import org.cytoscape.model.CyNetworkFactory;
import org.cytoscape.model.CyTableFactory;
import org.cytoscape.io.read.CyNetworkViewReaderManager;
+import org.cytoscape.io.read.CyPropertyReaderManager;
import org.cytoscape.work.TaskIterator;
import org.cytoscape.io.read.InputStreamTaskFactory;
@@ -43,11 +44,13 @@
private final CyFileFilter filter;
private final CyNetworkViewReaderManager netviewReaderMgr;
+ private final CyPropertyReaderManager propertyReaderMgr;
private InputStream inputStream;
- public SessionReaderFactoryImpl(CyFileFilter filter,
CyNetworkViewReaderManager netviewReaderMgr) {
+ public SessionReaderFactoryImpl(CyFileFilter filter,
CyNetworkViewReaderManager netviewReaderMgr, CyPropertyReaderManager
propertyReaderMgr) {
this.filter = filter;
this.netviewReaderMgr = netviewReaderMgr;
+ this.propertyReaderMgr = propertyReaderMgr;
}
public void setInputStream(InputStream is) {
@@ -61,6 +64,6 @@
}
public TaskIterator getTaskIterator() {
- return new TaskIterator(new SessionReaderImpl(inputStream,
netviewReaderMgr));
+ return new TaskIterator(new SessionReaderImpl(inputStream,
netviewReaderMgr, propertyReaderMgr));
}
}
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderImpl.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderImpl.java
2010-10-06 21:21:08 UTC (rev 22175)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/session/SessionReaderImpl.java
2010-10-07 00:35:17 UTC (rev 22176)
@@ -50,6 +50,8 @@
import org.cytoscape.view.vizmap.VisualStyle;
import org.cytoscape.io.read.CyNetworkViewReader;
import org.cytoscape.io.read.CyNetworkViewReaderManager;
+import org.cytoscape.io.read.CyPropertyReader;
+import org.cytoscape.io.read.CyPropertyReaderManager;
import org.cytoscape.work.AbstractTask;
import org.cytoscape.work.TaskMonitor;
import org.cytoscape.session.CySession;
@@ -58,9 +60,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
import java.io.File;
import java.io.InputStream;
import java.io.IOException;
@@ -83,47 +82,27 @@
/**
*/
public class SessionReaderImpl extends AbstractTask implements CySessionReader
{
- /**
- *
- */
- public static final String PACKAGE_NAME =
"org.cytoscape.property.session";
- /**
- *
- */
- public static final String BOOKMARK_PACKAGE_NAME =
"org.cytoscape.property.bookmark";
-
- /**
- *
- */
public static final String CYSESSION = "cysession.xml";
-
- /**
- *
- */
public static final String VIZMAP_PROPS = "vizmap.props";
-
- /**
- *
- */
public static final String CY_PROPS = "cytoscape.props";
-
- /**
- *
- */
public static final String XGMML_EXT = ".xgmml";
- private static final String BOOKMARKS_FILE = "session_bookmarks.xml";
- private static final String NETWORK_ROOT = "Network Root";
+ public static final String BOOKMARKS_FILE = "session_bookmarks.xml";
+ public static final String NETWORK_ROOT = "Network Root";
+
+
private static final Logger logger =
LoggerFactory.getLogger(SessionReaderImpl.class);
+
private final Map<String, List<File>> pluginFileListMap = new
HashMap<String, List<File>>();
private final Map<String,CyNetworkView[]> networkViews = new
HashMap<String,CyNetworkView[]>();
private final Map<CyNetworkView,String> visualStyleMap = new
HashMap<CyNetworkView,String>();
private final Map<String, Network> netMap = new HashMap<String,
Network>();
- private final InputStream sourceInputStream;
+ private final InputStream sourceInputStream;
private final CyNetworkViewReaderManager netviewReaderMgr;
+ private final CyPropertyReaderManager propertyReaderMgr;
- private Cysession session;
+ private Cysession cysession;
private Bookmarks bookmarks;
private TaskMonitor taskMonitor;
private Properties cytoscapeProps;
@@ -131,7 +110,7 @@
/**
*/
- public SessionReaderImpl(final InputStream sourceInputStream, final
CyNetworkViewReaderManager netviewReaderMgr) {
+ public SessionReaderImpl(final InputStream sourceInputStream, final
CyNetworkViewReaderManager netviewReaderMgr, CyPropertyReaderManager
propertyReaderMgr) {
if ( sourceInputStream == null )
throw new NullPointerException("input stream is null!");
@@ -140,60 +119,21 @@
if ( netviewReaderMgr == null )
throw new NullPointerException("network view reader
manager is null!");
this.netviewReaderMgr = netviewReaderMgr;
+
+ if ( propertyReaderMgr == null )
+ throw new NullPointerException("property reader manager
is null!");
+ this.propertyReaderMgr = propertyReaderMgr;
}
/**
* Read a session file.
- *
- * @throws IOException
- * @throws JAXBException
*/
public void run(TaskMonitor tm) throws Exception {
- System.out.println("SESSION starting to read");
taskMonitor = tm;
extractEntries();
processNetworks();
-
-
-// if (session.getSessionState().getDesktop() != null) {
-// restoreDesktopState();
-// }
-
-// if (session.getSessionState().getServer() != null) {
- // TODO
- //restoreOntologyServerStatus();
-// }
-
- // Send signal to others
-// Cytoscape.firePropertyChange(Cytoscape.ATTRIBUTES_CHANGED,
null, null);
-// Cytoscape.firePropertyChange(Cytoscape.NETWORK_LOADED, null,
null);
-
- // Send signal to plugins
-// Cytoscape.firePropertyChange(Cytoscape.RESTORE_PLUGIN_STATE,
pluginFileListMap, null);
-// deleteTmpPluginFiles();
-
- // Send message with list of loaded networks.
-// Cytoscape.firePropertyChange(Cytoscape.SESSION_LOADED, null,
networkList);
-
- // Restore listener for VizMapper.
-// if (Cytoscape.getDesktop() != null) {
-
- // Cleanup view
-// final GraphView curView =
Cytoscape.getCurrentNetworkView();
-
-// if ((curView != null) &&
(curView.equals(Cytoscape.getNullNetworkView()) == false)) {
-// VisualMappingManager vmm =
Cytoscape.getVisualMappingManager();
-// VisualStyle lastVS =
vmm.getVisualStyle(lastVSName);
-// vmm.setVisualStyleForView(curView,lastVS);
-// vmm.setNetworkView(curView);
-// vmm.setVisualStyle(lastVS);
-// Cytoscape.redrawGraph(curView);
-// }
-
-//
Cytoscape.getDesktop().getVizMapperUI().enableListeners(true);
-// }
}
public CySession getCySession() {
@@ -209,7 +149,7 @@
.cytoscapeProperties( cytoscapeProps )
.vizmapProperties( vizmapProps )
.bookmarks( bookmarks )
- .cysession( session )
+ .cysession( cysession )
.pluginFileListMap( pluginFileListMap )
.build();
@@ -233,31 +173,31 @@
while ((zen = zis.getNextEntry()) != null) {
entryName = zen.getName();
- System.out.println("SESSION entry name: " + entryName);
+ //System.out.println("SESSION entry name: " +
entryName);
InputStream tmpIs = new MarkSupportedInputStream(zis);
try {
if (entryName.contains("/plugins/")) {
+ //System.out.println(" extracting plugin
entry");
extractPluginEntry(tmpIs, entryName);
- System.out.println(" extracting plugin
entry");
} else if (entryName.endsWith(CYSESSION)) {
+ //System.out.println(" extracting session
file");
extractSessionState(tmpIs);
- System.out.println(" extracting session
file");
} else if (entryName.endsWith(VIZMAP_PROPS)) {
+ //System.out.println(" extracting vizmap
props");
extractVizmapProps(tmpIs);
- System.out.println(" extracting vizmap
props");
} else if (entryName.endsWith(CY_PROPS)) {
+ //System.out.println(" extracting cytoscape
props");
extractCytoscapeProps(tmpIs);
- System.out.println(" extracting cytoscape
props");
} else if (entryName.endsWith(XGMML_EXT)) {
+ //System.out.println(" extracting network");
extractNetwork(tmpIs, entryName);
- System.out.println(" extracting network");
} else if (entryName.endsWith(BOOKMARKS_FILE)) {
- System.out.println(" extracting bookmarks");
extractBookmarks(tmpIs);
+ //System.out.println(" extracting bookmarks");
} else {
- System.out.println("Unknown entry found in
session zip file!\n" + entryName);
+ logger.warn("Unknown entry found in session zip
file!\n" + entryName);
}
} catch (Exception e) {
@@ -330,34 +270,32 @@
}
private void extractVizmapProps(InputStream is) throws Exception {
- vizmapProps = new Properties();
- vizmapProps.load( is );
+ CyPropertyReader reader = propertyReaderMgr.getReader(is);
+ reader.run(taskMonitor);
+ vizmapProps = (Properties) reader.getProperty();
}
private void extractCytoscapeProps(InputStream is) throws Exception {
- cytoscapeProps = new Properties();
- cytoscapeProps.load( is );
+ CyPropertyReader reader = propertyReaderMgr.getReader(is);
+ reader.run(taskMonitor);
+ cytoscapeProps = (Properties) reader.getProperty();
}
private void extractBookmarks(InputStream is) throws Exception {
- final JAXBContext jaxbContext =
JAXBContext.newInstance(BOOKMARK_PACKAGE_NAME,
-
this.getClass().getClassLoader());
- final Unmarshaller unmarshaller =
jaxbContext.createUnmarshaller();
-
- bookmarks = (Bookmarks) unmarshaller.unmarshal(is);
+ CyPropertyReader reader = propertyReaderMgr.getReader(is);
+ reader.run(taskMonitor);
+ bookmarks = (Bookmarks) reader.getProperty();
}
private void extractSessionState(InputStream is) throws Exception {
- final JAXBContext jaxbContext =
JAXBContext.newInstance(PACKAGE_NAME,
-
this.getClass().getClassLoader());
- final Unmarshaller unmarshaller =
jaxbContext.createUnmarshaller();
-
- session = (Cysession) unmarshaller.unmarshal(is);
+ CyPropertyReader reader = propertyReaderMgr.getReader(is);
+ reader.run(taskMonitor);
+ cysession = (Cysession) reader.getProperty();
}
- private void processNetworks() throws JAXBException, IOException,
Exception {
+ private void processNetworks() throws Exception {
- for (Network curNet : session.getNetworkTree().getNetwork())
+ for (Network curNet : cysession.getNetworkTree().getNetwork())
netMap.put(curNet.getId(), curNet);
walkTree(netMap.get(NETWORK_ROOT), null);
@@ -368,10 +306,9 @@
*
* @param currentNetwork
* @param parent
- * @throws JAXBException
* @throws IOException
*/
- private void walkTree(final Network currentNetwork, final CyNetwork
parent) throws JAXBException, IOException {
+ private void walkTree(final Network currentNetwork, final CyNetwork
parent) throws Exception {
for (Child child : currentNetwork.getChild() ) {
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterFactoryImpl.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterFactoryImpl.java
2010-10-06 21:21:08 UTC (rev 22175)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterFactoryImpl.java
2010-10-07 00:35:17 UTC (rev 22176)
@@ -12,24 +12,38 @@
private final CyFileFilter thisFilter;
private final CyFileFilter xgmmlFilter;
- private final CyNetworkViewWriterManager nvwm;
+ private final CyFileFilter bookmarksFilter;
+ private final CyFileFilter cysessionFilter;
+ private final CyFileFilter propertiesFilter;
+ private final CyNetworkViewWriterManager networkViewWriterMgr;
private final PropertyWriterManager propertyWriterMgr;
- private final CyFileFilter bookmarksFilter;
private OutputStream outputStream;
private CySession session;
- public SessionWriterFactoryImpl(CyFileFilter thisFilter, CyFileFilter
xgmmlFilter, CyFileFilter bookmarksFilter, CyNetworkViewWriterManager nvwm,
PropertyWriterManager propertyWriterMgr) {
+
+
+ public SessionWriterFactoryImpl(final CyFileFilter thisFilter,
+ final CyFileFilter xgmmlFilter,
+ final CyFileFilter bookmarksFilter,
+ final CyFileFilter cysessionFilter,
+ final CyFileFilter propertiesFilter,
+ final CyNetworkViewWriterManager
networkViewWriterMgr,
+ final PropertyWriterManager
propertyWriterMgr) {
this.thisFilter = thisFilter;
this.xgmmlFilter = xgmmlFilter;
this.bookmarksFilter = bookmarksFilter;
- this.nvwm = nvwm;
+ this.cysessionFilter = cysessionFilter;
+ this.propertiesFilter = propertiesFilter;
+ this.networkViewWriterMgr = networkViewWriterMgr;
this.propertyWriterMgr = propertyWriterMgr;
}
@Override
public CyWriter getWriter() {
- return new SessionWriterImpl(outputStream, session, nvwm,
propertyWriterMgr, xgmmlFilter, bookmarksFilter);
+ return new SessionWriterImpl(outputStream, session,
networkViewWriterMgr,
+ propertyWriterMgr, xgmmlFilter,
bookmarksFilter,
+ cysessionFilter, propertiesFilter);
}
@Override
Modified:
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterImpl.java
===================================================================
---
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterImpl.java
2010-10-06 21:21:08 UTC (rev 22175)
+++
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterImpl.java
2010-10-07 00:35:17 UTC (rev 22176)
@@ -161,14 +161,25 @@
private final PropertyWriterManager propertyWriterMgr;
private final CyFileFilter xgmmlFilter;
private final CyFileFilter bookmarksFilter;
+ private final CyFileFilter cysessionFilter;
+ private final CyFileFilter propertiesFilter;
- public SessionWriterImpl(final OutputStream outputStream, final
CySession session, final CyNetworkViewWriterManager networkViewWriterMgr,
PropertyWriterManager propertyWriterMgr, CyFileFilter xgmmlFilter, CyFileFilter
bookmarksFilter) {
+ public SessionWriterImpl(final OutputStream outputStream,
+ final CySession session,
+ final CyNetworkViewWriterManager
networkViewWriterMgr,
+ final PropertyWriterManager propertyWriterMgr,
+ final CyFileFilter xgmmlFilter,
+ final CyFileFilter bookmarksFilter,
+ final CyFileFilter cysessionFilter,
+ final CyFileFilter propertiesFilter) {
this.outputStream = outputStream;
this.session = session;
this.networkViewWriterMgr = networkViewWriterMgr;
this.propertyWriterMgr = propertyWriterMgr;
this.xgmmlFilter = xgmmlFilter;
this.bookmarksFilter = bookmarksFilter;
+ this.cysessionFilter = cysessionFilter;
+ this.propertiesFilter = propertiesFilter;
// For now, session ID is time and date
final DateFormat df = new SimpleDateFormat("yyyy_MM_dd-HH_mm");
@@ -203,100 +214,33 @@
/**
- * Utility to replace invalid chars in the XGMML file name.<br>
- *
- * @param fileName
- * Original file name directly taken from the title.
- * @return Modified file name without invalid chars.
- *
- */
- private String getValidFileName(String fileName) {
-
- String newFileName = fileName;
- Integer i = 0;
- for(Character ch : INVALID_CHAR)
- newFileName = newFileName.replace(ch.toString(),
(i++).toString());
-
- return newFileName;
- }
-
- /**
- * Initialize objects for the marshaller.
- *
- * @throws JAXBException
- */
- private void initObjectsForDataBinding() throws JAXBException {
- /*
- factory = new ObjectFactory();
-
- cysession = factory.createCysession();
- cysession.setSessionNote(sessionNote);
-
- tree = factory.createNetworkTree();
- sState = factory.createSessionState();
- setDesktopStates();
- cysession.setSessionState(sState);
- cytoPanels = getCytoPanelStates();
- netList = tree.getNetwork();
- sState.setPlugins(plugins);
- sState.setCytopanels(cytoPanels);
- //sState.setServer(getServerState());
- */
- }
-
- private void setDesktopStates() throws JAXBException {
-
- /*
- DesktopSize dSize = factory.createDesktopSize();
- NetworkFrames frames = factory.createNetworkFrames();
- Component[] networkFrames =
Cytoscape.getDesktop().getNetworkViewManager().getDesktopPane()
- .getComponents();
-
- for (int i = 0; i < networkFrames.length; i++) {
- if(networkFrames[i] instanceof JInternalFrame) {
- JInternalFrame networkFrame = (JInternalFrame)
networkFrames[i];
- NetworkFrame frame =
factory.createNetworkFrame();
- frame.setFrameID(networkFrame.getTitle());
-
frame.setWidth(BigInteger.valueOf(networkFrame.getWidth()));
-
frame.setHeight(BigInteger.valueOf(networkFrame.getHeight()));
-
frame.setX(BigInteger.valueOf(networkFrame.getX()));
-
frame.setY(BigInteger.valueOf(networkFrame.getY()));
- frames.getNetworkFrame().add(frame);
- }
- }
-
-
dSize.setHeight(BigInteger.valueOf(Cytoscape.getDesktop().getSize().height));
-
dSize.setWidth(BigInteger.valueOf(Cytoscape.getDesktop().getSize().width));
-
- Desktop desktop = factory.createDesktop();
- desktop.setDesktopSize(dSize);
- desktop.setNetworkFrames(frames);
- sState.setDesktop(desktop);
- */
- }
-
- /**
* Writes the vizmap.props file to the session zip.
*/
- private void zipVizmapProps() throws IOException {
+ private void zipVizmapProps() throws Exception {
zos.putNextEntry(new ZipEntry(sessionDir + VIZMAP_FILE) );
- session.getVizmapProperties().store(zos, "VizMap Properties
File");
+ CyWriter propertiesWriter =
propertyWriterMgr.getWriter(session.getVizmapProperties(), propertiesFilter,
zos );
+ propertiesWriter.run(taskMonitor);
zos.closeEntry();
+
+ propertiesWriter = null;
}
/**
* Writes the cytoscape.props file to the session zip.
*/
- private void zipCytoscapeProps() throws IOException {
+ private void zipCytoscapeProps() throws Exception {
zos.putNextEntry(new ZipEntry(sessionDir + CYPROP_FILE) );
- session.getCytoscapeProperties().store(zos, "Cytoscape Property
File");
+ CyWriter propertiesWriter =
propertyWriterMgr.getWriter(session.getCytoscapeProperties(), propertiesFilter,
zos );
+ propertiesWriter.run(taskMonitor);
zos.closeEntry();
+
+ propertiesWriter = null;
}
/**
@@ -343,30 +287,14 @@
* @throws Exception
*/
private void zipCySession() throws Exception {
- final JAXBContext jc = JAXBContext.newInstance(packageName,
this.getClass().getClassLoader());
-
- initObjectsForDataBinding();
- cysession.setId(sessionDirName);
-
- // Document version. Maybe used in the future.
- cysession.setDocumentVersion(cysessionVersion);
-
- getNetworkTree();
- cysession.setNetworkTree(tree);
-
- Marshaller m = jc.createMarshaller();
- m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
- // TODO wtf?
- //m.setProperty("com.sun.xml.bind.namespacePrefixMapper",
- // new NamespacePrefixMapperForCysession());
-
zos.putNextEntry(new ZipEntry(sessionDir + CYSESSION_FILE_NAME)
);
- m.marshal(cysession, zos);
+ CyWriter cysessionWriter =
propertyWriterMgr.getWriter(session.getCysession(), cysessionFilter, zos );
+ cysessionWriter.run(taskMonitor);
zos.closeEntry();
- m = null;
- cysession = null;
+
+ cysessionWriter = null;
}
/**
@@ -411,538 +339,21 @@
}
/**
- * Get information about the current session status.
+ * Utility to replace invalid chars in the XGMML file name.<br>
*
- * This includes the following: 1. List of networks opened/created by
the
- * user. 2. Status of the network. 3. relationship between
- * network-attributes Build GML file into xml
+ * @param fileName
+ * Original file name directly taken from the title.
+ * @return Modified file name without invalid chars.
*
- * Extract current NetworkPanel state for saving.
*/
- private void getNetworkTree() throws Exception {
- /*
- // Tree table storeed in the Network Panel
- JTreeTable treeTable;
-
- // Get network panel
- CytoscapeDesktop cyDesktop = Cytoscape.getDesktop();
- NetworkPanel netPanel = cyDesktop.getNetworkPanel();
-
- // Get list of networks
- treeTable = netPanel.getTreeTable();
-
- Iterator itr = networks.iterator();
-
- // Visit each node in the tree
- while (itr.hasNext()) {
- CyNetwork network = (CyNetwork) itr.next();
- Long networkID = network.getSUID();
- String networkName =
network.attrs().get("title",String.class);
-
- networkMap.put(networkName, networkID);
- }
-
- if (treeTable != null) {
- // Extract root node in the tree
- DefaultMutableTreeNode root = (DefaultMutableTreeNode)
netPanel.getNetworkNode(TREE_ROOT);
-
- walkTree(root);
- }
- */
+ private String getValidFileName(String fileName) {
+
+ String newFileName = fileName;
+ Integer i = 0;
+ for(Character ch : INVALID_CHAR)
+ newFileName = newFileName.replace(ch.toString(),
(i++).toString());
+
+ return newFileName;
}
- /**
- * Visit all tree node and save the status in the model.
- *
- * @param node
- * @throws JAXBException
- */
- private void walkTree(DefaultMutableTreeNode node) throws JAXBException
{
- /*
- // Check number of children for this node.
- int childCount = node.getChildCount();
-
- // Create Network object for this node.
- String fileName = node.getUserObject().toString() + XGMML_EXT;
- Network curNode = factory.createNetwork();
- curNode.setFilename(getValidFileName(fileName));
- curNode.setId(node.getUserObject().toString());
-
- CyNetwork curNet = Cytoscape.getNetwork(
networkMap.get(node.getUserObject().toString()));
- GraphView curView = viewMap.get(curNet.getSUID());
-
- if (!node.getUserObject().toString().equals("Network Root")) {
- String visualStyleName = null;
-
- if (curView != null) {
- VisualStyle curVS =
Cytoscape.getVisualMappingManager().getVisualStyleForView( curView );
-
- if (curVS != null) {
- visualStyleName = curVS.getName();
- }
- }
-
- if (visualStyleName == null) {
- visualStyleName = DEFAULT_VS_NAME;
- }
-
- curNode.setVisualStyle(visualStyleName);
- } else {
- curNode.setVisualStyle(DEFAULT_VS_NAME);
- }
-
- if
(Cytoscape.getNetworkView(networkMap.get(node.getUserObject().toString())) ==
Cytoscape
-
.getNullNetworkView()) {
- curNode.setViewAvailable(false);
- } else {
- curNode.setViewAvailable(true);
- }
-
- Parent parent = null;
- parent = factory.createParent();
-
- if (node.getParent() == null) {
- parent.setId("NULL");
- curNode.setParent(parent);
- } else {
- // Set current network as the parent of child networks.
- DefaultMutableTreeNode curParent =
(DefaultMutableTreeNode) node.getParent();
- parent.setId(curParent.getUserObject().toString());
- curNode.setParent(parent);
- }
-
- List<Child> children = curNode.getChild();
-
- for (int i = 0; i < childCount; i++) {
- // Exctract a network from the Network Panel.
- DefaultMutableTreeNode child = (DefaultMutableTreeNode)
node.getChildAt(i);
-
- // Create Child object
- Child childNetwork = factory.createChild();
- childNetwork.setId(child.getUserObject().toString());
- children.add(childNetwork);
-
- if (child.isLeaf()) {
- // Reached to the leaf of network tree.
- // Need to create leaf node here.
- Network leaf = factory.createNetwork();
- String childFileName =
child.getUserObject().toString() + XGMML_EXT;
-
leaf.setFilename(getValidFileName(childFileName));
- leaf.setId(child.getUserObject().toString());
-
- GraphView leafView =
Cytoscape.getNetworkView(networkMap.get(child.getUserObject().toString()));
-
- String leafVisualStyleName = null;
-
- if (leafView != Cytoscape.getNullNetworkView())
{
- VisualStyle leafVS =
Cytoscape.getVisualMappingManager().getVisualStyleForView( leafView );
-
- if (leafVS != null) {
- leafVisualStyleName =
leafVS.getName();
- }
- }
-
- if (leafVisualStyleName == null) {
- leafVisualStyleName = DEFAULT_VS_NAME;
- }
-
- leaf.setVisualStyle(leafVisualStyleName);
-
- Long targetID =
networkMap.get(child.getUserObject().toString());
-
- Parent tempParent = factory.createParent();
- tempParent.setId(curNode.getId());
- leaf.setParent(tempParent);
-
- CyNetwork targetNetwork =
Cytoscape.getNetwork(targetID);
- GraphView curNetworkView =
Cytoscape.getNetworkView(targetID);
-
- if (curNetworkView ==
Cytoscape.getNullNetworkView()) {
- leaf.setViewAvailable(false);
- } else {
- leaf.setViewAvailable(true);
- }
-
- //
- // This is for Metanode. Will be used in the
future...
- //
- // factory.createViewableNodes(); while
(it.hasNext()) { String
- // viewableID = ((CyNode) it.next())
.getSUID(); Node
- // viewableNode = factory.createNode();
- // viewableNode.setId(viewableID);
- // vn.getNode().add(viewableNode); }
leaf.setViewableNodes(vn);
- //
-
- //
- // Add selected & hidden nodes/edges foe leaf
nodes.
- //
- SelectedNodes sn = (SelectedNodes)
getSelectedObjects(NODE, targetNetwork);
-
- if (sn != null) {
- leaf.setSelectedNodes(sn);
- }
-
- SelectedEdges se = (SelectedEdges)
getSelectedObjects(EDGE, targetNetwork);
-
- if (se != null) {
- leaf.setSelectedEdges(se);
- }
-
- HiddenNodes hn = (HiddenNodes)
getHiddenObjects(NODE, curNetworkView);
- HiddenEdges he = (HiddenEdges)
getHiddenObjects(EDGE, curNetworkView);
-
- if (hn != null) {
- leaf.setHiddenNodes(hn);
- }
-
- if (he != null) {
- leaf.setHiddenEdges(he);
- }
-
- netList.add(leaf);
- } else {
- walkTree(child);
- }
- }
-
- //
- // Add hidden/selected nodes and edges
- //
- Long targetID = networkMap.get(node.getUserObject().toString());
- CyNetwork targetNetwork = Cytoscape.getNetwork(targetID);
-
- //
- // This is for metanode. will be used in the future.
- //
- // if (curNode.getId() != "Network Root") { Iterator it =
- // factory.createViewableNodes(); while (it.hasNext()) {
- //
- // String viewableID = ((CyNode) it.next()).getSUID(); Node
- // viewableNode = factory.createNode();
viewableNode.setId(viewableID);
- // vn.getNode().add(viewableNode); }
curNode.setViewableNodes(vn); }
- //
- SelectedNodes sn = (SelectedNodes) getSelectedObjects(NODE,
targetNetwork);
-
- if (sn != null) {
- curNode.setSelectedNodes(sn);
- }
-
- SelectedEdges se = (SelectedEdges) getSelectedObjects(EDGE,
targetNetwork);
-
- if (se != null) {
- curNode.setSelectedEdges(se);
- }
-
- // Extract hidden nodes and edges
- GraphView curNetworkView = Cytoscape.getNetworkView(targetID);
-
- if (curNetworkView != Cytoscape.getNullNetworkView()) {
- HiddenNodes hn = (HiddenNodes) getHiddenObjects(NODE,
curNetworkView);
- HiddenEdges he = (HiddenEdges) getHiddenObjects(EDGE,
curNetworkView);
-
- if (hn != null) {
- curNode.setHiddenNodes(hn);
- }
-
- if (he != null) {
- curNode.setHiddenEdges(he);
- }
- }
-
- // Add current network to the list.
- netList.add(curNode);
- */
- }
-
- /**
- *
- * @param type
- * Type of the object (node or edge)
- * @param view
- * Current network view.
- * @return JAXB object (HiddenNodes or HiddenEdges)
- * @throws JAXBException
- */
- private Object getHiddenObjects(int type/*, GraphView view*/) throws
JAXBException {
- /*
- // List-up all hidden nodes
- if (type == NODE) {
- HiddenNodes hn = factory.createHiddenNodes();
- List<Node> hNodeList = hn.getNode();
-
- CyNode targetNode = null;
- String curNodeName = null;
-
- for (Iterator i = view.getNodeViewsIterator();
i.hasNext();) {
- NodeView nview = (NodeView) i.next();
-
- // Check if the node is hidden or not.
- // If it's hidden, store in the session file.
- if (view.showGraphObject(nview)) {
- targetNode = (CyNode) nview.getNode();
- curNodeName =
Integer.toString(targetNode.getIndex());
-
- Node tempNode = factory.createNode();
- tempNode.setId(curNodeName);
-
- hNodeList.add(tempNode);
-
- // Keep them hidden...
- view.hideGraphObject(nview);
- }
- }
-
- if (hn.getNode().size() != 0) {
- return hn;
- } else {
- return null;
- }
- } else if (type == EDGE) {
- HiddenEdges he = factory.createHiddenEdges();
- List<Edge> hEdgeList = he.getEdge();
-
- CyEdge targetEdge = null;
- String curEdgeName = null;
-
- for (Iterator i = view.getEdgeViewsIterator();
i.hasNext();) {
- EdgeView eview = (EdgeView) i.next();
-
- // Check if the edge is hidden or not.
- // If it's hidden, store in the session file.
- if (view.showGraphObject(eview)) {
- targetEdge = (CyEdge) eview.getEdge();
- curEdgeName =
Integer.toString(targetEdge.getIndex());
-
- Edge tempEdge = factory.createEdge();
- tempEdge.setId(curEdgeName);
-
tempEdge.setSource(Integer.toString(targetEdge.getSource().getIndex()));
-
tempEdge.setTarget(Integer.toString(targetEdge.getTarget().getIndex()));
-
tempEdge.setInteraction(targetEdge.attrs().get(Semantics.INTERACTION,
String.class));
- hEdgeList.add(tempEdge);
- // Keep them hidden...
- view.hideGraphObject(eview);
- }
- }
-
- if (he.getEdge().size() != 0) {
- return he;
- } else {
- return null;
- }
- }
-
- */
- return null;
- }
-
- /**
- * List all selected nodes and edges in the session file.
- *
- * @param type
- * Tyoe if object (node or edge)
- * @param curNet
- * Current network
- * @return
- * @throws JAXBException
- */
- private Object getSelectedObjects(int type, CyNetwork curNet) throws
JAXBException {
- /*
- if (type == NODE) {
-
- List<CyNode> selectedNodes =
CyDataTableUtil.getNodesInState(curNet,"selected",true);
-
- if ( selectedNodes.size() <= 0 )
- return null;
-
- SelectedNodes sn = factory.createSelectedNodes();
- List<Node> sNodeList = sn.getNode();
-
- for ( CyNode targetNode : selectedNodes ) {
- String curNodeName =
Integer.toString(targetNode.getIndex());
- Node tempNode = factory.createNode();
- tempNode.setId(curNodeName);
-
- sNodeList.add(tempNode);
- }
- return sn;
-
- } else if (type == EDGE) {
-
- List<CyEdge> selectedEdges =
CyDataTableUtil.getEdgesInState(curNet,"selected",true);
-
- if (selectedEdges.size() <= 0)
- return null;
-
- SelectedEdges se = factory.createSelectedEdges();
- List<Edge> sEdgeList = se.getEdge();
-
- for ( CyEdge targetEdge : selectedEdges ) {
- String curEdgeName =
Integer.toString(targetEdge.getIndex());
- Edge tempEdge = factory.createEdge();
- tempEdge.setId(curEdgeName);
-
tempEdge.setSource(Integer.toString(targetEdge.getSource().getIndex()));
-
tempEdge.setTarget(Integer.toString(targetEdge.getTarget().getIndex()));
-
tempEdge.setInteraction(targetEdge.attrs().get(Semantics.INTERACTION,String.class));
- sEdgeList.add(tempEdge);
- }
-
- return se;
- }
-
- */
- return null;
- }
-
- /**
- * Extract states of the 3 Cytopanels.
- *
- * @return
- * @throws JAXBException
- *
- * Note: We will store the states of plugins near future. The location
of
- * those states will be stored here.
- */
- private Cytopanels getCytoPanelStates() throws JAXBException {
- /*
- Cytopanels cytoPanels = factory.createCytopanels();
- List<Cytopanel> cytoPanelList = cytoPanels.getCytopanel();
-
- String[] cytopanelStates = new String[CYTOPANEL_COUNT + 1];
- int[] selectedPanels = new int[CYTOPANEL_COUNT + 1];
-
- // Extract states of 3 panels.
- cytopanelStates[1] =
Cytoscape.getDesktop().getCytoPanel(SwingConstants.WEST).getState()
- .toString();
- selectedPanels[1] =
Cytoscape.getDesktop().getCytoPanel(SwingConstants.WEST)
- .getSelectedIndex();
-
- cytopanelStates[2] =
Cytoscape.getDesktop().getCytoPanel(SwingConstants.SOUTH).getState()
- .toString();
- selectedPanels[2] =
Cytoscape.getDesktop().getCytoPanel(SwingConstants.SOUTH)
- .getSelectedIndex();
-
- cytopanelStates[3] =
Cytoscape.getDesktop().getCytoPanel(SwingConstants.EAST).getState()
- .toString();
- selectedPanels[3] =
Cytoscape.getDesktop().getCytoPanel(SwingConstants.EAST)
- .getSelectedIndex();
-
- for (int i = 1; i < (CYTOPANEL_COUNT + 1); i++) {
- Panels internalPanels = factory.createPanels();
- List<Panel> iPanelList = internalPanels.getPanel();
- Panel iPanel = factory.createPanel();
- iPanel.setId("test");
-
- iPanelList.add(iPanel);
-
- Cytopanel curCp = factory.createCytopanel();
- curCp.setId("CytoPanel" + i);
- curCp.setPanelState(cytopanelStates[i]);
-
curCp.setSelectedPanel(Integer.toString(selectedPanels[i]));
- curCp.setPanels(internalPanels);
- cytoPanelList.add(curCp);
- }
-
- return cytoPanels;
- */
- return null;
- }
-
- /**
- * Set session note.<br>
- * Session note can be anything, it is just like a memo pad for the
session.
- * NOTE: session note should be set before calling writeSessionToDisk().
- *
- * @param note
- * Session note string.
- * @uml.property name="sessionNote"
- */
- public void setSessionNote(String note) {
- this.sessionNote = note;
- }
-
- // TODO
- /**
- * Check loaded ontologies and save those states in cysession.xml.
- *
- * @return Server object
- private Server getServerState() {
- Server server = factory.createServer();
- OntologyServer os = factory.createOntologyServer();
-
- Set<String> ontoNames =
Cytoscape.getOntologyServer().getOntologyNames();
- Map<String, URL> sources =
Cytoscape.getOntologyServer().getOntologySources();
-
- for (String name : ontoNames) {
- Ontology onto = factory.createOntology();
- onto.setName(name);
- onto.setHref(sources.get(name).toString());
- os.getOntology().add(onto);
- }
-
- server.setOntologyServer(os);
-
- return server;
- }
- */
}
-
-
-class NamespacePrefixMapperForCysession extends NamespacePrefixMapper {
- /**
- * Returns a preferred prefix for the given namespace URI.
- *
- * This method is intended to be overrided by a derived class.
- *
- * @param namespaceUri
- * The namespace URI for which the prefix needs to be found.
- * Never be null. "" is used to denote the default namespace.
- * @param suggestion
- * When the content tree has a suggestion for the prefix to
the
- * given namespaceUri, that suggestion is passed as a
parameter.
- * Typicall this value comes from the QName.getPrefix to
show the
- * preference of the content tree. This parameter may be
null,
- * and this parameter may represent an already occupied
prefix.
- * @param requirePrefix
- * If this method is expected to return non-empty prefix.
When
- * this flag is true, it means that the given namespace URI
- * cannot be set as the default namespace.
- *
- * @return null if there's no prefered prefix for the namespace URI. In
this
- * case, the system will generate a prefix for you.
- *
- * Otherwise the system will try to use the returned prefix, but
generally
- * there's no guarantee if the prefix will be actually used or not.
- *
- * return "" to map this namespace URI to the default namespace. Again,
- * there's no guarantee that this preference will be honored.
- *
- * If this method returns "" when requirePrefix=true, the return value
will
- * be ignored and the system will generate one.
- */
- public String getPreferredPrefix(final String namespaceUri, final
String suggestion,
- boolean requirePrefix) {
- // I want this namespace to be mapped to "xsi"
- if
("http://www.w3.org/2001/XMLSchema-instance".equals(namespaceUri))
- return "xsi";
-
- // Xlink
- if ("http://www.w3.org/1999/xlink".equals(namespaceUri)) {
- return "xlink";
- }
-
- // otherwise I don't care. Just use the default suggestion,
whatever it
- // may be.
- return suggestion;
- }
-
- /**
- * DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
- public String[] getPreDeclaredNamespaceUris() {
- return new String[] {
- "http://www.w3.org/2001/XMLSchema-instance",
"http://www.w3.org/1999/xlink",
- };
- }
-}
Modified:
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
---
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2010-10-06 21:21:08 UTC (rev 22175)
+++
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
2010-10-07 00:35:17 UTC (rev 22176)
@@ -193,6 +193,14 @@
ref="cySessionReaderManager" />
</osgi:set>
+ <osgi:set id="propertyReaderFactories"
+ interface="org.cytoscape.io.read.InputStreamTaskFactory"
+ cardinality="0..N">
+ <osgi:listener bind-method="addInputStreamTaskFactory"
+ unbind-method="removeInputStreamTaskFactory"
+ ref="cyPropertyReaderManager" />
+ </osgi:set>
+
<osgi:set id="viewWriterFactories"
interface="org.cytoscape.io.write.ViewWriterFactory"
cardinality="0..N">
Modified:
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2010-10-06 21:21:08 UTC (rev 22175)
+++ core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2010-10-07 00:35:17 UTC (rev 22176)
@@ -194,7 +194,7 @@
</constructor-arg>
</bean>
- <bean id="propertiesFilter"
class="org.cytoscape.io.internal.CyFileFilterImpl">
+ <bean id="propertiesFilter"
class="org.cytoscape.io.internal.read.properties.PropertiesFileFilter">
<constructor-arg index="0">
<set>
<value>props</value>
@@ -310,6 +310,7 @@
class="org.cytoscape.io.internal.read.session.SessionReaderFactoryImpl">
<constructor-arg ref="cysFilter" />
<constructor-arg ref="cyNetworkViewReaderManager" />
+ <constructor-arg ref="cyPropertyReaderManager" />
</bean>
<bean id="cysessionReaderFactory"
@@ -332,6 +333,8 @@
<constructor-arg ref="cysFilter" />
<constructor-arg ref="xgmmlFilter" />
<constructor-arg ref="bookmarksFilter" />
+ <constructor-arg ref="cysessionFilter" />
+ <constructor-arg ref="propertiesFilter" />
<constructor-arg ref="networkViewWriterManager" />
<constructor-arg ref="propertyWriterManager" />
</bean>
--
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.