Package com.xmlit.project.client

Source Code of com.xmlit.project.client.TreeToStruct

package com.xmlit.project.client;

import com.smartgwt.client.widgets.tree.TreeGrid;
import com.smartgwt.client.widgets.tree.TreeNode;
import com.xmlit.project.engine.struct.Struct;
import com.xmlit.project.engine.struct.StructChoice;
import com.xmlit.project.engine.struct.StructSequence;
import com.xmlit.project.engine.struct.StructSimple;
import com.xmlit.project.engine.struct.impl.StructChoiceImpl;
import com.xmlit.project.engine.struct.impl.StructSequenceImpl;
import com.xmlit.project.engine.struct.impl.StructSimpleImpl;

import static com.xmlit.project.client.Main.*;

public class TreeToStruct {

  public static void getTreeNode(Struct parent, TreeGrid treeGrid,
      TreeNode node) {
    node.setAttribute(Name, parent.getName());
    node.setAttribute(Min, parent.getMinOccurrences());
    node.setAttribute(Max, parent.getMaxOccurrences());
    node.setAttribute(Prefix, parent.getPrefix());
    node.setAttribute(Suffix, parent.getSuffix());

    if (parent instanceof StructSequence) {
      node.setAttribute(Type, Sequence);
      node.setAttribute(Delimiter,
          ((StructSequence) parent).getDelimiter());
      node.setAttribute(Lookahead,
          ((StructSequence) parent).getLookahead());
      node.setAttribute(Not, ((StructSequence) parent).isNegative());
    } else if (parent instanceof StructChoice) {
      node.setAttribute(Type, Choice);
    } else {
      node.setAttribute(Type, Simple);
      node.setAttribute(Regex, ((StructSimple) parent).getSimplePattern());
      node.setAttribute(AllowedChars,
          ((StructSimple) parent).getAllowedChars());
      node.setAttribute(AllowedValues,
          ((StructSimple) parent).getAllowedValues());
      node.setAttribute(minLength,
          "" + ((StructSimple) parent).getMinLength());
      node.setAttribute(maxLength,
          "" + ((StructSimple) parent).getMaxLength());

    }

    if (parent.getChildren() != null)
      for (Struct child : parent.getChildren()) {
        TreeNode newNode = new TreeNode();
        treeGrid.getTree().add(newNode, node);
        getTreeNode(child, treeGrid, newNode);
      }

  }

  public static Struct getStruct(TreeGrid treeGrid, TreeNode rootNode,
      Struct parent) {
    Struct current = null;
    if (Main.Sequence.equals(rootNode.getAttribute(Type))) {
      current = new StructSequenceImpl(rootNode.getAttribute(Name));
      ((StructSequenceImpl) current).setDelimiter(handleEscape(rootNode
          .getAttribute(Delimiter)));
      ((StructSequenceImpl) current).setLookahead(handleEscape(rootNode
          .getAttribute(Lookahead)));

      ((StructSequenceImpl) current).setNegative(rootNode
          .getAttributeAsBoolean(Not));

    } else if (Main.Choice.equals(rootNode.getAttribute(Type))) {
      current = new StructChoiceImpl(rootNode.getAttribute(Name));
    } else {
      current = new StructSimpleImpl(rootNode.getAttribute(Name));
      ((StructSimpleImpl) current).setSimplePattern(handleEscape(rootNode
          .getAttribute(Regex)));
      ((StructSimpleImpl) current).setAllowedChars(handleEscape(rootNode
          .getAttribute(AllowedChars)));
      ((StructSimpleImpl) current).setAllowedValues(handleEscape(rootNode
          .getAttribute(AllowedValues)));
      if (rootNode.getAttribute(minLength) != null)
        ((StructSimpleImpl) current).setMinLength(Integer
            .parseInt(rootNode.getAttribute(minLength)));
      if (rootNode.getAttribute(maxLength) != null)
        ((StructSimpleImpl) current).setMaxLength(Integer
            .parseInt(rootNode.getAttribute(maxLength)));
    }
    if (parent != null) {
      parent.addChild(current);
    }
    if (rootNode.getAttributeAsDouble(Min) != null)
      current.setMinOccurrences(rootNode.getAttributeAsDouble(Min)
          .intValue());
    if (rootNode.getAttributeAsDouble(Max) != null)
      current.setMaxOccurrences(rootNode.getAttributeAsDouble(Max)
          .intValue());

    current.setPrefix(handleEscape(rootNode.getAttribute(Prefix)));
    current.setSuffix(handleEscape(rootNode.getAttribute(Suffix)));

    for (TreeNode node : treeGrid.getTree().getChildren(rootNode)) {
      getStruct(treeGrid, node, current);
    }

    return current;
  }

  private static String handleEscape(String attribute) {
    if (attribute == null) {
      return null;
    }
    String result = attribute.replace("\\r", "\r");
    result = result.replace("\\n", "\n");

    return result;
  }

  private static String handleUnEscape(String attribute) {
    if (attribute == null) {
      return null;
    }
    String result = attribute.replace("\r", "\\r");
    result = result.replace("\n", "\\n");

    return result;
  }

}
TOP

Related Classes of com.xmlit.project.client.TreeToStruct

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.