All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mxgraph.io.gd.mxGdDocument Maven / Gradle / Ivy

/**
 * $Id: mxGdDocument.java,v 1.2 2011-01-31 12:13:34 david Exp $
 * Copyright (c) 2010, Gaudenz Alder, David Benson
 */
package com.mxgraph.io.gd;

import com.mxgraph.util.mxPoint;
import java.io.BufferedReader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

/**
 * This class is a representation of a GD file.
* Allows access to the nodes and edges of the graph. */ public class mxGdDocument { /** * Represents the different states in the parse of a file. */ public enum mxGDParseState { START, PARSING_NODES, PARSING_EDGES } private List nodes = new ArrayList(); private List edges = new ArrayList(); /** * @return Returns the list of edges. */ public List getEdges() { return edges; } /** * @return Returns the list of nodes. */ public List getNodes() { return nodes; } public void setEdges(List edges) { this.edges = edges; } public void setNodes(List nodes) { this.nodes = nodes; } /** * Parses the String with the file content and loads into the document, * the data of nodes and edges. * @param gd String with the file content. */ public void parse(String gd) { gd = gd.trim(); BufferedReader br = new BufferedReader(new StringReader(gd)); mxGDParseState state = mxGDParseState.START; try { String line = br.readLine(); while (line != null) { switch (state) { case START: { if (line.startsWith("# Nodes")) { state = mxGDParseState.PARSING_NODES; } else { throw new Exception("Error in parsing"); } break; } case PARSING_NODES: { if (line.startsWith("# Edges")) { state = mxGDParseState.PARSING_EDGES; } else if (!line.equals("")) { String[] items = line.split(","); if (items.length != 5) { throw new Exception("Error in parsing"); } else { double x = Double.valueOf(items[1]); double y = Double.valueOf(items[2]); double width = Double.valueOf(items[3]); double height = Double.valueOf(items[4]); mxGdNode node = new mxGdNode(items[0], new mxPoint(x, y), new mxPoint(width, height)); nodes.add(node); } } break; } case PARSING_EDGES: { if (!line.equals("")) { String[] items = line.split(","); if (items.length != 2) { throw new Exception("Error in parsing"); } else { String source = items[0]; String target = items[1]; mxGdEdge edge = new mxGdEdge(source, target); edges.add(edge); } } break; } } line = br.readLine(); } } catch (Exception e) { e.printStackTrace(); } } /** * @return Returns the String representation of the document. */ public String getDocumentString() { StringBuilder buf = new StringBuilder("# Nodes\n"); for (mxGdNode node : nodes) { buf.append(node.getNodeString()); buf.append("\n"); } buf.append("# Edges\n"); for (mxGdEdge edge : edges) { buf.append(edge.getEdgeString()); buf.append("\n"); } return buf.toString(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy