package org.freeplane.plugin.remote.v10.model; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.xml.bind.annotation.XmlElement; import org.freeplane.features.map.NodeModel; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; @JsonInclude(Include.NON_NULL) public class NodeModelRoot extends NodeModelBase implements Serializable { private static final long serialVersionUID = 1L; //@XmlElement(required=true,nillable=true) @XmlElement(name="leftChildren") public List<NodeModelDefault> leftChildren; //@XmlElement(required=true) @XmlElement(name="rightChildren") public List<NodeModelDefault> rightChildren; //public NodeModel preferredChild; /** * necessary for JAX-B */ @SuppressWarnings("unused") private NodeModelRoot() { super(); } /** * automatically converts the whole tree * @param freeplaneNode */ public NodeModelRoot(org.freeplane.features.map.NodeModel freeplaneNode, boolean autoloadChildren) { super(freeplaneNode,autoloadChildren); } @Override public int loadChildren(boolean autoloadChildren) { leftChildren = new ArrayList<NodeModelDefault>(); rightChildren = new ArrayList<NodeModelDefault>(); int totalCount = childrenIds.size(); for(NodeModel child : getFreeplaneNode().getChildren()) { if(child.isLeft()) { this.leftChildren.add(new NodeModelDefault(child,false)); } else { this.rightChildren.add(new NodeModelDefault(child,false)); } } if(autoloadChildren) { for(NodeModelDefault child : this.leftChildren) { totalCount += child.loadChildren(true); } for(NodeModelDefault child : this.rightChildren) { totalCount += child.loadChildren(true); } } childrenIds = null; return totalCount; } @Override @JsonIgnore public List<NodeModelDefault> getAllChildren() { List<NodeModelDefault> list = new ArrayList<NodeModelDefault>(leftChildren); list.addAll(rightChildren); return list; } // public String toJsonString() { // StringBuilder builder = new StringBuilder(); // builder.append("{"+getJsonStringParts()+",\"leftChildren\":["); // for(int i = 0; i < leftChildren.size(); i ++) { // builder.append(leftChildren.get(i).toJsonString()); // if(i < leftChildren.size()-1) // builder.append(","); // } // builder.append("],\"rightChildren\":["); // for(int i = 0; i < rightChildren.size(); i ++) { // builder.append(rightChildren.get(i).toJsonString()); // if(i < rightChildren.size()-1) // builder.append(","); // } // builder.append("]}"); // return builder.toString(); // } }