package com.demo;
import java.util.ArrayList;
import java.util.List;
import org.neo4j.driver.v1.AuthTokens;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.GraphDatabase;
import org.neo4j.driver.v1.Record;
import org.neo4j.driver.v1.Session;
import org.neo4j.driver.v1.StatementResult;
import static org.neo4j.driver.v1.Values.parameters;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 自动代码生成Controller
*
* @author sun
* @version 2018-06-01
*/
@Controller
@RequestMapping(value = "/neo4j")
public class MyController {
public Driver createDrive(){
return GraphDatabase.driver( "bolt://localhost:7687", AuthTokens.basic( "neo4j", "123456" ) );
}
@RequestMapping(value = "/save", method = RequestMethod.POST)
@ResponseBody
public RestfulResult save(@RequestBody Code code) {
RestfulResult restfulResult = new RestfulResult();
try{
Driver driver = createDrive();
Session session = driver.session();
StatementResult result = session.run( "CREATE (a:" + code.getLabel() + " {" + code.getProperty() + "}) return a");
while (result.hasNext())
{
Record record = result.next();
restfulResult.setData(record.fields().get(0).value().toString().replace("node<", "").replace(">", ""));
}
session.close();
driver.close();
}catch(Exception e){
restfulResult.setResult("RESULT_STATE_ERROR");
restfulResult.setMessage(e.getMessage());
}
return restfulResult;
}
@RequestMapping(value = "update", method = RequestMethod.POST)
public void update(@RequestBody Code code) {
RestfulResult restfulResult = new RestfulResult();
try{
Driver driver = createDrive();
Session session = driver.session();
StatementResult result = session.run("MATCH (a:" + code.getLabel() + ") WHERE a." + code.getWhere() + " SET a." + code.getUpdate() + " return COUNT(a)");
while (result.hasNext())
{
Record record = result.next();
restfulResult.setData(record.fields().get(0).value().toString());
}
session.close();
driver.close();
}catch(Exception e){
restfulResult.setResult("RESULT_STATE_ERROR");
restfulResult.setMessage(e.getMessage());
}
//CommUtils.printDataJason(response, restfulResult);
}
@RequestMapping(value = "delete", method = RequestMethod.POST)
public void delete(@RequestBody Code code) {
RestfulResult restfulResult = new RestfulResult();
try{
Driver driver = createDrive();
Session session = driver.session();
session.run( "match (n) where ID(n) = " + code.getId() +" detach delete n");
session.close();
driver.close();
}catch(Exception e){
restfulResult.setResult("RESULT_STATE_ERROR");
restfulResult.setMessage(e.getMessage());
}
//CommUtils.printDataJason(response, restfulResult);
}
@RequestMapping(value = "search", method = RequestMethod.POST)
public void search(@RequestBody Code code) {
RestfulResult restfulResult = new RestfulResult();
try{
Driver driver = createDrive();
Session session = driver.session();
StatementResult result = session.run("MATCH " + code.getProperty() +
" MATCH " + code.getRelation() +
" WHERE " + code.getWhere() +
" RETURN " + code.getResult());
List<String> resultList = new ArrayList<String>();
while ( result.hasNext() )
{
Record record = result.next();
resultList.add(record.get("id").toString() + " " + record.get("name").toString());
}
session.close();
driver.close();
restfulResult.setData(resultList);
}catch(Exception e){
restfulResult.setResult("RESULT_STATE_ERROR");
restfulResult.setMessage(e.getMessage());
}
//CommUtils.printDataJason(response, restfulResult);
}
@RequestMapping(value = "relate", method = RequestMethod.POST)
public void relate(@RequestBody Code code) {
RestfulResult restfulResult = new RestfulResult();
try{
Driver driver = createDrive();
Session session = driver.session();
session.run("MATCH (a:" + code.getNodeFromLabel() + "), (b:" + code.getNodeToLabel() + ") " +
"WHERE ID(a) = " + code.getNodeFromId() + " AND ID(b) = " + code.getNodeToId()
+ " CREATE (a)-[:" + code.getRelation() + "]->(b)");
session.close();
driver.close();
}catch(Exception e){
restfulResult.setResult("RESULT_STATE_ERROR");
restfulResult.setMessage(e.getMessage());
}
//CommUtils.printDataJason(response, restfulResult);
}
}