public FetchFromIndexStep(OIndex<?> index, OBooleanExpression condition, OBinaryCondition additionalRangeCondition, boolean orderAsc, OCommandContext ctx, boolean profilingEnabled) { super(ctx, profilingEnabled); this.index = index; this.indexName = index.getName(); this.condition = condition; this.additionalRangeCondition = additionalRangeCondition; this.orderAsc = orderAsc; }
@Override public int compareTo(OIndex<T> index) { final String name = index.getName(); return this.name.compareTo(name); }
public List<String> getIndexNames() { final ArrayList<String> names = new ArrayList<String>(indexChain.size()); for (OIndex<?> oIndex : indexChain) { names.add(oIndex.getName()); } return names; }
public OIndex<?> call(ODatabaseDocumentInternal database) { return indexManagerTwo.getIndex(indexOne.getName()); } });
@Override public String prettyPrint(int depth, int indent) { if (isOrderAsc()) { return OExecutionStepInternal.getIndent(depth, indent) + "+ FETCH FROM INDEX VAUES ASC " + index.getName(); } else { return OExecutionStepInternal.getIndent(depth, indent) + "+ FETCH FROM INDEX VAUES DESC " + index.getName(); } }
@Override public int compareTo(@Nonnull OIndex<T> index) { acquireSharedLock(); try { final String name = index.getName(); return this.name.compareTo(name); } finally { releaseSharedLock(); } }
@Override protected void perfromSingleAction(AjaxRequestTarget target, OIndex<?> object) { //object.delete(); //TODO: This doesn't work - might be make PR to OrientDB? getIndexManager().dropIndex(object.getName()); }
/** * Drops index. * * @param db database object */ public void dropIndex(final ODatabaseObject db) { final String name = index.getName(); logger.info("Dropping existing index '{}' (class '{}'), because of definition mismatch", name, index.getDefinition().getClassName()); SchemeUtils.dropIndex(db, name); }
@Override public void onBegin(final Object iTask, final long iTotal, final Object iRebuild) { startTime = System.currentTimeMillis(); lastDump = startTime; rebuild = (Boolean) iRebuild; if (iTotal > 0) if (rebuild) OLogManager.instance().info(this, "- Rebuilding index %s.%s (estimated %,d items)...", idx.getDatabaseName(), idx.getName(), iTotal); else OLogManager.instance().debug(this, "- Building index %s.%s (estimated %,d items)...", idx.getDatabaseName(), idx.getName(), iTotal); }
@Override protected void handleObject(OIndex<?> object) { indexName = object.getName(); OIndexDefinition indexDefinition = object.getDefinition(); if(indexDefinition!=null) { String className = indexDefinition.getClassName(); if(className!=null) classModel = new OClassModel(className); } }
private void dropRelatedIndexes(final List<OIndex<?>> indexes) { final ODatabaseDocument database = getDatabase(); for (final OIndex<?> index : indexes) { database.command("DROP INDEX " + index.getName()).close(); } }
private void dropClassIndexes(ODatabaseDocumentInternal database, final OClass cls) { final OIndexManager indexManager = database.getMetadata().getIndexManager(); for (final OIndex<?> index : indexManager.getClassIndexes(cls.getName())) indexManager.dropIndex(index.getName()); }
@Override public void onDrop(final ODatabaseInternal db) { try { if (db.isClosed()) return; OLogManager.instance().debug(this, "Dropping Lucene indexes..."); db.getMetadata().getIndexManager().getIndexes().stream().filter(idx -> idx.getInternal() instanceof OLuceneFullTextIndex) .peek(idx -> OLogManager.instance().debug(this, "deleting index " + idx.getName())).forEach(idx -> idx.delete()); } catch (Exception e) { OLogManager.instance().warn(this, "Error on dropping Lucene indexes", e); } }
@Override protected OIndex<?> createInstance(OIndex proxy) { OSchema schema = OrientDbWebSession.get().getDatabase().getMetadata().getSchema(); OClass oClass = schema.getClass(proxy.getDefinition().getClassName()); String name = proxy.getName(); List<String> fields = proxy.getDefinition().getFields(); String type = proxy.getType(); if(name==null) name=oClass.getName()+"."+fields.get(0); ODocument metadata = proxy.getMetadata(); String algorithm = proxy.getAlgorithm(); values.keySet().retainAll(RW_ATTRS); return oClass.createIndex(name, type, null, metadata, algorithm, fields.toArray(new String[0])); }
@Override protected OIndex<?> createInstance(OIndex proxy) { OSchema schema = OrientDbWebSession.get().getDatabase().getMetadata().getSchema(); OClass oClass = schema.getClass(proxy.getDefinition().getClassName()); String name = proxy.getName(); List<String> fields = proxy.getDefinition().getFields(); String type = proxy.getType(); if(name==null) name=oClass.getName()+"."+fields.get(0); ODocument metadata = proxy.getMetadata(); String algorithm = proxy.getAlgorithm(); values.keySet().retainAll(RW_ATTRS); return oClass.createIndex(name, type, null, metadata, algorithm, fields.toArray(new String[0])); }
private void removeClusterFromIndexes(final int iId) { if (getDatabase().getStorage().getUnderlying() instanceof OAbstractPaginatedStorage) { final String clusterName = getDatabase().getClusterNameById(iId); final List<String> indexesToRemove = new ArrayList<String>(); for (final OIndex<?> index : getIndexes()) indexesToRemove.add(index.getName()); final OIndexManager indexManager = getDatabase().getMetadata().getIndexManager(); for (final String indexName : indexesToRemove) indexManager.removeClusterFromIndex(clusterName, indexName); } }
private void addClusterIdToIndexes(int iId) { ODatabaseDocumentInternal database = ODatabaseRecordThreadLocal.instance().getIfDefined(); if (database != null && database.getStorage().getUnderlying() instanceof OAbstractPaginatedStorage) { final String clusterName = getDatabase().getClusterNameById(iId); final List<String> indexesToAdd = new ArrayList<String>(); for (OIndex<?> index : getIndexes()) indexesToAdd.add(index.getName()); final OIndexManager indexManager = getDatabase().getMetadata().getIndexManager(); for (String indexName : indexesToAdd) indexManager.addClusterToIndex(clusterName, indexName); } }
protected void removeElement(final T element) { graph.setCurrentGraphInThreadLocal(); graph.autoStartTransaction(); final OSQLSynchQuery<ODocument> query = new OSQLSynchQuery<ODocument>("select from index:" + recordKeyValueIndex.getName() + " where key between [" + element.getIdentity() + "] and [" + element.getIdentity() + "]"); final Collection<ODocument> entries = (Collection<ODocument>) graph.getRawGraph().query(query); for (ODocument entry : entries) { final OCompositeKey key = entry.field("key"); final List<Object> keys = key.getKeys(); underlying.remove(keys.get(1).toString(), element.getIdentity()); recordKeyValueIndex.remove(key, element.getIdentity()); } }
@Override public OResult serialize() { OResultInternal result = OExecutionStepInternal.basicSerialize(this); result.setProperty("indexName", index.getName()); if (condition != null) { result.setProperty("condition", condition.serialize()); } if (additionalRangeCondition != null) { result.setProperty("additionalRangeCondition", additionalRangeCondition.serialize()); } result.setProperty("orderAsc", orderAsc); return result; }
@Override public void onDrop(final ODatabaseInternal iDatabase) { OLogManager.instance().info(this, "Dropping Lucene indexes..."); for (OIndex idx : iDatabase.getMetadata().getIndexManager().getIndexes()) { if (idx.getInternal() instanceof OLuceneIndex) { OLogManager.instance().info(this, "- index '%s'", idx.getName()); idx.delete(); } } }