/** * @param entityMetadata * @return */ protected String getIndexTableName(EntityMetadata entityMetadata) { return entityMetadata.getIndexName() + OracleNOSQLConstants.SECONDARY_INDEX_SUFFIX; }
/** * Index super column. * * @param metadata * the metadata * @param object * the object * @param currentDoc * the current doc * @param embeddedObject * the embedded object * @param superColumn * the super column * @param metamodel */ protected void createSuperColumnDocument(EntityMetadata metadata, Object object, Document currentDoc, Object embeddedObject, EmbeddableType superColumn, MetamodelImpl metamodel) { // Add all super column fields into document Set<Attribute> attributes = superColumn.getAttributes(); Iterator<Attribute> iter = attributes.iterator(); while (iter.hasNext()) { Attribute attr = iter.next(); java.lang.reflect.Field field = (java.lang.reflect.Field) attr.getJavaMember(); String colName = field.getName(); String indexName = metadata.getIndexName(); addFieldToDocument(embeddedObject, currentDoc, field, colName, indexName); } // Add all entity fields to document addEntityFieldsToDocument(metadata, object, currentDoc, metamodel); }
java.lang.reflect.Field field = (java.lang.reflect.Field) attr.getJavaMember(); String colName = field.getName(); String indexName = metadata.getIndexName(); addFieldToDocument(embeddedObject, currentDoc, field, colName, indexName);
new Field(IndexingConstants.ENTITY_INDEXNAME_FIELD, metadata.getIndexName(), Field.Store.NO, Field.Index.ANALYZED_NO_NORMS); document.add(luceneField);
/** * Deletes a {@link Node} from manually created index if auto-indexing is * disabled * * @param entityMetadata * @param graphDb * @param node */ public void deleteNodeIndex(EntityMetadata entityMetadata, GraphDatabaseService graphDb, Node node) { if (!isNodeAutoIndexingEnabled(graphDb) && entityMetadata.isIndexable()) { Index<Node> nodeIndex = graphDb.index().forNodes(entityMetadata.getIndexName()); nodeIndex.remove(node); } }
/** * Deletes a {@link Relationship} from manually created index if * auto-indexing is disabled * * @param entityMetadata * @param graphDb * @param relationship */ public void deleteRelationshipIndex(EntityMetadata entityMetadata, GraphDatabaseService graphDb, Relationship relationship) { if (!isRelationshipAutoIndexingEnabled(graphDb) && entityMetadata.isIndexable()) { Index<Relationship> relationshipIndex = graphDb.index().forRelationships(entityMetadata.getIndexName()); relationshipIndex.remove(relationship); } }
/** * If node auto-indexing is disabled,manually index this Node * * @param entityMetadata * @param graphDb * @param autoIndexing * @param node */ public void indexNode(EntityMetadata entityMetadata, GraphDatabaseService graphDb, Node node, MetamodelImpl metaModel) { if (!isNodeAutoIndexingEnabled(graphDb) && entityMetadata.isIndexable()) { Index<Node> nodeIndex = graphDb.index().forNodes(entityMetadata.getIndexName()); addNodeIndex(entityMetadata, node, nodeIndex, metaModel); } }
/** * If relationship auto-indexing is disabled, manually index this * relationship * * @param entityMetadata * @param graphDb * @param autoIndexing * @param node */ public void indexRelationship(EntityMetadata entityMetadata, GraphDatabaseService graphDb, Relationship relationship, MetamodelImpl metaModel) { if (!isRelationshipAutoIndexingEnabled(graphDb) && entityMetadata.isIndexable()) { Index<Relationship> relationshipIndex = graphDb.index().forRelationships(entityMetadata.getIndexName()); addRelationshipIndex(entityMetadata, relationship, relationshipIndex, metaModel); } }
String indexName = metadata.getIndexName(); List<Relation> relations = metadata.getRelations(); for (Relation relation : relations) {
public void indexNodeUsingBatchIndexer(BatchInserterIndexProvider indexProvider, EntityMetadata entityMetadata, long nodeId, Map<String, Object> nodeProperties, boolean nodeAutoIndexingEnabled) { BatchInserterIndex nodeIndex = null; if (!nodeAutoIndexingEnabled && entityMetadata.isIndexable()) { nodeIndex = indexProvider.nodeIndex(entityMetadata.getIndexName(), MapUtil.stringMap("type", "exact")); } else { nodeIndex = indexProvider.nodeIndex("node_auto_index", MapUtil.stringMap("type", "exact")); } if (nodeIndex != null) nodeIndex.add(nodeId, nodeProperties); }
public void indexRelationshipUsingBatchIndexer(BatchInserterIndexProvider indexProvider, EntityMetadata entityMetadata, long relationshipId, Map<String, Object> relationshipProperties, boolean relationshipAutoIndexingEnabled) { BatchInserterIndex relationshipIndex = null; if (!relationshipAutoIndexingEnabled && entityMetadata.isIndexable()) { relationshipIndex = indexProvider.relationshipIndex(entityMetadata.getIndexName(), MapUtil.stringMap("type", "exact")); } else { relationshipIndex = indexProvider.relationshipIndex("relationship_auto_index", MapUtil.stringMap("type", "exact")); } if (relationshipIndex != null) relationshipIndex.add(relationshipId, relationshipProperties); }
/** * If node auto-indexing is disabled, Update index for this node manually * * @param entityMetadata * @param graphDb * @param autoIndexing * @param node */ public void updateNodeIndex(EntityMetadata entityMetadata, GraphDatabaseService graphDb, Node node, MetamodelImpl metaModel) { if (!isNodeAutoIndexingEnabled(graphDb) && entityMetadata.isIndexable()) { Index<Node> nodeIndex = graphDb.index().forNodes(entityMetadata.getIndexName()); // Remove all exiting node entries from Index nodeIndex.remove(node); // Recreate fresh index on this node addNodeIndex(entityMetadata, node, nodeIndex, metaModel); } }
/** * If relationship auto-indexing is disabled, Update index for this * relationship manually * * @param entityMetadata * @param graphDb * @param autoIndexing * @param node */ public void updateRelationshipIndex(EntityMetadata entityMetadata, GraphDatabaseService graphDb, Relationship relationship, MetamodelImpl metaModel) { if (!isRelationshipAutoIndexingEnabled(graphDb) && entityMetadata.isIndexable()) { Index<Relationship> relationshipIndex = graphDb.index().forRelationships(entityMetadata.getIndexName()); // Remove all existing relationship entries from Index relationshipIndex.remove(relationship); // Recreate fresh index on this relationship addRelationshipIndex(entityMetadata, relationship, relationshipIndex, metaModel); } }
/** * Gets (if available) or creates a relationship for the given entity */ private Relationship getOrCreateRelationshipWithUniqueFactory(Object entity, EntityMetadata m, GraphDatabaseService graphDb) { Object id = PropertyAccessorHelper.getObject(entity, (Field) m.getIdAttribute().getJavaMember()); final String idFieldName = m.getIdAttribute().getName(); UniqueFactory<Relationship> factory = new UniqueFactory.UniqueRelationshipFactory(graphDb, m.getIndexName()) { @Override protected Relationship create(Map<String, Object> paramMap) { return null; } @Override protected void initialize(Relationship relationship, Map<String, Object> properties) { relationship.setProperty(idFieldName, properties.get(idFieldName)); } }; return factory.getOrCreate(idFieldName, id); }
queryBuilder.appendIndexName(metadata.getIndexName()).appendPropertyName(idColumn) .buildQuery(condition, valueAsString, valueClazz); metadata.getIndexName(), valueClazz); queryBuilder.appendIndexName(metadata.getIndexName()) .appendPropertyName(getPropertyName(metadata, property, kunderaMetadata)) .buildQuery(condition, valueAsString, valueClazz); queryBuilder.appendIndexName(metadata.getIndexName()) .appendPropertyName(getPropertyName(metadata, property, kunderaMetadata)) .buildQuery(condition, valueAsString, valueClazz);
/** * Execute lucene query. * * @param m * the m * @param luceneQuery * the lucene query * @return the list */ public List<Object> executeLuceneQuery(EntityMetadata m, String luceneQuery) { log.info("Executing Lucene Query on Neo4J:" + luceneQuery); GraphDatabaseService graphDb = getConnection(); List<Object> entities = new ArrayList<Object>(); if (!indexer.isNodeAutoIndexingEnabled(graphDb) && m.isIndexable()) { Index<Node> nodeIndex = graphDb.index().forNodes(m.getIndexName()); IndexHits<Node> hits = nodeIndex.query(luceneQuery); addEntityFromIndexHits(m, entities, hits); } else { ReadableIndex<Node> autoNodeIndex = graphDb.index().getNodeAutoIndexer().getAutoIndex(); IndexHits<Node> hits = autoNodeIndex.query(luceneQuery); addEntityFromIndexHits(m, entities, hits); } return entities; }
/** * Adds the index properties. * * @param metadata * the metadata * @param entity * the object * @param document * the document * @param metaModel */ protected void addEntityFieldsToDocument(EntityMetadata metadata, Object entity, Document document, MetamodelImpl metaModel) { String indexName = metadata.getIndexName(); Map<String, PropertyIndex> indexProperties = metadata.getIndexProperties(); for (String columnName : indexProperties.keySet()) { PropertyIndex index = indexProperties.get(columnName); java.lang.reflect.Field property = index.getProperty(); String propertyName = index.getName(); addFieldToDocument(entity, document, property, propertyName, indexName); } if (metaModel.isEmbeddable(metadata.getIdAttribute().getBindableJavaType())) { Object id = PropertyAccessorHelper.getId(entity, metadata); EmbeddableType embeddableId = metaModel.embeddable(metadata.getIdAttribute().getBindableJavaType()); Set<Attribute> embeddedAttributes = embeddableId.getAttributes(); indexCompositeKey(embeddedAttributes, metadata, id, document, metaModel); } }
final String idUniqueValue = serializeIdAttributeValue(m, metaModel, id); UniqueFactory<Node> factory = new UniqueFactory.UniqueNodeFactory(graphDb, m.getIndexName())
/** * Searches a node from the database for a given key */ public Node searchNode(Object key, EntityMetadata m, GraphDatabaseService graphDb, boolean skipProxy) { Node node = null; String idColumnName = ((AbstractAttribute) m.getIdAttribute()).getJPAColumnName(); final MetamodelImpl metaModel = (MetamodelImpl) kunderaMetadata.getApplicationMetadata().getMetamodel( m.getPersistenceUnit()); if (metaModel.isEmbeddable(m.getIdAttribute().getBindableJavaType())) { key = serializeIdAttributeValue(m, metaModel, key); } if (indexer.isNodeAutoIndexingEnabled(graphDb)) { // Get the Node auto index ReadableIndex<Node> autoNodeIndex = graphDb.index().getNodeAutoIndexer().getAutoIndex(); IndexHits<Node> nodesFound = autoNodeIndex.get(idColumnName, key); node = getMatchingNodeFromIndexHits(nodesFound, skipProxy); } else { // Searching within manually created indexes Index<Node> nodeIndex = graphDb.index().forNodes(m.getIndexName()); IndexHits<Node> nodesFound = nodeIndex.get(idColumnName, key); node = getMatchingNodeFromIndexHits(nodesFound, skipProxy); } return node; }
public void indexNodeUsingBatchIndexer(BatchInserterIndexProvider indexProvider, EntityMetadata entityMetadata, long nodeId, Map<String, Object> nodeProperties, boolean nodeAutoIndexingEnabled) { BatchInserterIndex nodeIndex = null; if (!nodeAutoIndexingEnabled && entityMetadata.isIndexable()) { nodeIndex = indexProvider.nodeIndex(entityMetadata.getIndexName(), MapUtil.stringMap("type", "exact")); } else { nodeIndex = indexProvider.nodeIndex("node_auto_index", MapUtil.stringMap("type", "exact")); } if (nodeIndex != null) nodeIndex.add(nodeId, nodeProperties); }