|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.yworks.yfiles.server.graphml.support.AbstractGraphRoundtripSupport
com.yworks.yfiles.server.graphml.support.GraphRoundtripSupport
Utility class that helps during Graph roundtrips to the client. This instance can be used to create a temporary graph, receive it from a client's request and send it back to the client.
| Nested Class Summary | |
static class |
GraphRoundtripSupport.RoundtripGraphMLLayoutGraphIOHandler
A special GraphML I/O handler implementation that adds support for roundtrips with a yFiles FLEX client. |
| Field Summary | |
static java.lang.String |
EDGE_LABELS_DPKEY
The DataMap key that is used to bind Lists of yFiles FLEX client compatibility
Label instances. |
static java.lang.String |
EDGE_STYLE_DPKEY
The DataMap key that is used to bind the yFiles FLEX client compatibility IEdgeStyle instances. |
static java.lang.String |
NODE_LABELS_DPKEY
The DataMap key that is used to bind Lists of yFiles FLEX client compatibility
Label instances. |
static java.lang.String |
NODE_STYLE_DPKEY
The DataMap key that is used to bind the yFiles FLEX client compatibility INodeStyle instances. |
static java.lang.String |
SHARED_DATA_DPKEY
|
| Fields inherited from class com.yworks.yfiles.server.graphml.support.AbstractGraphRoundtripSupport |
EDGE_2_ID_DPKEY, mappers, NODE_2_ID_DPKEY, objectMappers, PARAM_GRAPH, RESPONSE_DOCUMENT_TAG, USERTAGS_DPKEY |
| Constructor Summary | |
GraphRoundtripSupport()
|
|
| Method Summary | |
void |
addDeserializer(DeserializationHandler deserializer)
Add a deserializer instance that will be registered with the GraphMLHandler in addRegisteredHandlers(y.io.graphml.GraphMLHandler). |
protected void |
addRegisteredHandlers(GraphMLHandler handler)
All default SerializationHandler and DeserializationHandler instances as well as those
added via addSerializer(y.io.graphml.output.SerializationHandler)
or addDeserializer(y.io.graphml.input.DeserializationHandler) are added to the handler for reading and
writing the yFiles FLEX client's GraphML format.
|
void |
addSerializer(SerializationHandler serializer)
Add a serializer instance that will be registered with the GraphMLHandler in addRegisteredHandlers(y.io.graphml.GraphMLHandler). |
protected void |
configureHandler(GraphMLLayoutGraphIOHandler handler)
Configures the provided handler. |
protected void |
configureRoundtripGraph(LayoutGraph layoutGraph)
Called by createRoundtripGraph() to configure the created graph instance.
|
protected GraphMLLayoutGraphIOHandler |
createHandler()
Creates the handler that will be used for the IO. |
LayoutGraph |
createRoundtripGraph()
Creates the graph that should be used for the roundtrip. |
protected SharedDataOutputHandler |
createSharedDataOutputHandler()
Create the output handler that writes shared elements. |
YDimension |
getDefaultNodeSize()
The default node size that will be used for newly created nodes of a layout graph that has been created using createRoundtripGraph(). |
GraphMLVersion |
getGraphMLVersion()
The version string that will be used for writing the version attribute of the GraphML element. |
ISharedInstanceProvider |
getSharedInstanceProvider()
|
boolean |
isAutoReadMapperData()
Whether mapped data contained in the GraphML data should be automatically deserialized to a data map and registered with the graph. |
boolean |
isAutoWriteMapperData()
Whether mapped data registered with the graph as a data provider should be automatically serialized. |
boolean |
isDocumentFragmentMode()
Whether the style and label elements sent from the client will be parsed into and written from DocumentFragments. |
boolean |
isFoldingEnabled()
Whether support for folded graphs is enabled. |
boolean |
isIgnoreMissingDeserializer()
Returns whether to ignore if no DeserializationHandler can be found during parsing.
|
boolean |
isLocalViewMode()
If folding is enabled, this property determines
whether only the current expanded/collapsed state is sent to the client,
instead of the complete model. |
boolean |
isMapLabelModels()
Whether client-side label models will be mapped to server-side label models when reading and vice-verse when writing the graph. |
boolean |
isParseGraphMLVersion()
Whether to set the graphMLVersionString property to the last parsed version String, thus always
writing the GraphML version string that was most recently parsed. |
boolean |
readGraph(HttpServletRequest request,
Graph graph)
If the request contains the AbstractGraphRoundtripSupport.PARAM_GRAPH parameter, the parameter value is used for updating the graph
instance currently stored in the session.
|
void |
readGraph(java.io.InputStream is,
Graph graph)
Reads the graph from the given stream using the current handler. |
void |
readGraph(java.net.URL url,
Graph graph)
Reads the graph from the given url using the current handler. |
void |
sendGraph(Graph graph,
HttpServletResponse response)
Send the current graph to the client in GraphML format using UTF-8 encoding. |
void |
sendGraph(Graph graph,
java.io.OutputStream os,
java.lang.String outputEncoding)
Writes the current graph to the stream in GraphML format using the provided encoding. |
void |
setAutoReadMapperData(boolean autoReadMapperData)
Set whether mapped data contained in the GraphML data should be automatically deserialized to a data map and registered with the graph. |
void |
setAutoWriteMapperData(boolean autoWriteMapperData)
Set whether mapped data registered with the graph as a data provider should be automatically serialized. |
void |
setDefaultNodeSize(YDimension defaultNodeSize)
Deprecated. Use StyledLayoutGraph and it's
StyledLayoutGraph.setDefaultNodeSize(y.geom.YDimension)
method instead. |
void |
setDocumentFragmentMode(boolean documentFragmentMode)
Whether the style and label elements sent from the client will be parsed into and written from DocumentFragments. |
void |
setFoldingEnabled(boolean foldingEnabled)
Whether support for folded graphs is enabled. |
void |
setGraphMLVersion(GraphMLVersion graphMLVersion)
Set the version string that will be used for writing the version attribute of the GraphML element. |
void |
setIgnoreMissingDeserializer(boolean ignoreMissingDeserializer)
Sets whether to ignore if no DeserializationHandler can be found during parsing.
|
protected void |
setLocalRoot(HttpServletRequest request,
Graph graph)
Uses the localRoot request parameter (if available), to
set the local root node.
|
void |
setLocalViewMode(boolean localViewMode)
If folding is enabled, this property determines
whether only the current expanded/collapsed state is sent to the client,
instead of the complete model. |
void |
setMapLabelModels(boolean mapLabelModels)
Set whether the IO should be configured to map client-side label models to server-side label models. |
void |
setParseGraphMLVersion(boolean parseGraphMLVersion)
Whether to set the graphMLVersion property to the last parsed version String, thus always writing the
GraphML version string that was most recently parsed. |
void |
setSharedInstanceProvider(ISharedInstanceProvider sharedInstanceProvider)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public static final java.lang.String NODE_STYLE_DPKEY
DataMap key that is used to bind the yFiles FLEX client compatibility INodeStyle instances. If isDocumentFragmentMode() is
true, xml document fragments will be contained in the data provider instead.
isDocumentFragmentMode(),
Constant Field Valuespublic static final java.lang.String EDGE_STYLE_DPKEY
DataMap key that is used to bind the yFiles FLEX client compatibility IEdgeStyle instances. If isDocumentFragmentMode() is
true, xml document fragments will be contained in the data provider instead.
isDocumentFragmentMode(),
Constant Field Valuespublic static final java.lang.String NODE_LABELS_DPKEY
DataMap key that is used to bind Lists of yFiles FLEX client compatibility
Label instances. If isDocumentFragmentMode() is
true, xml document fragments will be contained in the data provider instead.
isDocumentFragmentMode(),
Constant Field Valuespublic static final java.lang.String EDGE_LABELS_DPKEY
DataMap key that is used to bind Lists of yFiles FLEX client compatibility
Label instances. If isDocumentFragmentMode() is
true, xml document fragments will be contained in the data provider instead.
isDocumentFragmentMode(),
Constant Field Valuespublic static final java.lang.String SHARED_DATA_DPKEY
| Constructor Detail |
public GraphRoundtripSupport()
| Method Detail |
public boolean isFoldingEnabled()
If folding support is enabled, a FoldedLayoutGraph instance
will be created by createRoundtripGraph(), and the GraphML I/O
support will be configured accordingly.
public void setFoldingEnabled(boolean foldingEnabled)
If folding support is enabled, a FoldedLayoutGraph instance
will be created by createRoundtripGraph(), and the GraphML I/O
support will be configured accordingly.
public boolean isLocalViewMode()
folding is enabled, this property determines
whether only the current expanded/collapsed state is sent to the client,
instead of the complete model.
public void setLocalViewMode(boolean localViewMode)
folding is enabled, this property determines
whether only the current expanded/collapsed state is sent to the client,
instead of the complete model.
public boolean isAutoReadMapperData()
Note that deserialization of complex data will only work if an appropriate DeserializationHandler
instance is registered.
The default value is true.
public void setAutoReadMapperData(boolean autoReadMapperData)
Note that deserialization of complex data will only work if an appropriate DeserializationHandler
instance is registered.
public boolean isAutoWriteMapperData()
Note that serialization of complex data will only work if an appropriate SerializationHandler
instance is registered.
The default value is true.
public void setAutoWriteMapperData(boolean autoWriteMapperData)
Note that serialization of complex data will only work if an appropriate SerializationHandler
instance is registered.
public boolean isDocumentFragmentMode()
DocumentFragments. If false the container objects from package com.yworks.yfiles.server.graphml.flexio.data will be used. The default value is false.
FlexIOTools,
NODE_STYLE_DPKEY,
EDGE_STYLE_DPKEY,
NODE_LABELS_DPKEY,
EDGE_LABELS_DPKEYpublic void setDocumentFragmentMode(boolean documentFragmentMode)
DocumentFragments. If false the container objects from package com.yworks.yfiles.server.graphml.flexio.data will be used. The default value is false.
FlexIOTools,
NODE_STYLE_DPKEY,
EDGE_STYLE_DPKEY,
NODE_LABELS_DPKEY,
EDGE_LABELS_DPKEYpublic void setMapLabelModels(boolean mapLabelModels)
false, layout calculations won't change the client's label positions.
If this roundtrip support instance is not in document fragment mode,
the yFiles Java label position information will be committed to the label model parameters of yFiles FLEX client
Label instances when the graph is written back to the client.
Because the label positions have to be up to date before the shared data is written, class SharedDataOutputHandler takes care of copying the label layout data. This
behavior can be configured using SharedDataOutputHandler.setCommitLabelLayouts(boolean).
The SharedDataOutputHandler instance that is used by this roundtrip support instance can be configured using createSharedDataOutputHandler(). The position information can also be committed before, using FlexIOTools.copyLabelLayouts(y.layout.LayoutGraph).
In document fragment mode, a LabelCompatOutputHandler is
registered, which commits the label layouts to the DocumentFragments contained in the NODE_LABELS_DPKEY and
EDGE_LABELS_DPKEY data providers before the document fragments are written.
mapLabelModels - Whether to map client-side label models to yFiles Java label models. The default is
true.LabelCompatInputHandler,
LabelCompatOutputHandlerpublic boolean isMapLabelModels()
setMapLabelModels(boolean)public boolean isIgnoreMissingDeserializer()
DeserializationHandler can be found during parsing.
If true a FallbackDeserializer is
used in the case of a missing deserializer that prevents a parse error by deserializing the element to null.
Otherwise, a DeserializationNotSupportedException is thrown.
public void setIgnoreMissingDeserializer(boolean ignoreMissingDeserializer)
DeserializationHandler can be found during parsing.
If true a FallbackDeserializer is
used in the case of a missing deserializer that prevents a parse error by deserializing the element to null.
Otherwise, a DeserializationNotSupportedException is thrown.
public void addSerializer(SerializationHandler serializer)
GraphMLHandler in addRegisteredHandlers(y.io.graphml.GraphMLHandler).
serializer - A serializer instance that will be used when the graph is written.public void addDeserializer(DeserializationHandler deserializer)
GraphMLHandler in addRegisteredHandlers(y.io.graphml.GraphMLHandler).
deserializer - A deserializer instance that will be used when the graph is read.protected void addRegisteredHandlers(GraphMLHandler handler)
SerializationHandler and DeserializationHandler instances as well as those
added via addSerializer(y.io.graphml.output.SerializationHandler)
or addDeserializer(y.io.graphml.input.DeserializationHandler) are added to the handler for reading and
writing the yFiles FLEX client's GraphML format.
This method is called by configureHandler(GraphMLLayoutGraphIOHandler).
handler - The handler to add the SerializationHandler and DeserializationHandler.
public boolean readGraph(HttpServletRequest request,
Graph graph)
throws java.io.IOException
AbstractGraphRoundtripSupportAbstractGraphRoundtripSupport.PARAM_GRAPH parameter, the parameter value is used for updating the graph
instance currently stored in the session.
To decide whether the value of the AbstractGraphRoundtripSupport.PARAM_GRAPH parameter has to be decoded and decompressed,
the "graphEncoding" parameter is used. For example, to indicate base64-encoded, zlib-compressed and URI-encoded
data, the value has to be "base64/zlib/encodeURIComponent".
readGraph in class AbstractGraphRoundtripSupportrequest - The servlet request
java.io.IOException - If parsing goes wrong.
protected void setLocalRoot(HttpServletRequest request,
Graph graph)
localRoot request parameter (if available), to
set the local root node.
This method is called when a graph is read from a servlet request
and folding support is enabled.
request - A servlet request that contains the localRoot request parameter,
specifying the id of the local root node.graph - A graph for which the local root node should be set.isFoldingEnabled()
public void readGraph(java.io.InputStream is,
Graph graph)
throws java.io.IOException
AbstractGraphRoundtripSupport
readGraph in class AbstractGraphRoundtripSupportis - the stream to use - the encoding should be UTF-8graph - the graph to read the result in.
java.io.IOException - if an io exception occurred.
public void readGraph(java.net.URL url,
Graph graph)
throws java.io.IOException
AbstractGraphRoundtripSupport
readGraph in class AbstractGraphRoundtripSupporturl - the URL to usegraph - the graph to read the result in.
java.io.IOException - if an io exception occurred.protected GraphMLLayoutGraphIOHandler createHandler()
node ids and edge ids.
This implementation creates the instance, calls configureHandler(GraphMLLayoutGraphIOHandler) and
finally adds an input handler provider that automatically reads mapped data contained in the GraphML data if
isAutoReadMapperData() is true.
createRoundtripGraph().protected void configureHandler(GraphMLLayoutGraphIOHandler handler)
createHandler() after the creation of the
handler instance. The default implementation adds input and output handlers for graph item layout and style
data and for custom mapper attributes.
handler - the handler to configuresetDocumentFragmentMode(boolean),
setMapLabelModels(boolean)protected SharedDataOutputHandler createSharedDataOutputHandler()
public void sendGraph(Graph graph,
HttpServletResponse response)
throws java.io.IOException
AbstractGraphRoundtripSupportUTF-8 encoding. This method will close
the response stream.
The response content type is set to "text/xml".
sendGraph in class AbstractGraphRoundtripSupportgraph - The current graph.response - The response that will be sent to the client.
java.io.IOException - If something goes wrong during GraphML export.
public void sendGraph(Graph graph,
java.io.OutputStream os,
java.lang.String outputEncoding)
throws java.io.IOException
AbstractGraphRoundtripSupport
sendGraph in class AbstractGraphRoundtripSupportgraph - The current graph.os - The stream to write the graph to.
java.io.IOException - If something goes wrong during GraphML export.public LayoutGraph createRoundtripGraph()
If isFoldingEnabled() returns true a new instance of
FoldedLayoutGraph is created otherwise a
StyledLayoutGraph instance is used.
As FoldedLayoutGraph is a subclass of StyledLayoutGraph the returned LayoutGraph
can usually be safely cast to StyledLayoutGraph.
Afterwards configureRoundtripGraph(LayoutGraph) is called to configure the created graph instance.
createRoundtripGraph in class AbstractGraphRoundtripSupportpublic YDimension getDefaultNodeSize()
createRoundtripGraph(). The default value is 30,30.
public void setDefaultNodeSize(YDimension defaultNodeSize)
StyledLayoutGraph and it's
StyledLayoutGraph.setDefaultNodeSize(y.geom.YDimension)
method instead.
createRoundtripGraph().
defaultNodeSize - The default size that will be sued for new nodes.protected void configureRoundtripGraph(LayoutGraph layoutGraph)
createRoundtripGraph() to configure the created graph instance.
This method registers various DataMap
instances with the graph instance using the key constants provided by this class.
configureRoundtripGraph in class AbstractGraphRoundtripSupportlayoutGraph - The layout graph instance that is used for round tripping.public GraphMLVersion getGraphMLVersion()
1.3.
setParseGraphMLVersion(boolean)public void setGraphMLVersion(GraphMLVersion graphMLVersion)
GraphMLVersion.ONE_POINT_THREE.
setParseGraphMLVersion(boolean)public boolean isParseGraphMLVersion()
graphMLVersionString property to the last parsed version String, thus always
writing the GraphML version string that was most recently parsed. The default value is true.
setGraphMLVersion(GraphMLVersion)public void setParseGraphMLVersion(boolean parseGraphMLVersion)
graphMLVersion property to the last parsed version String, thus always writing the
GraphML version string that was most recently parsed. The default value is true.
parseGraphMLVersion - Whether to parse the GraphML Version and set the graphMLVersion property to
the most recently parsed value.setGraphMLVersion(GraphMLVersion)public ISharedInstanceProvider getSharedInstanceProvider()
public void setSharedInstanceProvider(ISharedInstanceProvider sharedInstanceProvider)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||