Package org.sourceforge.jsonedit.core.model.node

Examples of org.sourceforge.jsonedit.core.model.node.Node


   
    return imgDescriptor.createImage();
  }
 
  public int getStart() {
    Node startNode = jsonNode.getKey();
    if (startNode == null) {
      startNode = jsonNode.getValue();
    }
   
    return startNode.getStart();
  }
View Full Code Here


   
    return startNode.getStart();
  }
 
  public int getLength() {
    Node startNode = jsonNode.getKey();
    if (startNode == null) {
      startNode = jsonNode.getValue();
    }
    Node endNode = jsonNode.getValue();
    if (endNode == null) {
      endNode = jsonNode.getKey();
    }
   
    return endNode.getEnd() - startNode.getStart();
  }
View Full Code Here

          // find next quote
          for (int i = continueIndex + 1; i < errorNodes.size(); i++) {
            if (isNodeType(i, errorNodes, Type.Quote)) {
              // build string
              Node newNode = convertToString(errorNodes.get(continueIndex), errorNodes.get(i));
              reparsedNodes.add(errorNodes.get(continueIndex));
              reparsedNodes.add(newNode);
              reparsedNodes.add(errorNodes.get(i));
              continueIndex = i + 1;
              stringBuilt = true;
              break;
            }
          }
        } else if (errorNodes.size() >= continueIndex + 3){
          reparsedNodes.addAll(errorNodes.subList(continueIndex, continueIndex + 3));
          continueIndex += 3;
          stringBuilt = true;
        }

        if (stringBuilt && continueIndex == errorNodes.size()) {
          JsonNode newJsonNode = new JsonNode(null, reparsedNodes.get(1), JsonType.String);
          reparsedJsonNodes.add(newJsonNode);
          for(Node node : reparsedNodes) {
            node.setOwner(newJsonNode);
          }
          int nodesPos = nodes.indexOf(errorNodes.get(startIndex));
          nodes.removeAll(errorNodes.subList(startIndex, continueIndex));
          nodes.addAll(nodesPos, reparsedNodes);
          reparsedNodes.clear();
          break;
        }


        if (stringBuilt && isNodeType(continueIndex, errorNodes, Type.Comma)) {
          JsonNode newJsonNode = new JsonNode(null, reparsedNodes.get(1), JsonType.String);
          reparsedJsonNodes.add(newJsonNode);
          reparsedNodes.add(errorNodes.get(continueIndex));
          for(Node node : reparsedNodes) {
            node.setOwner(newJsonNode);
          }
          int nodesPos = nodes.indexOf(errorNodes.get(startIndex));
          nodes.removeAll(errorNodes.subList(startIndex, continueIndex + 1));
          nodes.addAll(nodesPos, reparsedNodes);
          reparsedNodes.clear();
          continue;
        }
       
        if (stringBuilt && isNodeType(continueIndex, errorNodes, Type.CloseArray, Type.CloseObject)) {
          JsonNode newJsonNode = new JsonNode(null, reparsedNodes.get(1), JsonType.String);
          reparsedJsonNodes.add(newJsonNode);
          JsonNode endNode = new JsonNode(null, errorNodes.get(continueIndex), JsonType.End);
          reparsedJsonNodes.add(endNode);
          for(Node node : reparsedNodes) {
            node.setOwner(newJsonNode);
          }
          JsonNode parent = (objectArrayStack.size() > 0) ? objectArrayStack.remove(0) : null;
          if (parent != null) {
            errorNodes.get(continueIndex).setOwner(parent);
          }
          reparsedNodes.add(errorNodes.get(continueIndex));
          if (errorNodes.size() > continueIndex + 1 && isNodeType(continueIndex + 1, errorNodes, Type.Comma)) {
            if (parent != null) { errorNodes.get(continueIndex + 1).setOwner(parent); }
            reparsedNodes.add(errorNodes.get(continueIndex + 1));
            continueIndex++;
          }
          int nodesPos = nodes.indexOf(errorNodes.get(startIndex));
          nodes.removeAll(errorNodes.subList(startIndex, continueIndex + 1));
          nodes.addAll(nodesPos, reparsedNodes);
          reparsedNodes.clear();
          continue;
        }

        if (stringBuilt && isNodeType(continueIndex, errorNodes, Type.Colon)) {
         
          if (errorNodes.size() > continueIndex + 1 &&
              isNodeType(continueIndex + 1, errorNodes, Type.False, Type.Null, Type.Number, Type.True, Type.OpenArray, Type.OpenObject)) {
            JsonType jsonType = nodeTypeToJsonType(errorNodes.get(continueIndex + 1).getType());
            JsonNode newJsonNode = new JsonNode(reparsedNodes.get(1), errorNodes.get(continueIndex + 1) , jsonType);
            reparsedJsonNodes.add(newJsonNode);
            reparsedNodes.add(errorNodes.get(continueIndex));
            reparsedNodes.add(errorNodes.get(continueIndex + 1));
            continueIndex++;
            for(Node node : reparsedNodes) {
              node.setOwner(newJsonNode);
            }
            int nodesPos = nodes.indexOf(errorNodes.get(startIndex));
            nodes.removeAll(errorNodes.subList(startIndex, continueIndex + 1));
            nodes.addAll(nodesPos, reparsedNodes);
            reparsedNodes.clear();
            if (jsonType == JsonType.Array || jsonType == JsonType.Object) {
              objectArrayStack.add(0, newJsonNode);
            }
            continue;
          }
         
          if (continueIndex + 2 < errorNodes.size()) {
            if (isNodeType(continueIndex + 1, errorNodes, Type.Quote)) {
              if (!isNodeType(continueIndex + 2, errorNodes, Type.String)) {

                // find next quote
                for (int i = continueIndex + 2; i < errorNodes.size(); i++) {
                  if (isNodeType(i, errorNodes, Type.Quote)) {
                    // build string
                    Node newNode = convertToString(errorNodes.get(continueIndex + 1), errorNodes.get(i));
                    reparsedNodes.add(errorNodes.get(continueIndex));
                    reparsedNodes.add(errorNodes.get(continueIndex + 1));
                    reparsedNodes.add(newNode);
                    reparsedNodes.add(errorNodes.get(i));
                    continueIndex = i + 1;
                    stringBuilt = true;
                    break;
                  }
                }
              } else if (errorNodes.size() >= continueIndex + 4){
                reparsedNodes.addAll(errorNodes.subList(continueIndex, continueIndex + 4));
                continueIndex += 4;
                stringBuilt = true;
              }
            }
          }
         
          // We've managed to rebuild the node into a string, can it be merged into the string next to it?
          else if (continueIndex + 1 == errorNodes.size()) {
            if (jsonNodes.size() > 0) {
              JsonNode headNode = jsonNodes.get(jsonNodes.size()-1);
              if (headNode.getJsonType() == JsonType.String && headNode.getKey() == null) {
                headNode.setKey(reparsedNodes.get(1));
                reparsedNodes.add(errorNodes.get(continueIndex));
                for(Node node : reparsedNodes) {
                  node.setOwner(headNode);
                }
                int nodesPos = nodes.indexOf(errorNodes.get(startIndex));
                nodes.removeAll(errorNodes.subList(startIndex, continueIndex + 1));
                nodes.addAll(nodesPos, reparsedNodes);
                reparsedNodes.clear();
                break;
              }
            }
          }
         
          if (stringBuilt && continueIndex == errorNodes.size()) {
            JsonNode newJsonNode = new JsonNode(reparsedNodes.get(1), reparsedNodes.get(5), JsonType.String);
            reparsedJsonNodes.add(newJsonNode);
            for(Node node : reparsedNodes) {
              node.setOwner(newJsonNode);
            }
            int nodesPos = nodes.indexOf(errorNodes.get(startIndex));
            nodes.removeAll(errorNodes.subList(startIndex, continueIndex));
            nodes.addAll(nodesPos, reparsedNodes);
            reparsedNodes.clear();
            break;
          }


          if (stringBuilt && isNodeType(continueIndex, errorNodes, Type.Comma)) {
            JsonNode newJsonNode = new JsonNode(reparsedNodes.get(1), reparsedNodes.get(5), JsonType.String);
            reparsedJsonNodes.add(newJsonNode);
            reparsedNodes.add(errorNodes.get(continueIndex));
            for(Node node : reparsedNodes) {
              node.setOwner(newJsonNode);
            }
            int nodesPos = nodes.indexOf(errorNodes.get(startIndex));
            nodes.removeAll(errorNodes.subList(startIndex, continueIndex + 1));
            nodes.addAll(nodesPos, reparsedNodes);
            reparsedNodes.clear();
            continue;
          }
         
          if (stringBuilt && isNodeType(continueIndex, errorNodes, Type.CloseArray, Type.CloseObject)) {
            JsonNode newJsonNode = new JsonNode(reparsedNodes.get(1), reparsedNodes.get(5), JsonType.String);
            reparsedJsonNodes.add(newJsonNode);
            JsonNode endNode = new JsonNode(null, errorNodes.get(continueIndex), JsonType.End);
            reparsedJsonNodes.add(endNode);
            for(Node node : reparsedNodes) {
              node.setOwner(newJsonNode);
            }
            JsonNode parent = (objectArrayStack.size() > 0) ? objectArrayStack.remove(0) : null;
            if (parent != null) {
              errorNodes.get(continueIndex).setOwner(parent);
            }
            reparsedNodes.add(errorNodes.get(continueIndex));
            if (errorNodes.size() > continueIndex + 1 && isNodeType(continueIndex + 1, errorNodes, Type.Comma)) {
              if (parent != null) { errorNodes.get(continueIndex + 1).setOwner(parent); }
              reparsedNodes.add(errorNodes.get(continueIndex + 1));
              continueIndex++;
            }
           
            int nodesPos = nodes.indexOf(errorNodes.get(startIndex));
            nodes.removeAll(errorNodes.subList(startIndex, continueIndex + 1));
            nodes.addAll(nodesPos, reparsedNodes);
            reparsedNodes.clear();
            continue;
          }
        }
      }
     
      if (reparsedJsonNodes.size() > 0 && reparsedJsonNodes.get(reparsedJsonNodes.size() - 1).getJsonType() != JsonType.Error) {
        if (isNodeType(continueIndex, errorNodes, Type.CloseArray, Type.CloseObject)) {
          JsonNode endNode = new JsonNode(null, errorNodes.get(continueIndex), JsonType.End);
          reparsedJsonNodes.add(endNode);
          JsonNode parent = (objectArrayStack.size() > 0) ? objectArrayStack.remove(0) : null;
          if (parent != null) {
            errorNodes.get(continueIndex).setOwner(parent);
          }
          if (errorNodes.size() > continueIndex + 1 && isNodeType(continueIndex + 1, errorNodes, Type.Comma)) {
            if (parent != null) { errorNodes.get(continueIndex + 1).setOwner(parent); }
            continueIndex++;
          }
          continue;
        }
       
        if (isNodeType(continueIndex, errorNodes, Type.OpenArray, Type.OpenObject)) {
          JsonType jsonType = errorNodes.get(continueIndex).getType() == Type.OpenArray ? JsonType.Array : JsonType.Object;
          JsonNode openNode = new JsonNode(null, errorNodes.get(continueIndex), jsonType);
          reparsedJsonNodes.add(openNode);
          objectArrayStack.add(0, openNode);
          errorNodes.get(continueIndex).setOwner(openNode);
          continue;
        }
      }
     
      if (reparsedJsonNodes.size() > 0 && reparsedJsonNodes.get(reparsedJsonNodes.size() - 1).getJsonType() == JsonType.Array) {
        if (isNodeType(continueIndex, errorNodes, Type.OpenArray, Type.OpenObject)) {
          JsonType jsonType = errorNodes.get(continueIndex).getType() == Type.OpenArray ? JsonType.Array : JsonType.Object;
          JsonNode openNode = new JsonNode(null, errorNodes.get(continueIndex), jsonType);
          reparsedJsonNodes.add(openNode);
          objectArrayStack.add(0, openNode);
          errorNodes.get(continueIndex).setOwner(openNode);
          continue;
        }
      }
     
      if (reparsedJsonNodes.size() > 0 && reparsedJsonNodes.get(reparsedJsonNodes.size() - 1).getJsonType() == JsonType.Error) {
        JsonNode jsonNode = reparsedJsonNodes.get(reparsedJsonNodes.size() - 1);
        Node node = errorNodes.get(startIndex);
        jsonNode.getValue().setLength(node.getEnd() - jsonNode.getValue().getStart());
        Node mergedNode = jsonNode.getValue();
        mergedNode.setValue(mergedNode.getValue() + node.getValue());
        //nodes.remove(node);
        node.setOwner(jsonNode);
      } else {
        if (reparsedNodes.size() > 0) {
          StringBuilder strBuilder = new StringBuilder();
          for (Node node : reparsedNodes) {
            strBuilder.append(node.getValue());
          }
          Node mergedNode = new Node(Type.Error);
          mergedNode.setValue(strBuilder.toString());
          mergedNode.setStart(reparsedNodes.get(0).getStart());
          mergedNode.setLength(reparsedNodes.get(reparsedNodes.size()-1).getEnd() - mergedNode.getStart());
          JsonNode newJsonNode = new JsonNode(null, mergedNode, JsonType.Error);
          reparsedJsonNodes.add(newJsonNode);
          for(Node node : reparsedNodes) {
            node.setOwner(newJsonNode);
          }
          int nodesPos = nodes.indexOf(errorNodes.get(startIndex));
          nodes.removeAll(errorNodes.subList(startIndex, continueIndex));
          nodes.addAll(nodesPos, reparsedNodes);
          reparsedNodes.clear();
        } else {
          Node node = errorNodes.get(startIndex);
          JsonNode newJsonNode = new JsonNode(null, node, JsonType.Error);
          reparsedJsonNodes.add(newJsonNode);
          node.setOwner(newJsonNode);
        }
       
      }
    }
   
View Full Code Here

    int offset = node.getEnd();
    int length = node2.getStart() - offset;
   
    try {
      String text = fDocument.get(offset, length);
      Node newNode = new Node(Type.String);
      newNode.setPosition(offset, length);
      newNode.setValue(text);
      return newNode;
    } catch (BadLocationException e) {
      //e.printStackTrace();
    }
   
View Full Code Here

        return -1;
      }
      count++;
    }
   
    Node keyNode = (keyNodePos != -1) ? nodes.get(keyNodePos) : null;
    Node valueNode = (valueNodePos != -1) ? nodes.get(valueNodePos) : null;
    JsonNode node = new JsonNode(keyNode, valueNode, jsonType);
    jsonNodes.add(node);
   
    for (int i = start; i < types.length + index; i++) {
      if (nodes.get(i).getType() == Type.CloseArray || nodes.get(i).getType() == Type.CloseObject) {
View Full Code Here

TOP

Related Classes of org.sourceforge.jsonedit.core.model.node.Node

Copyright © 2018 www.massapicom. 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.