public static boolean isWriteableInstance(GraphDatabaseAPI db) { try { try { Class hadb = Class.forName("org.neo4j.kernel.ha.HighlyAvailableGraphDatabase"); boolean isSlave = hadb.isInstance(db) && !((Boolean)hadb.getMethod("isMaster").invoke(db)); if (isSlave) return false; } catch (ClassNotFoundException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { /* ignore */ } String role = db.execute("CALL dbms.cluster.role()").<String>columnAs("role").next(); return role.equalsIgnoreCase("LEADER"); } catch(QueryExecutionException e) { if (e.getStatusCode().equalsIgnoreCase("Neo.ClientError.Procedure.ProcedureNotFound")) return true; throw e; } }
private Result executeRequest(Statement request) { try { Map<String, Object> parameterMap = parameterConversion.convertParameters(request.getParameters()); String cypher = cypherModification.apply(request.getStatement()); if(LOGGER.isDebugEnabled()) { LOGGER.debug("Request: {} with params {}", cypher, parameterMap); } return graphDatabaseService.execute(cypher, parameterMap); } catch (QueryExecutionException qee) { throw new CypherException(qee.getStatusCode(), qee.getMessage(), qee); } catch (Exception e) { throw new RuntimeException(e); } } }
private Result executeRequest(Statement request) { try { Map<String, Object> parameterMap = this.parameterConversion.convertParameters(request.getParameters()); String cypher = cypherModification.apply(request.getStatement()); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Request: {} with params {}", cypher, parameterMap); } return graphDatabaseService.execute(cypher, parameterMap); } catch (QueryExecutionException qee) { throw new CypherException(qee.getStatusCode(), qee.getMessage(), qee); } catch (Exception e) { throw new RuntimeException(e); } } }
private Node insertTuple(EntityKey key, Tuple tuple, TupleTypeContext tupleTypeContext) { try { return getEntityQueries( key.getMetadata(), tupleTypeContext ).insertEntity( dataBase, key.getColumnValues() ); } catch (QueryExecutionException qee) { if ( CONSTRAINT_VIOLATION_CODE.equals( qee.getStatusCode() ) ) { Throwable cause = findRecognizableCause( qee ); if ( cause instanceof UniquePropertyValueValidationException ) { throw new TupleAlreadyExistsException( key, qee ); } } throw qee; } }
@Override public ClosableIterator<Tuple> callStoredProcedure(String storedProcedureName, ProcedureQueryParameters queryParameters, TupleContext tupleContext) { Map.Entry<String, Map<String, Object>> queryAndParams = buildProcedureQueryWithParams( storedProcedureName, queryParameters ); try { Result result = dataBase.execute( queryAndParams.getKey(), queryAndParams.getValue() ); return new EmbeddedNeo4jBackendQueryResultIterator( result, null, tupleContext ); } catch (QueryExecutionException e) { switch ( e.getStatusCode() ) { case BaseNeo4jDialect.PROCEDURE_CALL_FAILED_CODE: throw log.cannotExecuteStoredProcedure( storedProcedureName, e ); case BaseNeo4jDialect.PROCEDURE_NOT_FOUND_CODE: throw log.procedureWithResolvedNameDoesNotExist( storedProcedureName, e ); default: throw new HibernateException( e.getMessage() ); } } }
@Override public int executeBackendUpdateQuery(BackendQuery<String> backendQuery, QueryParameters queryParameters, TupleContext tupleContext) { Map<String, Object> parameters = getParameters( queryParameters ); String nativeQuery = buildNativeQuery( backendQuery, queryParameters ); try { Result result = dataBase.execute( nativeQuery, parameters ); return summaryUpdates( result ); } catch (QueryExecutionException qe) { throw log.nativeQueryException( qe.getStatusCode(), qe.getMessage(), qe ); } }
@Override public ClosableIterator<Tuple> executeBackendQuery(BackendQuery<String> backendQuery, QueryParameters queryParameters, TupleContext tupleContext) { Map<String, Object> parameters = getParameters( queryParameters ); String nativeQuery = buildNativeQuery( backendQuery, queryParameters ); try { Result result = dataBase.execute( nativeQuery, parameters ); EntityMetadataInformation entityMetadataInformation = backendQuery.getSingleEntityMetadataInformationOrNull(); return new EmbeddedNeo4jBackendQueryResultIterator( result, entityMetadataInformation, tupleContext ); } catch (QueryExecutionException qe) { throw log.nativeQueryException( qe.getStatusCode(), qe.getMessage(), qe ); } }