@Override public TokenWrite tokenWrite() { return internal.tokenWrite(); }
@Description( "Create a Property" ) @Procedure( name = "db.createProperty", mode = WRITE ) public void createProperty( @Name( "newProperty" ) String newProperty ) throws IllegalTokenNameException { tx.tokenWrite().propertyKeyGetOrCreateForName( newProperty ); }
@Description( "Create a RelationshipType" ) @Procedure( name = "db.createRelationshipType", mode = WRITE ) public void createRelationshipType( @Name( "newRelationshipType" ) String newRelationshipType ) throws IllegalTokenNameException { tx.tokenWrite().relationshipTypeGetOrCreateForName( newRelationshipType ); }
@Description( "Create a label" ) @Procedure( name = "db.createLabel", mode = WRITE ) public void createLabel( @Name( "newLabel" ) String newLabel ) throws IllegalTokenNameException, TooManyLabelsException { tx.tokenWrite().labelGetOrCreateForName( newLabel ); }
private int getOrCreateLabelId( String labelName ) throws ProcedureException { try { return ktx.tokenWrite().labelGetOrCreateForName( labelName ); } catch ( TooManyLabelsException | IllegalTokenNameException e ) { throw new ProcedureException( e.status(), e, e.getMessage() ); } }
private int[] getOrCreatePropertyIds( String[] propertyKeyNames ) throws ProcedureException { int[] propertyKeyIds = new int[propertyKeyNames.length]; for ( int i = 0; i < propertyKeyIds.length; i++ ) { try { propertyKeyIds[i] = ktx.tokenWrite().propertyKeyGetOrCreateForName( propertyKeyNames[i] ); } catch ( IllegalTokenNameException e ) { throw new ProcedureException( e.status(), e, e.getMessage() ); } } return propertyKeyIds; }
@Override public void setProperty( String key, Object value ) { KernelTransaction transaction = safeAcquireTransaction(); int propertyKeyId; try { propertyKeyId = transaction.tokenWrite().propertyKeyGetOrCreateForName( key ); } catch ( IllegalTokenNameException e ) { throw new IllegalArgumentException( format( "Invalid property key '%s'.", key ), e ); } try ( Statement ignore = transaction.acquireStatement() ) { transaction.dataWrite().graphSetProperty( propertyKeyId, Values.of( value, false ) ); } catch ( InvalidTransactionTypeKernelException e ) { throw new ConstraintViolationException( e.getMessage(), e ); } }
@Override public Object removeProperty( String key ) { KernelTransaction transaction = safeAcquireTransaction(); int propertyKeyId; try { propertyKeyId = transaction.tokenWrite().propertyKeyGetOrCreateForName( key ); } catch ( IllegalTokenNameException e ) { throw new IllegalArgumentException( format( "Invalid property key '%s'.", key ), e ); } try ( Statement ignore = transaction.acquireStatement() ) { return transaction.dataWrite().graphRemoveProperty( propertyKeyId ).asObjectCopy(); } catch ( InvalidTransactionTypeKernelException e ) { throw new ConstraintViolationException( e.getMessage(), e ); } }
@Override public Object removeProperty( String key ) throws NotFoundException { KernelTransaction transaction = spi.kernelTransaction(); try ( Statement ignore = transaction.acquireStatement() ) { int propertyKeyId = transaction.tokenWrite().propertyKeyGetOrCreateForName( key ); return transaction.dataWrite().nodeRemoveProperty( nodeId, propertyKeyId ).asObjectCopy(); } catch ( EntityNotFoundException e ) { throw new NotFoundException( e ); } catch ( IllegalTokenNameException e ) { throw new IllegalArgumentException( format( "Invalid property key '%s'.", key ), e ); } catch ( InvalidTransactionTypeKernelException e ) { throw new ConstraintViolationException( e.getMessage(), e ); } catch ( AutoIndexingKernelException e ) { throw new IllegalStateException( "Auto indexing encountered a failure while removing property: " + e.getMessage(), e ); } }
@Override public Object removeProperty( String key ) { KernelTransaction transaction = spi.kernelTransaction(); try ( Statement ignore = transaction.acquireStatement() ) { int propertyKeyId = transaction.tokenWrite().propertyKeyGetOrCreateForName( key ); return transaction.dataWrite().relationshipRemoveProperty( id, propertyKeyId ).asObjectCopy(); } catch ( EntityNotFoundException e ) { throw new NotFoundException( e ); } catch ( IllegalTokenNameException e ) { throw new IllegalArgumentException( format( "Invalid property key '%s'.", key ), e ); } catch ( InvalidTransactionTypeKernelException e ) { throw new ConstraintViolationException( e.getMessage(), e ); } catch ( AutoIndexingKernelException e ) { throw new IllegalStateException( "Auto indexing encountered a failure while removing property: " + e.getMessage(), e ); } }
try propertyKeyId = transaction.tokenWrite().propertyKeyGetOrCreateForName( key );
private long createPersonNode( KernelTransaction ktx, Object value ) throws KernelException { int labelId = ktx.tokenWrite().labelGetOrCreateForName( PERSON_LABEL ); int propertyKeyId = ktx.tokenWrite().propertyKeyGetOrCreateForName( NAME_PROPERTY ); long nodeId = ktx.dataWrite().nodeCreate(); ktx.dataWrite().nodeAddLabel( nodeId, labelId ); ktx.dataWrite().nodeSetProperty( nodeId, propertyKeyId, Values.of( value ) ); return nodeId; }
private IndexReference createPersonNameIndex() throws KernelException { try ( Transaction tx = db.beginTx() ) { IndexReference index; KernelTransaction ktx = bridge.getKernelTransactionBoundToThisThread( true ); try ( Statement ignore = ktx.acquireStatement() ) { int labelId = ktx.tokenWrite().labelGetOrCreateForName( PERSON_LABEL ); int propertyKeyId = ktx.tokenWrite().propertyKeyGetOrCreateForName( NAME_PROPERTY ); LabelSchemaDescriptor descriptor = forLabel( labelId, propertyKeyId ); index = ktx.schemaWrite().indexCreate( descriptor ); } tx.success(); return index; } }
@Override public IndexDefinition createIndexDefinition( Label label, Optional<String> indexName, String... propertyKeys ) { KernelTransaction transaction = safeAcquireTransaction( transactionSupplier ); try ( Statement ignore = transaction.acquireStatement() ) { try { TokenWrite tokenWrite = transaction.tokenWrite(); int labelId = tokenWrite.labelGetOrCreateForName( label.name() ); int[] propertyKeyIds = getOrCreatePropertyKeyIds( tokenWrite, propertyKeys ); LabelSchemaDescriptor descriptor = forLabel( labelId, propertyKeyIds ); IndexReference indexReference = transaction.schemaWrite().indexCreate( descriptor, indexName ); return new IndexDefinitionImpl( this, indexReference, new Label[]{label}, propertyKeys, false ); } catch ( IllegalTokenNameException e ) { throw new IllegalArgumentException( e ); } catch ( InvalidTransactionTypeKernelException | SchemaKernelException e ) { throw new ConstraintViolationException( e.getUserMessage( new SilentTokenNameLookup( transaction.tokenRead() ) ), e ); } } }
public long makeNode( String label ) throws ProcedureException { long result; try ( Transaction tx = graph.beginTransaction( KernelTransaction.Type.explicit, AnonymousContext.write() ) ) { KernelTransaction ktx = txBridge.getKernelTransactionBoundToThisThread( true ); long nodeId = ktx.dataWrite().nodeCreate(); int labelId = ktx.tokenWrite().labelGetOrCreateForName( label ); ktx.dataWrite().nodeAddLabel( nodeId, labelId ); result = nodeId; tx.success(); } catch ( Exception e ) { log.error( "Failed to create node: " + e.getMessage() ); throw new ProcedureException( Status.Procedure.ProcedureCallFailed, "Failed to create node: " + e.getMessage(), e ); } return result; }
transaction.tokenWrite().labelGetOrCreateForName( label.name() ) );
@Override protected void createCompositeIndex( GraphDatabaseService graphDb, String label, String... properties ) throws Exception { GraphDatabaseAPI internal = (GraphDatabaseAPI) graphDb; KernelTransaction ktx = internal.getDependencyResolver() .resolveDependency( ThreadToStatementContextBridge.class ) .getKernelTransactionBoundToThisThread( true ); SchemaWrite schemaWrite = ktx.schemaWrite(); TokenWrite token = ktx.tokenWrite(); schemaWrite.indexCreate( SchemaDescriptorFactory.forLabel( token.labelGetOrCreateForName( "Person" ), token.propertyKeyGetOrCreateForName( "firstname" ), token.propertyKeyGetOrCreateForName( "surname" ) ) ); } }
private void getOrCreateIds() throws KernelException { try ( Transaction tx = graphDb.beginTx() ) { ThreadToStatementContextBridge bridge = graphDb.getDependencyResolver().resolveDependency( ThreadToStatementContextBridge.class ); TokenWrite tokenWrite = bridge.getKernelTransactionBoundToThisThread( true ).tokenWrite(); labelId = tokenWrite.labelGetOrCreateForName( "Person" ); relTypeId = tokenWrite.relationshipTypeGetOrCreateForName( "Knows" ); propertyKeyId = tokenWrite.propertyKeyGetOrCreateForName( "name" ); relPropertyKeyId = tokenWrite.propertyKeyGetOrCreateForName( "duration" ); tx.success(); } }
@Test public void mixingBeansApiWithKernelAPI() throws Exception { // 1: Start your transactions through the Beans API Transaction transaction = db.beginTx(); // 2: Get a hold of a KernelAPI transaction this way: KernelTransaction ktx = statementContextSupplier.getKernelTransactionBoundToThisThread( true ); // 3: Now you can interact through both the statement context and the kernel API to manipulate the // same transaction. Node node = db.createNode(); int labelId = ktx.tokenWrite().labelGetOrCreateForName( "labello" ); ktx.dataWrite().nodeAddLabel( node.getId(), labelId ); // 4: Commit through the beans API transaction.success(); transaction.close(); }
@BeforeClass public static void initStorage() throws Exception { try ( Transaction transaction = db.beginTx() ) { TokenWrite tokenWrite = getTransaction().tokenWrite(); tokenWrite.propertyKeyGetOrCreateForName( PROP1 ); tokenWrite.propertyKeyGetOrCreateForName( PROP2 ); tokenWrite.labelGetOrCreateForName( LABEL1 ); tokenWrite.labelGetOrCreateForName( LABEL2 ); tokenWrite.relationshipTypeGetOrCreateForName( TYPE1 ); transaction.success(); } SchemaStore schemaStore = resolveDependency( RecordStorageEngine.class ).testAccessNeoStores().getSchemaStore(); storage = new SchemaStorage( schemaStore ); }