Package net.opentsdb.tree

Examples of net.opentsdb.tree.Tree


   * @param tsdb The TSDB to which we belong
   * @param query The HTTP query to work with
   * @throws BadRequestException if the request was invalid.
   */
  private void handleTree(TSDB tsdb, HttpQuery query) {
    final Tree tree;
    if (query.hasContent()) {
      tree = query.serializer().parseTreeV1();
    } else {
      tree = parseTree(query);
    }
   
    try {
      // if get, then we're just returning one or more trees
      if (query.getAPIMethod() == HttpMethod.GET) {
 
        if (tree.getTreeId() == 0) {
          query.sendReply(query.serializer().formatTreesV1(
              Tree.fetchAllTrees(tsdb).joinUninterruptibly()));
        } else {
          final Tree single_tree = Tree.fetchTree(tsdb, tree.getTreeId())
            .joinUninterruptibly();
          if (single_tree == null) {
            throw new BadRequestException(HttpResponseStatus.NOT_FOUND,
              "Unable to locate tree: " + tree.getTreeId());
          }
          query.sendReply(query.serializer().formatTreeV1(single_tree));
        }
 
      } else if (query.getAPIMethod() == HttpMethod.POST || query.getAPIMethod() == HttpMethod.PUT) {
        // For post or put, we're either editing a tree or creating a new one.
        // If the tree ID is missing, we need to create a new one, otherwise we
        // edit an existing tree.
       
        // if the tree ID is set, fetch, copy, save
        if (tree.getTreeId() > 0) {
          if (Tree.fetchTree(tsdb, tree.getTreeId())
              .joinUninterruptibly() == null) {
            throw new BadRequestException(HttpResponseStatus.NOT_FOUND,
                "Unable to locate tree: " + tree.getTreeId());
          } else {
            if (tree.storeTree(tsdb, (query.getAPIMethod() == HttpMethod.PUT))
                .joinUninterruptibly() != null) {
              final Tree stored_tree = Tree.fetchTree(tsdb, tree.getTreeId())
                .joinUninterruptibly();
              query.sendReply(query.serializer().formatTreeV1(stored_tree));
            } else {
              throw new BadRequestException(
                  HttpResponseStatus.INTERNAL_SERVER_ERROR,
                  "Unable to save changes to tre tree: " + tree.getTreeId(),
                  "Plesae try again at a later time");
            }
          }
        } else {
          // create a new tree
          final int tree_id = tree.createNewTree(tsdb).joinUninterruptibly();
          if (tree_id > 0) {
            final Tree stored_tree = Tree.fetchTree(tsdb, tree_id)
              .joinUninterruptibly();
            query.sendReply(query.serializer().formatTreeV1(stored_tree));
          } else {
            throw new BadRequestException(
                HttpResponseStatus.INTERNAL_SERVER_ERROR,
View Full Code Here


    }
   
    try {
     
      // no matter what, we'll need a tree to work with, so make sure it exists
      Tree tree = null;
        tree = Tree.fetchTree(tsdb, rule.getTreeId())
          .joinUninterruptibly();
 
      if (tree == null) {
        throw new BadRequestException(HttpResponseStatus.NOT_FOUND,
            "Unable to locate tree: " + rule.getTreeId());
      }
     
      // if get, then we're just returning a rule from a tree
      if (query.getAPIMethod() == HttpMethod.GET) {
       
        final TreeRule tree_rule = tree.getRule(rule.getLevel(),
            rule.getOrder());
        if (tree_rule == null) {
          throw new BadRequestException(HttpResponseStatus.NOT_FOUND,
              "Unable to locate rule: " + rule);
        }
        query.sendReply(query.serializer().formatTreeRuleV1(tree_rule));
       
      } else if (query.getAPIMethod() == HttpMethod.POST || query.getAPIMethod() == HttpMethod.PUT) {
 
        if (rule.syncToStorage(tsdb, (query.getAPIMethod() == HttpMethod.PUT))
            .joinUninterruptibly()) {
          final TreeRule stored_rule = TreeRule.fetchRule(tsdb,
              rule.getTreeId(), rule.getLevel(), rule.getOrder())
              .joinUninterruptibly();
          query.sendReply(query.serializer().formatTreeRuleV1(stored_rule));
        } else {
          throw new RuntimeException("Unable to save rule " + rule +
              " to storage");
        }
 
      } else if (query.getAPIMethod() == HttpMethod.DELETE) {
 
        if (tree.getRule(rule.getLevel(), rule.getOrder()) == null) {
          throw new BadRequestException(HttpResponseStatus.NOT_FOUND,
              "Unable to locate rule: " + rule);
        }
        TreeRule.deleteRule(tsdb, tree.getTreeId(), rule.getLevel(),
            rule.getOrder()).joinUninterruptibly();
        query.sendStatusOnly(HttpResponseStatus.NO_CONTENT);
 
      } else {
        throw new BadRequestException(HttpResponseStatus.BAD_REQUEST,
View Full Code Here

    if (tree_id == null) {
      throw new BadRequestException("Missing or invalid Tree ID");
    }
   
    // make sure the tree exists
    Tree tree = null;
    try {
     
      tree = Tree.fetchTree(tsdb, tree_id).joinUninterruptibly();
      if (tree == null) {
        throw new BadRequestException(HttpResponseStatus.NOT_FOUND,
View Full Code Here

   * @param query The HTTP query to work with
   * @return A tree object filled in with changes
   * @throws BadRequestException if some of the data was invalid
   */
  private Tree parseTree(HttpQuery query) {
    final Tree tree = new Tree(parseTreeId(query, false));
    if (query.hasQueryStringParam("name")) {
      tree.setName(query.getQueryStringParam("name"));
    }
    if (query.hasQueryStringParam("description")) {
      tree.setDescription(query.getQueryStringParam("description"));
    }
    if (query.hasQueryStringParam("notes")) {
      tree.setNotes(query.getQueryStringParam("notes"));
    }
    if (query.hasQueryStringParam("strict_match")) {
      if (query.getQueryStringParam("strict_match").toLowerCase()
          .equals("true")) {
        tree.setStrictMatch(true);
      } else {
        tree.setStrictMatch(false);
      }
    }
    if (query.hasQueryStringParam("enabled")) {
      final String enabled = query.getQueryStringParam("enabled");
      if (enabled.toLowerCase().equals("true")) {
        tree.setEnabled(true);
      } else {
        tree.setEnabled(false);
      }
    }
    if (query.hasQueryStringParam("store_failures")) {
      if (query.getQueryStringParam("store_failures").toLowerCase()
          .equals("true")) {
        tree.setStoreFailures(true);
      } else {
        tree.setStoreFailures(false);
      }
    }
    return tree;
  }
View Full Code Here

    }
    try {
      final HashMap<String, String> properties =
        JSON.parseToObject(json, TR_HASH_MAP);
     
      final Tree tree = new Tree();
      for (Map.Entry<String, String> entry : properties.entrySet()) {
        // skip nulls, empty is fine, but nulls are not welcome here
        if (entry.getValue() == null) {
          continue;
        }
       
        if (entry.getKey().toLowerCase().equals("treeid")) {
          tree.setTreeId(Integer.parseInt(entry.getValue()));
        } else if (entry.getKey().toLowerCase().equals("name")) {
          tree.setName(entry.getValue());
        } else if (entry.getKey().toLowerCase().equals("description")) {
          tree.setDescription(entry.getValue());
        } else if (entry.getKey().toLowerCase().equals("notes")) {
          tree.setNotes(entry.getValue());
        } else if (entry.getKey().toLowerCase().equals("enabled")) {
          if (entry.getValue().toLowerCase().equals("true")) {
            tree.setEnabled(true);
          } else {
            tree.setEnabled(false);
          }
        } else if (entry.getKey().toLowerCase().equals("strictmatch")) {
          if (entry.getValue().toLowerCase().equals("true")) {
            tree.setStrictMatch(true);
          } else {
            tree.setStrictMatch(false);
          }
        } else if (entry.getKey().toLowerCase().equals("storefailures")) {
          if (entry.getValue().toLowerCase().equals("true")) {
            tree.setStoreFailures(true);
          } else {
            tree.setStoreFailures(false);
          }
        }
      }
      return tree;
    } catch (NumberFormatException nfe) {
View Full Code Here

    }
  }
 
  @Test
  public void copyConstructor() {
    final Tree tree = buildTestTree();
    tree.setStrictMatch(true);
    final Tree copy = new Tree(tree);
   
    assertEquals(1, copy.getTreeId());
    assertEquals(1356998400L, copy.getCreated());
    assertEquals("My Description", copy.getDescription());
    assertEquals("Test Tree", copy.getName());
    assertEquals("Details", copy.getNotes());
    assertTrue(copy.getStrictMatch());
    assertTrue(copy.getEnabled());
    assertNull(copy.getCollisions());
    assertNull(copy.getNotMatched());
    assertNotNull(copy.getRules());
    assertTrue(copy.getRules() != tree.getRules());
  }
View Full Code Here

    assertTrue(copy.getRules() != tree.getRules());
  }
 
  @Test
  public void copyChanges() throws Exception {
    final Tree tree = buildTestTree();
    final Tree tree2 = buildTestTree();
    tree2.setName("Different Tree");
    assertTrue(tree.copyChanges(tree2, false));
    assertEquals("Different Tree", tree.getName());
  }
View Full Code Here

    assertEquals("Different Tree", tree.getName());
  }
 
  @Test
  public void copyChangesNone() throws Exception {
    final Tree tree = buildTestTree();
    final Tree tree2 = buildTestTree();
    assertFalse(tree.copyChanges(tree2, false));
  }
View Full Code Here

    assertFalse(tree.copyChanges(tree2, false));
  }
 
  @Test
  public void copyChangesOverride() throws Exception {
    final Tree tree = buildTestTree();
    final Tree tree2 = new Tree(1);
    assertTrue(tree.copyChanges(tree2, true));
    assertTrue(tree.getName().isEmpty());
    assertTrue(tree.getDescription().isEmpty());
    assertTrue(tree.getNotes().isEmpty());
  }
View Full Code Here

    assertTrue(json.contains("\"enabled\":true"));
  }

  @Test
  public void deserialize() throws Exception {
    Tree t = JSON.parseToObject((byte[])TreetoStorageJson.invoke(
        buildTestTree()), Tree.class);
    assertTrue(t.getEnabled());
  }
View Full Code Here

TOP

Related Classes of net.opentsdb.tree.Tree

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.