@Override public EdgeLabel addProperties(EdgeLabel edgeLabel, PropertyKey... keys) { for (PropertyKey key : keys) { if (key.cardinality() != Cardinality.SINGLE) { throw new IllegalArgumentException(String.format("An Edge [%s] can not have a property [%s] with the cardinality [%s].", edgeLabel, key, key.cardinality())); } addSchemaEdge(edgeLabel, key, TypeDefinitionCategory.PROPERTY_KEY_EDGE, null); } return edgeLabel; }
public StandardKeyInformation(PropertyKey key, Parameter... parameters) { Preconditions.checkNotNull(key); Preconditions.checkNotNull(parameters); this.dataType = key.dataType(); this.parameters = parameters; this.cardinality = key.cardinality(); }
public JanusGraphVertexProperty addProperty(JanusGraphVertex vertex, PropertyKey key, Object value) { return addProperty(key.cardinality().convert(), vertex, key, value); }
private String printPropertyKeys(boolean calledDirectly) { StringBuilder sb = new StringBuilder(); String pattern = "%-30s | %-11s | %-50s |\n"; Iterable<PropertyKey> keys = getRelationTypes(PropertyKey.class); boolean hasResults = false; if (calledDirectly) { sb.append(FIRSTDASH); } else { sb.append(DASHBREAK); } sb.append(String.format(pattern, "Property Key Name", "Cardinality", "Data Type")); sb.append(DASHBREAK); for (PropertyKey key: keys) { hasResults = true; sb.append(String.format(pattern, key.name(), key.cardinality(), key.dataType())); } if (hasResults && calledDirectly) { sb.append(DASHBREAK); } return sb.toString(); }
@Override public GraphCentricQueryBuilder orderBy(String keyName, org.apache.tinkerpop.gremlin.process.traversal.Order order) { Preconditions.checkArgument(tx.containsPropertyKey(keyName),"Provided key does not exist: %s",keyName); final PropertyKey key = tx.getPropertyKey(keyName); Preconditions.checkArgument(key!=null && order!=null,"Need to specify and key and an order"); Preconditions.checkArgument(Comparable.class.isAssignableFrom(key.dataType()), "Can only order on keys with comparable data type. [%s] has datatype [%s]", key.name(), key.dataType()); Preconditions.checkArgument(key.cardinality()== Cardinality.SINGLE, "Ordering is undefined on multi-valued key [%s]", key.name()); Preconditions.checkArgument(!orders.containsKey(key)); orders.add(key, Order.convert(order)); return this; }
public PropertyKeyDefinition(PropertyKey key) { this(key.name(),key.longId(),key.cardinality(),key.dataType()); }
@Override public VertexProperty.Cardinality getCardinality(final String key) { StandardJanusGraphTx tx = (StandardJanusGraphTx)JanusGraphFeatures.this.graph.newTransaction(); try { if (!tx.containsPropertyKey(key)) return tx.getConfiguration().getAutoSchemaMaker().defaultPropertyCardinality(key).convert(); return tx.getPropertyKey(key).cardinality().convert(); } finally { tx.rollback(); } }
for (PropertyKey key : keys) { Preconditions.checkArgument(key != null && key instanceof PropertyKeyVertex, "Need to provide valid keys: %s", key); if (key.cardinality() != Cardinality.SINGLE) allSingleKeys = false; if (key.isNew()) oneNewKey = true; else updatedTypes.add((PropertyKeyVertex) key);
public JanusGraphVertexProperty addProperty(VertexProperty.Cardinality cardinality, JanusGraphVertex vertex, PropertyKey key, Object value) { if (key.cardinality().convert()!=cardinality && cardinality!=VertexProperty.Cardinality.single) throw new SchemaViolationException("Key is defined for %s cardinality which conflicts with specified: %s",key.cardinality(),cardinality); verifyWriteAccess(vertex); Preconditions.checkArgument(!(key instanceof ImplicitKey),"Cannot create a property of implicit type: %s",key.name()); checkPropertyConstraintForVertexOrCreatePropertyConstraint(vertex, key); final Object normalizedValue = verifyAttribute(key, value); Cardinality keyCardinality = key.cardinality();
static boolean validJanusGraphOrder(OrderGlobalStep orderGlobalStep, Traversal rootTraversal, boolean isVertexOrder) { final List<Pair<Traversal.Admin, Object>> comparators = orderGlobalStep.getComparators(); for(final Pair<Traversal.Admin, Object> comp : comparators) { final String key; if (comp.getValue0() instanceof ElementValueTraversal && comp.getValue1() instanceof Order) { key = ((ElementValueTraversal) comp.getValue0()).getPropertyKey(); } else if (comp.getValue1() instanceof ElementValueComparator) { final ElementValueComparator evc = (ElementValueComparator) comp.getValue1(); if (!(evc.getValueComparator() instanceof Order)) return false; key = evc.getPropertyKey(); } else { // do not fold comparators that include nested traversals that are not simple ElementValues return false; } final JanusGraphTransaction tx = JanusGraphTraversalUtil.getTx(rootTraversal.asAdmin()); final PropertyKey pKey = tx.getPropertyKey(key); if (pKey == null || !(Comparable.class.isAssignableFrom(pKey.dataType())) || (isVertexOrder && pKey.cardinality() != Cardinality.SINGLE)) { return false; } } return true; }
assertEquals("uid",uid.name()); assertEquals(Cardinality.SINGLE,name.cardinality()); assertEquals(Multiplicity.MULTI,knows.multiplicity()); assertFalse(person.isPartitioned());
assertTrue(weight.isPropertyKey()); assertFalse(weight.isEdgeLabel()); assertEquals(Cardinality.SINGLE, weight.cardinality()); assertEquals(Cardinality.SINGLE, someId.cardinality()); assertEquals(Cardinality.SET, name.cardinality()); assertEquals(Cardinality.LIST, value.cardinality()); assertEquals(Object.class, someId.dataType()); assertEquals(Float.class, weight.dataType()); assertTrue(weight.isPropertyKey()); assertFalse(weight.isEdgeLabel()); assertEquals(Cardinality.SINGLE, weight.cardinality()); assertEquals(Cardinality.SINGLE, someId.cardinality()); assertEquals(Cardinality.SET, name.cardinality()); assertEquals(Cardinality.LIST, value.cardinality()); assertEquals(Object.class, someId.dataType()); assertEquals(Float.class, weight.dataType());
@Override public AtlasCardinality getCardinality() { return GraphDbObjectFactory.createCardinality(wrapped.cardinality()); }
private VertexProperty.Cardinality getPropertyKeyCardinality(String name) { RelationType rt = typeManager.getRelationType(name); if (null == rt || !rt.isPropertyKey()) return VertexProperty.Cardinality.single; PropertyKey pk = typeManager.getExistingPropertyKey(rt.longId()); switch (pk.cardinality()) { case SINGLE: return VertexProperty.Cardinality.single; case LIST: return VertexProperty.Cardinality.list; case SET: return VertexProperty.Cardinality.set; default: throw new IllegalStateException("Unknown cardinality " + pk.cardinality()); } }
private VertexProperty.Cardinality getPropertyKeyCardinality(String name) { RelationType rt = typeManager.getRelationType(name); if (null == rt || !rt.isPropertyKey()) return VertexProperty.Cardinality.single; PropertyKey pk = typeManager.getExistingPropertyKey(rt.longId()); switch (pk.cardinality()) { case SINGLE: return VertexProperty.Cardinality.single; case LIST: return VertexProperty.Cardinality.list; case SET: return VertexProperty.Cardinality.set; default: throw new IllegalStateException("Unknown cardinality " + pk.cardinality()); } }
public AtlasJanusGraph() { //determine multi-properties once at startup JanusGraphManagement mgmt = null; try { mgmt = AtlasJanusGraphDatabase.getGraphInstance().openManagement(); Iterable<PropertyKey> keys = mgmt.getRelationTypes(PropertyKey.class); for (PropertyKey key : keys) { if (key.cardinality() != Cardinality.SINGLE) { multiProperties.add(key.name()); } } } finally { if (mgmt != null) { mgmt.rollback(); } } }