@SuppressWarnings({ "unchecked", "rawtypes" }) private OrientIndex<?> loadIndex(final OIndex<?> rawIndex) { final OrientIndex<?> index = new OrientIndex(this, rawIndex); // REGISTER THE INDEX getContext(true).manualIndices.put(index.getIndexName(), index); return index; }
protected OrientIndex(final OrientBaseGraph graph, final String indexName, final Class<? extends Element> indexClass, final OType iType) { this.graph = graph; this.indexClass = indexClass; create(indexName, this.indexClass, iType); }
protected OrientIndex(final OrientBaseGraph orientGraph, final OIndex<?> rawIndex) { this.graph = orientGraph; this.underlying = rawIndex instanceof OIndexTxAwareMultiValue ? rawIndex : new OIndexTxAwareMultiValue( orientGraph.getRawGraph(), (OIndex<Collection<OIdentifiable>>) rawIndex); final ODocument metadata = rawIndex.getMetadata(); if (metadata == null) { load(rawIndex.getConfiguration()); } else load(metadata); }
idx.removeElement(this); OrientIndex<OrientEdge> idx = (OrientIndex<OrientEdge>) index; for (Edge e : allEdges) idx.removeElement((OrientEdge) e);
private List<Index<? extends Element>> loadManualIndexes() { final List<Index<? extends Element>> result = new ArrayList<Index<? extends Element>>(); for (OIndex<?> idx : getDatabase().getMetadata().getIndexManager().getIndexes()) { if (hasIndexClass(idx)) // LOAD THE INDEXES result.add(new OrientIndex<OrientElement>(this, idx)); } return result; }
private void removeContext() { final OrientGraphContext context = getContext(false); if (context != null) { for (Index<? extends Element> idx : context.manualIndices.values()) ((OrientIndex<?>) idx).close(); context.manualIndices.clear(); if (!context.rawGraph.isClosed()) { context.rawGraph.commit(); context.rawGraph.close(); } synchronized (contexts) { contexts.remove(context); } threadContext.set(null); } }
private void load(final ODocument metadata) { // LOAD TREEMAP final String indexClassName = metadata.field(CONFIG_CLASSNAME); final String recordKeyValueMap = metadata.field(CONFIG_RECORD_MAP_NAME); if (VERTEX.equals(indexClassName)) this.indexClass = Vertex.class; else if (EDGE.equals(indexClassName)) this.indexClass = Edge.class; else try { this.indexClass = (Class<T>) Class.forName(indexClassName); } catch (ClassNotFoundException e) { throw new IllegalArgumentException("Index class '" + indexClassName + "' is not registered. Supported ones: Vertex, Edge and custom class that extends them", e); } if (recordKeyValueMap == null) recordKeyValueIndex = buildKeyValueIndex(metadata); else recordKeyValueIndex = new OIndexTxAwareOneValue(graph.getRawGraph(), (OIndex<OIdentifiable>) graph.getRawGraph() .getMetadata().getIndexManager().getIndex(recordKeyValueMap)); }
idx.removeElement(this); OrientIndex<OrientEdge> idx = (OrientIndex<OrientEdge>) index; for (Edge e : allEdges) idx.removeElement((OrientEdge) e);
public Index<T> call(final OrientBaseGraph g) { final OIndexManager indexManager = getDatabase().getMetadata().getIndexManager(); if (indexManager.getIndex(indexName) != null) throw ExceptionFactory.indexAlreadyExists(indexName); final OrientIndex<? extends OrientElement> index = new OrientIndex<OrientElement>(g, indexName, indexClass, null); // SAVE THE CONFIGURATION INTO THE GLOBAL CONFIG saveIndexConfiguration(); return (Index<T>) index; } }, "create index '", indexName, "'");
@SuppressWarnings({ "unchecked", "rawtypes" }) public <T extends Element> Index<T> createIndex(final String indexName, final Class<T> indexClass, final Parameter... indexParameters) { final OrientGraphContext context = getContext(true); commitAnyActiveTx("create index '" + indexName + "'"); synchronized (contexts) { if (context.manualIndices.containsKey(indexName)) throw ExceptionFactory.indexAlreadyExists(indexName); final OrientIndex<? extends OrientElement> index = new OrientIndex<OrientElement>( this, indexName, indexClass, null); // ADD THE INDEX IN ALL CURRENT CONTEXTS for (OrientGraphContext ctx : contexts) ctx.manualIndices.put(index.getIndexName(), index); // SAVE THE CONFIGURATION INTO THE GLOBAL CONFIG saveIndexConfiguration(); return (Index<T>) index; } }
/** * Removes the Edge from the Graph. Connected vertices aren't removed. */ @Override public void remove() { final OrientBaseGraph graph = getGraph(); if (!isLightweight()) checkClass(); graph.setCurrentGraphInThreadLocal(); graph.autoStartTransaction(); for (final Index<? extends Element> index : graph.getIndices()) { if (Edge.class.isAssignableFrom(index.getIndexClass())) { OrientIndex<OrientEdge> idx = (OrientIndex<OrientEdge>) index; idx.removeElement(this); } } if (graph != null) graph.removeEdgeInternal(this); else // IN MEMORY CHANGES ONLY: USE NOTX CLASS OrientGraphNoTx.removeEdgeInternal(null, this); }
/** * Returns an index by name and class * * @param indexName Index name * @param indexClass Class as one or subclass of Vertex.class and Edge.class * * @return Index instance */ @SuppressWarnings("unchecked") @Override public <T extends Element> Index<T> getIndex(final String indexName, final Class<T> indexClass) { makeActive(); final OIndexManager indexManager = getDatabase().getMetadata().getIndexManager(); final OIndex idx = indexManager.getIndex(indexName); if (idx == null || !hasIndexClass(idx)) return null; final Index<? extends Element> index = new OrientIndex(this, idx); if (indexClass.isAssignableFrom(index.getIndexClass())) return (Index<T>) index; else throw ExceptionFactory.indexDoesNotSupportClass(indexName, indexClass); }
protected OrientIndex(final OrientBaseGraph orientGraph, final OIndex<?> rawIndex) { this.graph = orientGraph; this.underlying = rawIndex instanceof OIndexTxAwareMultiValue ? rawIndex : new OIndexTxAwareMultiValue( orientGraph.getRawGraph(), (OIndex<Collection<OIdentifiable>>) rawIndex); load(rawIndex.getConfiguration()); }
protected OrientIndex(final OrientBaseGraph graph, final String indexName, final Class<? extends Element> indexClass, final OType iType) { this.graph = graph; this.indexClass = indexClass; create(indexName, this.indexClass, iType); }
if (Edge.class.isAssignableFrom(index.getIndexClass())) { OrientIndex<OrientEdge> idx = (OrientIndex<OrientEdge>) index; idx.removeElement(this);