use of com.thinkaurelius.titan.graphdb.types.SchemaSource in project titan by thinkaurelius.
the class ManagementSystem method setTypeModifier.
private void setTypeModifier(final TitanSchemaElement element, final ModifierType modifierType, final Object value) {
Preconditions.checkArgument(element != null, "null schema element");
TypeDefinitionCategory cat = modifierType.getCategory();
if (cat.hasDataType() && null != value) {
Preconditions.checkArgument(cat.getDataType().equals(value.getClass()), "modifier value is not of expected type " + cat.getDataType());
}
TitanSchemaVertex typeVertex;
if (element instanceof TitanSchemaVertex) {
typeVertex = (TitanSchemaVertex) element;
} else if (element instanceof TitanGraphIndex) {
IndexType index = ((TitanGraphIndexWrapper) element).getBaseIndex();
assert index instanceof IndexTypeWrapper;
SchemaSource base = ((IndexTypeWrapper) index).getSchemaBase();
typeVertex = (TitanSchemaVertex) base;
} else
throw new IllegalArgumentException("Invalid schema element: " + element);
// remove any pre-existing value for the modifier, or return if an identical value has already been set
for (TitanEdge e : typeVertex.getEdges(TypeDefinitionCategory.TYPE_MODIFIER, Direction.OUT)) {
TitanSchemaVertex v = (TitanSchemaVertex) e.vertex(Direction.IN);
TypeDefinitionMap def = v.getDefinition();
Object existingValue = def.getValue(modifierType.getCategory());
if (null != existingValue) {
if (existingValue.equals(value)) {
//Already has the right value, don't need to do anything
return;
} else {
e.remove();
v.remove();
}
}
}
if (null != value) {
TypeDefinitionMap def = new TypeDefinitionMap();
def.setValue(cat, value);
TitanSchemaVertex cVertex = transaction.makeSchemaVertex(TitanSchemaCategory.TYPE_MODIFIER, null, def);
addSchemaEdge(typeVertex, cVertex, TypeDefinitionCategory.TYPE_MODIFIER, null);
}
updateSchemaVertex(typeVertex);
updatedTypes.add(typeVertex);
}
use of com.thinkaurelius.titan.graphdb.types.SchemaSource in project titan by thinkaurelius.
the class RelationTypeVertex method getKeyIndexes.
public Iterable<IndexType> getKeyIndexes() {
List<IndexType> result = indexes;
if (result == null) {
ImmutableList.Builder<IndexType> b = ImmutableList.builder();
for (Entry entry : getRelated(TypeDefinitionCategory.INDEX_FIELD, Direction.IN)) {
SchemaSource index = entry.getSchemaType();
b.add(index.asIndexType());
}
result = b.build();
indexes = result;
}
assert result != null;
return result;
}
Aggregations