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

com.datastax.driver.dse.graph.DefaultVertex Maven / Gradle / Ivy

/*
 * Copyright DataStax, Inc.
 *
 * This software can be used solely with DataStax Enterprise. Please consult the license at
 * http://www.datastax.com/terms/datastax-dse-driver-license-terms
 */
package com.datastax.driver.dse.graph;

import com.google.common.base.Function;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterators;
import java.util.Iterator;

/** A default representation of a vertex in DSE graph. */
class DefaultVertex extends DefaultElement implements Vertex {

  private static final Function GRAPH_NODE_TO_VERTEX_PROPERTY =
      new Function() {
        @Override
        public VertexProperty apply(GraphNode input) {
          return input.asVertexProperty();
        }
      };

  DefaultVertex() {}

  @Override
  public boolean equals(Object o) {
    return this == o || o instanceof Vertex && super.equals(o);
  }

  @Override
  public VertexProperty getProperty(String name) {
    if (properties == null || properties.isEmpty() || !properties.containsKey(name)) return null;
    Iterator iterator = getProperties(name);
    if (!iterator.hasNext()) return null;
    return iterator.next();
  }

  @Override
  public Iterator getProperties(String name) {
    if (properties == null || properties.isEmpty() || !properties.containsKey(name))
      return ImmutableSet.of().iterator();
    return Iterators.unmodifiableIterator(
        Iterators.transform(properties.get(name).iterator(), GRAPH_NODE_TO_VERTEX_PROPERTY));
  }

  @Override
  public Iterator getProperties() {
    if (properties == null || properties.isEmpty())
      return ImmutableSet.of().iterator();
    return Iterators.unmodifiableIterator(
        Iterators.transform(properties.values().iterator(), GRAPH_NODE_TO_VERTEX_PROPERTY));
  }

  @Override
  public String toString() {
    return "Vertex{" + "id=" + id + ", label='" + label + '\'' + ", properties=" + properties + '}';
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy