/** * @return the {@link RevObject.TYPE} of the {@code Node} this object points to */ public RevObject.TYPE getType() { return node.getType(); }
/** * @return the {@link RevObject.TYPE} of the {@code Node} this object points to */ public RevObject.TYPE getType() { return node.getType(); }
private void checkNode(Node node, TYPE type, int index) { if (node == null) { throw new NullPointerException( "null node in " + type.toString().toLowerCase() + "s at index " + index); } if (node.getType() != type) { throw new IllegalArgumentException(type.toString().toLowerCase() + "s contains " + node.getType() + " node at index " + index); } }
@Override public int put(final Node node) { Preconditions.checkArgument(TYPE.FEATURE == node.getType(), "Can't add non feature nodes to quad-tree: %s", node); return super.put(node); }
@Override public int put(final Node node) { Preconditions.checkArgument(TYPE.FEATURE == node.getType(), "Can't add non feature nodes to quad-tree: %s", node); return super.put(node); }
/** * Equality check based on {@link #getName() name}, {@link #getType() type}, and * {@link #getObjectId() objectId}; {@link #getMetadataId()} is NOT part of the equality check. */ public static boolean equals(@NonNull Node node, @Nullable Object o) { if (o instanceof Node) { Node r = (Node) o; return node.getType().equals(r.getType()) && node.getName().equals(r.getName()) && node.getObjectId().equals(r.getObjectId()); } return false; }
public static String toString(@NonNull Node node) { Envelope env = node.bounds().orNull(); String bounds = env == null ? null : env.toString(); return String.format("%s[%s -> %s, type: %s, md id: %s, bounds: %s]", // node.getClass().getSimpleName(), // node.getName(), // toShortString(node.getObjectId()), // node.getType(), // (node.getMetadataId().isPresent() ? toShortString(node.getMetadataId().get()) : "NULL"), // bounds); }
public static int hashCode(@NonNull Node node) { return 17 ^ node.getType().hashCode() * node.getName().hashCode() * node.getObjectId().hashCode(); }
public Node update(final ObjectId newId, final @Nullable Envelope newBounds) { ObjectId mdId = getMetadataId().or(ObjectId.NULL); return Node.create(getName(), newId, mdId, getType(), newBounds, getExtraData()); }
/** * Provides for natural ordering of {@code Node}, based on {@link #getName() name} */ public final @Override int compareTo(Node o) { int c = getName().compareTo(o.getName()); if (c == 0) { c = getType().compareTo(o.getType()); } if (c == 0) { c = getObjectId().compareTo(o.getObjectId()); } return c; }
/** * Equality check based on {@link #getName() name}, {@link #getType() type}, and * {@link #getObjectId() objectId}; {@link #getMetadataId()} is NOT part of the equality check. */ @Override public final boolean equals(Object o) { if (!(o instanceof Node)) { return false; } Node r = (Node) o; return getType().equals(r.getType()) && getName().equals(r.getName()) && getObjectId().equals(r.getObjectId()); }
/** * Hash code is based on name and object id */ @Override public final int hashCode() { return 17 ^ getType().hashCode() * getName().hashCode() * getObjectId().hashCode(); }
public Node update(final ObjectId newId, final @Nullable Envelope newBounds) { ObjectId mdId = getMetadataId().or(ObjectId.NULL); return RevObjectFactory.defaultInstance().createNode(getName(), newId, mdId, getType(), newBounds, getExtraData()); }
private long sizeOf(Node node) { return node.getType().equals(TYPE.TREE) ? sizeOfTree(node.getObjectId()) : 1L; }
@Override public void funnel(Node ref, PrimitiveSink into) { RevObjectTypeFunnel.funnel(ref.getType(), into); StringFunnel.funnel((CharSequence) ref.getName(), into); ObjectIdFunnel.funnel(ref.getObjectId(), into); ObjectIdFunnel.funnel(ref.getMetadataId().or(ObjectId.NULL), into); Map<String, Object> extraData = ref.getExtraData(); // consider extraData only if it's not empty to maintain backwards compatibility with // Geogig pre 1.1 if (!extraData.isEmpty()) { PropertyValueFunnel.funnel(extraData, into); } } };
private long sizeOf(Node node) { return node.getType().equals(TYPE.TREE) ? sizeOfTree(node.getObjectId()) : 1L; }
private void writeNode(Node node, String tag) throws StreamWriterException { out.writeStartArrayElement(tag); writeElement("name", node.getName()); writeElement("type", node.getType().name()); writeElement("objectid", node.getObjectId().toString()); writeElement("metadataid", node.getMetadataId().or(ObjectId.NULL).toString()); out.writeEndArrayElement(); }
private void assertNode(MutableTree mutableTree, ObjectId treeId, @Nullable ObjectId metadtaId, String nodeName) { assertNotNull(mutableTree); Node node = mutableTree.getNode(); assertNotNull(node); assertEquals(treeId, node.getObjectId()); if (metadtaId == null) { assertFalse(node.getMetadataId().isPresent()); } else { assertEquals(metadtaId, node.getMetadataId().get()); } assertEquals(nodeName, node.getName()); assertEquals(TYPE.TREE, node.getType()); }
private void assertNode(MutableTree mutableTree, ObjectId treeId, @Nullable ObjectId metadtaId, String nodeName) { assertNotNull(mutableTree); Node node = mutableTree.getNode(); assertNotNull(node); assertEquals(treeId, node.getObjectId()); if (metadtaId == null) { assertFalse(node.getMetadataId().isPresent()); } else { assertEquals(metadtaId, node.getMetadataId().get()); } assertEquals(nodeName, node.getName()); assertEquals(TYPE.TREE, node.getType()); }
@Test public void testNodeAccessorsAndConstructors() { ObjectId oid = ObjectId.valueOf("abc123000000000000001234567890abcdef0000"); Map<String, Object> extraData = new HashMap<String, Object>(); extraData.put("key", "value"); Node node = RevObjectFactory.defaultInstance().createNode("Points", oid, ObjectId.NULL, TYPE.TREE, null, extraData); assertEquals(Optional.absent(), node.getMetadataId()); assertEquals("Points", node.getName()); assertEquals(oid, node.getObjectId()); assertEquals(TYPE.TREE, node.getType()); assertEquals(extraData, node.getExtraData()); }