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

com.google.firebase.database.snapshot.Node Maven / Gradle / Ivy

/*
 * Copyright 2017 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.firebase.database.snapshot;

import com.google.firebase.database.core.Path;

import java.util.Iterator;

/** User: greg Date: 5/16/13 Time: 4:38 PM */
public interface Node extends Comparable, Iterable {

  ChildrenNode MAX_NODE =
      new ChildrenNode() {
        @Override
        public int compareTo(Node other) {
          return (other == this) ? 0 : 1;
        }

        @Override
        public boolean equals(Object other) {
          return other == this;
        }

        @Override
        public Node getPriority() {
          return this;
        }

        @Override
        public boolean isEmpty() {
          return false;
        }

        @Override
        public boolean hasChild(ChildKey childKey) {
          return false;
        }

        @Override
        public Node getImmediateChild(ChildKey name) {
          if (name.isPriorityChildName()) {
            return getPriority();
          } else {
            return EmptyNode.Empty();
          }
        }

        @Override
        public String toString() {
          return "";
        }
      };

  boolean isLeafNode();

  Node getPriority();

  Node getChild(Path path);

  Node getImmediateChild(ChildKey name);

  Node updateImmediateChild(ChildKey name, Node node);

  ChildKey getPredecessorChildKey(ChildKey childKey);

  ChildKey getSuccessorChildKey(ChildKey childKey);

  Node updateChild(Path path, Node node);

  Node updatePriority(Node priority);

  boolean hasChild(ChildKey name);

  boolean isEmpty();

  int getChildCount();

  Object getValue();

  Object getValue(boolean useExportFormat);

  String getHash();

  String getHashRepresentation(HashVersion version);

  Iterator reverseIterator();

  enum HashVersion {
    // V1 is the initial hashing schema used by Firebase Database
    V1,
    // V2 escapes and quotes strings and is used by compound hashing
    V2
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy