@Override protected Iterator<E> flatMap(final Traverser.Admin<Element> traverser) { if (useMultiQuery) { //it is guaranteed that all elements are vertices assert multiQueryResults != null; return convertIterator(multiQueryResults.get(traverser.get())); } else if (traverser.get() instanceof Vertex) { TitanVertexQuery query = makeQuery((TitanTraversalUtil.getTitanVertex(traverser)).query()); return convertIterator(query.properties()); } else { //It is some other element (edge or vertex property) Iterator<E> iter; if (getReturnType().forValues()) { assert orders.isEmpty() && hasContainers.isEmpty(); iter = traverser.get().values(getPropertyKeys()); } else { //this asks for properties assert orders.isEmpty(); //HasContainers don't apply => empty result set if (!hasContainers.isEmpty()) return Collections.emptyIterator(); iter = (Iterator<E>) traverser.get().properties(getPropertyKeys()); } if (limit!=Query.NO_LIMIT) iter = Iterators.limit(iter,limit); return iter; } }
@Override protected Iterator<E> flatMap(final Traverser.Admin<Element> traverser) { if (useMultiQuery) { //it is guaranteed that all elements are vertices assert multiQueryResults != null; return convertIterator(multiQueryResults.get(traverser.get())); } else if (traverser.get() instanceof JanusGraphVertex || traverser.get() instanceof WrappedVertex) { final JanusGraphVertexQuery query = makeQuery((JanusGraphTraversalUtil.getJanusGraphVertex(traverser)).query()); return convertIterator(query.properties()); } else { //It is some other element (edge or vertex property) Iterator<E> iterator; if (getReturnType().forValues()) { assert orders.isEmpty() && hasContainers.isEmpty(); iterator = traverser.get().values(getPropertyKeys()); } else { //this asks for properties assert orders.isEmpty(); //HasContainers don't apply => empty result set if (!hasContainers.isEmpty()) return Collections.emptyIterator(); iterator = (Iterator<E>) traverser.get().properties(getPropertyKeys()); } if (limit!=Query.NO_LIMIT) iterator = Iterators.limit(iterator,limit); return iterator; } }
public static Map<String, Property> propertyMap(final Element element, final String... propertyKeys) { final Map<String, Property> propertyMap = new HashMap<>(); element.properties(propertyKeys).forEachRemaining(property -> propertyMap.put(property.key(), property)); return propertyMap; }
/** * Get the keys of the properties associated with this element. * The default implementation iterators the properties and stores the keys into a {@link HashSet}. * * @return The property key set */ public default Set<String> keys() { final Set<String> keys = new HashSet<>(); this.properties().forEachRemaining(property -> keys.add(property.key())); return Collections.unmodifiableSet(keys); }
/** * Add or set a property value for the {@code Element} given its key. */ public <V> Property<V> property(final String key, final V value);
public static Map<String, Object> propertyValueMap(final Element element, final String... propertyKeys) { final Map<String, Object> values = new HashMap<>(); element.properties(propertyKeys).forEachRemaining(property -> values.put(property.key(), property.value())); return values; }
@Override public <V> Iterator<? extends Property<V>> properties(final String... propertyKeys) { return (Iterator) IteratorUtils.filter(this.element.properties(propertyKeys), property -> !computeKeys.contains(property.key())); }
/** * Get the values of properties as an {@link Iterator}. */ public default <V> Iterator<V> values(final String... propertyKeys) { return IteratorUtils.map(this.<V>properties(propertyKeys), property -> property.value()); }
private static void writeElementProperties(final KryoShim kryo, final OutputShim output, final Element element) { final Iterator<? extends Property> properties = element.properties(); output.writeBoolean(properties.hasNext()); while (properties.hasNext()) { final Property p = properties.next(); output.writeString(p.key()); kryo.writeClassAndObject(output, p.value()); output.writeBoolean(properties.hasNext()); } } }
@Override protected Iterator<E> flatMap(final Traverser.Admin<Element> traverser) { return this.returnType.equals(PropertyType.VALUE) ? traverser.get().values(this.propertyKeys) : (Iterator) traverser.get().properties(this.propertyKeys); }
element.properties(this.propertyKeys) : TraversalUtil.applyAll(traverser, this.propertyTraversal);
public final boolean test(final Element element) { // it is OK to evaluate equality of ids via toString(), given that the test suite enforces the value of // id().toString() to be a first class representation of the identifier. a string test is only executed // if the predicate value is a String. this allows stuff like: g.V().has(id,lt(10)) to work properly if (this.key.equals(T.id.getAccessor())) return testingIdString ? testIdAsString(element) : testId(element); else if (this.key.equals(T.label.getAccessor())) return testLabel(element); else if (element instanceof VertexProperty && this.key.equals(T.value.getAccessor())) return testValue((VertexProperty) element); else if (element instanceof VertexProperty && this.key.equals(T.key.getAccessor())) return testKey((VertexProperty) element); else { if (element instanceof Vertex) { final Iterator<? extends Property> itty = element.properties(this.key); while (itty.hasNext()) { if (testValue(itty.next())) return true; } return false; } else { final Property property = element.property(this.key); return property.isPresent() && testValue(property); } } }
@Override public void deinit(Element element) { element.properties(WindupFrame.TYPE_PROP).forEachRemaining(Property::remove); }
public static Map<String, Property> propertyMap(final Element element, final String... propertyKeys) { final Map<String, Property> propertyMap = new HashMap<>(); element.properties(propertyKeys).forEachRemaining(property -> propertyMap.put(property.key(), property)); return propertyMap; }
/** * Get the keys of the properties associated with this element. * The default implementation iterators the properties and stores the keys into a {@link HashSet}. * * @return The property key set */ public default Set<String> keys() { final Set<String> keys = new HashSet<>(); this.properties().forEachRemaining(property -> keys.add(property.key())); return Collections.unmodifiableSet(keys); }
public static Map<String, Object> propertyValueMap(final Element element, final String... propertyKeys) { final Map<String, Object> values = new HashMap<>(); element.properties(propertyKeys).forEachRemaining(property -> values.put(property.key(), property.value())); return values; }
private Map propertiesMap(Element element) { if(element instanceof BaseElement) return ((BaseElement)element).allFields(); Map<String, Object> map = new HashMap<>(); element.properties().forEachRemaining(property -> map.put(property.key(), property.value())); return map; }
/** * Get the values of properties as an {@link Iterator}. */ public default <V> Iterator<V> values(final String... propertyKeys) { return IteratorUtils.map(this.<V>properties(propertyKeys), property -> property.value()); }
public static <E extends Element> Map<String, Object> fullProperties(E element) { Map<String, Object> properties = new HashMap<>(); properties.put(T.id.getAccessor(), element.id()); properties.put(T.label.getAccessor(), element.label()); element.properties().forEachRemaining(property -> properties.put(property.key(), property.value())); return properties; }
private static void writeElementProperties(final KryoShim kryo, final OutputShim output, final Element element) { final Iterator<? extends Property> properties = element.properties(); output.writeBoolean(properties.hasNext()); while (properties.hasNext()) { final Property p = properties.next(); output.writeString(p.key()); kryo.writeClassAndObject(output, p.value()); output.writeBoolean(properties.hasNext()); } } }