@Override public void removeRelationshipProperty(long relationship, String propertyName) { int propertyKey = getOrCreatePropertyKeyId(propertyName); propertyDeletor.removeProperty( getRelationshipRecord(relationship), propertyKey, recordAccess.getPropertyRecords()); recordAccess.commit(); }
@Override public void removeNodeProperty(long node, String propertyName) { int propertyKey = getOrCreatePropertyKeyId(propertyName); propertyDeletor.removeProperty( getNodeRecord(node), propertyKey, recordAccess.getPropertyRecords()); recordAccess.commit(); }
@Override public void setNodeProperty(long node, String propertyName, Object newValue) { propertyCreator.setPrimitiveProperty( getNodeRecord(node), getOrCreatePropertyKeyId(propertyName), newValue, recordAccess.getPropertyRecords()); recordAccess.commit(); }
@Override public void setRelationshipProperty( long relationship, String propertyName, Object propertyValue) { propertyCreator.setPrimitiveProperty( getRelationshipRecord(relationship), getOrCreatePropertyKeyId(propertyName), propertyValue, recordAccess.getPropertyRecords()); recordAccess.commit(); }
@Override public void setRelationshipProperties(long rel, Map<String, Object> properties) { RelationshipRecord record = recordAccess.getRelRecords().getOrLoad(rel, null).forChangingData(); if (record.getNextProp() != Record.NO_NEXT_PROPERTY.intValue()) { propertyDeletor.getAndDeletePropertyChain(record, recordAccess.getPropertyRecords()); } record.setNextProp( propertyCreator.createPropertyChain( record, propertiesIterator(properties), recordAccess.getPropertyRecords())); recordAccess.commit(); }
@Override public void setNodeProperties(long node, Map<String, Object> properties) { NodeRecord record = getNodeRecord(node).forChangingData(); if (record.getNextProp() != Record.NO_NEXT_PROPERTY.intValue()) { propertyDeletor.getAndDeletePropertyChain(record, recordAccess.getPropertyRecords()); } record.setNextProp( propertyCreator.createPropertyChain( record, propertiesIterator(properties), recordAccess.getPropertyRecords())); recordAccess.commit(); }
private long internalCreateNode(long nodeId, Map<String, Object> properties, Label... labels) { NodeRecord nodeRecord = recordAccess.getNodeRecords().create(nodeId, null).forChangingData(); nodeRecord.setInUse(true); nodeRecord.setCreated(); nodeRecord.setNextProp( propertyCreator.createPropertyChain( nodeRecord, propertiesIterator(properties), recordAccess.getPropertyRecords())); if (labels.length > 0) { setNodeLabels(nodeRecord, labels); } recordAccess.commit(); return nodeId; }
@Override public void shutdown() { recordAccess.close(); if (isShutdown) { throw new IllegalStateException("Batch inserter already has shutdown"); } isShutdown = true; try { repopulateAllIndexes(); } catch (IOException e) { throw new RuntimeException(e); } neoStore.close(); try { storeLocker.release(); } catch (IOException e) { throw new UnderlyingStorageException("Could not release store lock", e); } msgLog.logMessage( Thread.currentThread() + " Clean shutdown on BatchInserter(" + this + ")", true); msgLog.close(); life.shutdown(); }
@Override public long createRelationship( long node1, long node2, RelationshipType type, Map<String, Object> properties) { long id = neoStore.getRelationshipStore().nextId(); int typeId = getOrCreateRelationshipTypeToken(type); relationshipCreator.relationshipCreate(id, typeId, node1, node2, recordAccess); if (properties != null && !properties.isEmpty()) { RelationshipRecord record = recordAccess.getRelRecords().getOrLoad(id, null).forChangingData(); record.setNextProp( propertyCreator.createPropertyChain( record, propertiesIterator(properties), recordAccess.getPropertyRecords())); } recordAccess.commit(); return id; }
private boolean primitiveHasProperty(PrimitiveRecord record, String propertyName) { int propertyKeyId = propertyKeyTokens.idOf(propertyName); return propertyKeyId != -1 && propertyTraverser.findPropertyRecordContaining( record, propertyKeyId, recordAccess.getPropertyRecords(), false) != Record.NO_NEXT_PROPERTY.intValue(); }
private void createConstraintRule(UniquenessConstraint constraint) { // TODO: Do not create duplicate index SchemaStore schemaStore = getSchemaStore(); long indexRuleId = schemaStore.nextId(); long constraintRuleId = schemaStore.nextId(); IndexRule indexRule = IndexRule.constraintIndexRule( indexRuleId, constraint.label(), constraint.propertyKeyId(), this.schemaIndexProviders.getDefaultProvider().getProviderDescriptor(), constraintRuleId); UniquenessConstraintRule constraintRule = UniquenessConstraintRule.uniquenessConstraintRule( constraintRuleId, constraint.label(), constraint.propertyKeyId(), indexRuleId); for (DynamicRecord record : schemaStore.allocateFrom(constraintRule)) { schemaStore.updateRecord(record); } schemaCache.addSchemaRule(constraintRule); for (DynamicRecord record : schemaStore.allocateFrom(indexRule)) { schemaStore.updateRecord(record); } schemaCache.addSchemaRule(indexRule); labelsTouched = true; recordAccess.commit(); }
@Override public Map<String, Object> getRelationshipProperties(long relId) { RelationshipRecord record = recordAccess.getRelRecords().getOrLoad(relId, null).forChangingData(); if (record.getNextProp() != Record.NO_NEXT_PROPERTY.intValue()) { return getPropertyChain(record.getNextProp()); } return Collections.emptyMap(); }
private void createIndexRule(Label label, String propertyKey) { // TODO: Do not create duplicate index SchemaStore schemaStore = getSchemaStore(); IndexRule schemaRule = IndexRule.indexRule( schemaStore.nextId(), getOrCreateLabelId(label.name()), getOrCreatePropertyKeyId(propertyKey), this.schemaIndexProviders.getDefaultProvider().getProviderDescriptor()); for (DynamicRecord record : schemaStore.allocateFrom(schemaRule)) { schemaStore.updateRecord(record); } schemaCache.addSchemaRule(schemaRule); labelsTouched = true; recordAccess.commit(); }
private Map<String, Object> getPropertyChain(long nextProp) { final Map<String, Object> map = new HashMap<>(); propertyTraverser.getPropertyChain( nextProp, recordAccess.getPropertyRecords(), new Listener<PropertyBlock>() { @Override public void receive(PropertyBlock propBlock) { String key = propertyKeyTokens.nameOf(propBlock.getKeyIndexId()); DefinedProperty propertyData = propBlock.newPropertyData(getPropertyStore()); Object value = propertyData.value() != null ? propertyData.value() : propBlock.getType().getValue(propBlock, getPropertyStore()); map.put(key, value); } }); return map; }
@Override public void setNodeLabels(long node, Label... labels) { NodeRecord record = getNodeRecord(node).forChangingData(); setNodeLabels(record, labels); recordAccess.commit(); }
private RecordProxy<Long, RelationshipRecord, Void> getRelationshipRecord(long id) { if (id < 0 || id >= getRelationshipStore().getHighId()) { throw new NotFoundException("id=" + id); } return recordAccess.getRelRecords().getOrLoad(id, null); }
@Override public boolean relationshipHasProperty(long relationship, String propertyName) { return primitiveHasProperty( recordAccess.getRelRecords().getOrLoad(relationship, null).forReadingData(), propertyName); }