记录neo4j图形数据库关系线的遍历

[java] view plain copy
  1. /** 
  2.      *  
  3.      * 终端设备可视化关系网图 
  4.      * @param mac 
  5.      * @return 
  6.      * @throws Exception 
  7.      */  
  8.     public JSONObject findEquipByRestAPI(String mac) throws Exception {  
  9.           
  10.         JSONObject jsonData = new JSONObject();  
  11.         Node startNode = findNode(phoneLabel, "mac", mac.trim());  
  12.         if (startNode == null)  
  13.             return null;  
  14.           
  15.         if (startNode == null || !startNode.hasLabel(phoneLabel))  
  16.             return null;  
  17.         JSONArray nodeArray = new JSONArray();  
  18.         JSONArray linksArray = new JSONArray();  
  19.         JSONObject nodeobj = new JSONObject();  
  20.         Iterator<String> proKeys = startNode.getPropertyKeys().iterator();  
  21.         int i = 0;  
  22.         nodeobj.put("id", i);  
  23.         String key = "";  
  24.         while (proKeys.hasNext()) {  
  25.             key = proKeys.next();  
  26.             nodeobj.put(key, startNode.getProperty(key).toString());  
  27.             nodeobj.put("type""phone");  
  28.         }  
  29.           
  30.         HashMap<Integer,Integer> dict = new HashMap<Integer,Integer>();  
  31.         dict.put((int)startNode.getId(), i);  
  32.         nodeArray.add(nodeobj);  
  33.           
  34.         //获取关系下的路径  
  35.         TraversalDescription ships = Traversal.description().breadthFirst()  
  36.         .relationships(RelationType.CONTAIN)  
  37.         .relationships(RelationType.REGISTER)  
  38.         .relationships(RelationType.HAVE);  
  39.           
  40.         //遍历所有的关系path  
  41.         for(Path path : ships.traverse(startNode)){  
  42.             int start =0;  
  43.             int end = 0;  
  44.               
  45.             /*Node start_Node = path.startNode(); 
  46.             Node end_Node = path.endNode();*/  
  47.               
  48.             // path = (21938)--[CONTAIN,22803]-->(21941)<--[CONTAIN,22049]--(21940)  
  49.             Iterator<Relationship> it = path.relationships().iterator();  
  50.             //遍历每条path  获取  [CONTAIN,22803]  开始节点和结束节点       
  51.             while(it.hasNext()){  
  52.                 Relationship next = it.next();  
  53.                   
  54.                 //(21940)  
  55.                 Node start_Node = next.getStartNode();  
  56.                 //(21941)  
  57.                 Node end_Node = next.getEndNode();  
  58.                   
  59.                 if(start_Node != end_Node){  
  60.                     if(dict.toString().contains(start_Node.getId()+"")){  
  61.                         start = dict.get((int) start_Node.getId());  
  62.                     }  
  63.                     else{  
  64.                         nodeobj = this.renderer(start_Node);  
  65.                         if(nodeobj.size() > 0 && nodeobj != null){  
  66.                             start = nodeArray.size();  
  67.                             nodeobj.put("id", start);  
  68.                             nodeArray.add(nodeobj);  
  69.                             dict.put((int) start_Node.getId(), start);  
  70.                         }  
  71.                     }  
  72.                       
  73.                     if(dict.toString().contains(end_Node.getId()+"")){  
  74.                         end = dict.get((int)end_Node.getId());  
  75.                     }  
  76.                     else{  
  77.                         nodeobj = this.renderer(end_Node);  
  78.                           
  79.                         if(nodeobj.size() > 0 && nodeobj != null){  
  80.                             end = nodeArray.size();  
  81.                             nodeobj.put("id", end);  
  82.                             nodeArray.add(nodeobj);  
  83.                             dict.put((int) end_Node.getId(), end);  
  84.                         }  
  85.                     }  
  86.                     JSONObject link = new JSONObject();  
  87.                     link.put("source", start);  
  88.                     link.put("target", end);  
  89.                     if(!linksArray.contains(link)){  
  90.                         linksArray.add(link);  
  91.                     }  
  92.                 }  
  93.             }  
  94.               
  95.             /*Node start_Node = path.startNode(); 
  96.             Node end_Node = path.endNode();*/  
  97.               
  98.         }  
  99.         jsonData.put("links", linksArray);  
  100.         jsonData.put("nodes", nodeArray);  
  101.           
  102.         return jsonData;  
  103.           
  104.     }  
  105.   
  106.     private JSONObject renderer(Node node) {  
  107.         JSONArray nodeArray = new JSONArray();  
  108.         JSONObject nodeobj = new JSONObject();  
  109.         if (node.hasLabel(phoneLabel)) {  
  110.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  111.             while (proKeys.hasNext()) {  
  112.                 String key = proKeys.next();  
  113.                 if (!"pic".equals(key)) {  
  114.                     nodeobj.put(key, node.getProperty(key).toString());  
  115.                     nodeobj.put("type""phone");  
  116.                 }  
  117.             }  
  118.             nodeArray.add(nodeobj);  
  119.         }  
  120.         if (node.hasLabel(qqLabel)) {  
  121.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  122.             while (proKeys.hasNext()) {  
  123.                 String key = proKeys.next();  
  124.                 if (!"pic".equals(key)) {  
  125.                     nodeobj.put(key, node.getProperty(key).toString());  
  126.                     nodeobj.put("type""qq");  
  127.                 }  
  128.             }  
  129.             nodeArray.add(nodeobj);  
  130.         }  
  131.         if (node.hasLabel(emailLabel)) {  
  132.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  133.             while (proKeys.hasNext()) {  
  134.                 String key = proKeys.next();  
  135.                 if (!"pic".equals(key)) {  
  136.                     nodeobj.put(key, node.getProperty(key).toString());  
  137.                     nodeobj.put("type""email");  
  138.                 }  
  139.             }  
  140.             nodeArray.add(nodeobj);  
  141.         }  
  142.         if (node.hasLabel(accountLabel)) {  
  143.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  144.             while (proKeys.hasNext()) {  
  145.                 String key = proKeys.next();  
  146.                 if (!"pic".equals(key)) {  
  147.                     nodeobj.put(key, node.getProperty(key).toString());  
  148.                     nodeobj.put("type""account");  
  149.                 }  
  150.             }  
  151.             nodeArray.add(nodeobj);  
  152.         }  
  153.         if (node.hasLabel(personLabel)) {  
  154.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  155.             while (proKeys.hasNext()) {  
  156.                 String key = proKeys.next();  
  157.                 nodeobj.put(key, node.getProperty(key).toString());  
  158.                 nodeobj.put("type""person");  
  159.             }  
  160.             nodeArray.add(nodeobj);  
  161.         }  
  162.         if (node.hasLabel(addressLabel)) {  
  163.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  164.             while (proKeys.hasNext()) {  
  165.                 String key = proKeys.next();  
  166.                 nodeobj.put(key, node.getProperty(key).toString());  
  167.                 nodeobj.put("type""address");  
  168.             }  
  169.             nodeArray.add(nodeobj);  
  170.         }  
  171.         if (node.hasLabel(phonenumberLabel)) {  
  172.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  173.             while (proKeys.hasNext()) {  
  174.                 String key = proKeys.next();  
  175.                 nodeobj.put(key, node.getProperty(key).toString());  
  176.                 nodeobj.put("type""phonenumber");  
  177.             }  
  178.             nodeArray.add(nodeobj);  
  179.         }  
  180.         if (node.hasLabel(wechatLabel)) {  
  181.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  182.             while (proKeys.hasNext()) {  
  183.                 String key = proKeys.next();  
  184.                 nodeobj.put(key, node.getProperty(key).toString());  
  185.                 nodeobj.put("type""wechat");  
  186.             }  
  187.             nodeArray.add(nodeobj);  
  188.         }  
  189.               
  190.         return nodeobj;  
  191.     }  


 Traversal框架的使用(Java版本)


http://blog.csdn.net/u012191627/article/details/50675901



记录neo4j图形数据库关系线的遍历记录neo4j图形数据库关系线的遍历记录neo4j图形数据库关系线的遍历
[java] view plain copy
  1. /** 
  2.      *  
  3.      * 终端设备可视化关系网图 
  4.      * @param mac 
  5.      * @return 
  6.      * @throws Exception 
  7.      */  
  8.     public JSONObject findEquipByRestAPI(String mac) throws Exception {  
  9.           
  10.         JSONObject jsonData = new JSONObject();  
  11.         Node startNode = findNode(phoneLabel, "mac", mac.trim());  
  12.         if (startNode == null)  
  13.             return null;  
  14.           
  15.         if (startNode == null || !startNode.hasLabel(phoneLabel))  
  16.             return null;  
  17.         JSONArray nodeArray = new JSONArray();  
  18.         JSONArray linksArray = new JSONArray();  
  19.         JSONObject nodeobj = new JSONObject();  
  20.         Iterator<String> proKeys = startNode.getPropertyKeys().iterator();  
  21.         int i = 0;  
  22.         nodeobj.put("id", i);  
  23.         String key = "";  
  24.         while (proKeys.hasNext()) {  
  25.             key = proKeys.next();  
  26.             nodeobj.put(key, startNode.getProperty(key).toString());  
  27.             nodeobj.put("type""phone");  
  28.         }  
  29.           
  30.         HashMap<Integer,Integer> dict = new HashMap<Integer,Integer>();  
  31.         dict.put((int)startNode.getId(), i);  
  32.         nodeArray.add(nodeobj);  
  33.           
  34.         //获取关系下的路径  
  35.         TraversalDescription ships = Traversal.description().breadthFirst()  
  36.         .relationships(RelationType.CONTAIN)  
  37.         .relationships(RelationType.REGISTER)  
  38.         .relationships(RelationType.HAVE);  
  39.           
  40.         //遍历所有的关系path  
  41.         for(Path path : ships.traverse(startNode)){  
  42.             int start =0;  
  43.             int end = 0;  
  44.               
  45.             /*Node start_Node = path.startNode(); 
  46.             Node end_Node = path.endNode();*/  
  47.               
  48.             // path = (21938)--[CONTAIN,22803]-->(21941)<--[CONTAIN,22049]--(21940)  
  49.             Iterator<Relationship> it = path.relationships().iterator();  
  50.             //遍历每条path  获取  [CONTAIN,22803]  开始节点和结束节点       
  51.             while(it.hasNext()){  
  52.                 Relationship next = it.next();  
  53.                   
  54.                 //(21940)  
  55.                 Node start_Node = next.getStartNode();  
  56.                 //(21941)  
  57.                 Node end_Node = next.getEndNode();  
  58.                   
  59.                 if(start_Node != end_Node){  
  60.                     if(dict.toString().contains(start_Node.getId()+"")){  
  61.                         start = dict.get((int) start_Node.getId());  
  62.                     }  
  63.                     else{  
  64.                         nodeobj = this.renderer(start_Node);  
  65.                         if(nodeobj.size() > 0 && nodeobj != null){  
  66.                             start = nodeArray.size();  
  67.                             nodeobj.put("id", start);  
  68.                             nodeArray.add(nodeobj);  
  69.                             dict.put((int) start_Node.getId(), start);  
  70.                         }  
  71.                     }  
  72.                       
  73.                     if(dict.toString().contains(end_Node.getId()+"")){  
  74.                         end = dict.get((int)end_Node.getId());  
  75.                     }  
  76.                     else{  
  77.                         nodeobj = this.renderer(end_Node);  
  78.                           
  79.                         if(nodeobj.size() > 0 && nodeobj != null){  
  80.                             end = nodeArray.size();  
  81.                             nodeobj.put("id", end);  
  82.                             nodeArray.add(nodeobj);  
  83.                             dict.put((int) end_Node.getId(), end);  
  84.                         }  
  85.                     }  
  86.                     JSONObject link = new JSONObject();  
  87.                     link.put("source", start);  
  88.                     link.put("target", end);  
  89.                     if(!linksArray.contains(link)){  
  90.                         linksArray.add(link);  
  91.                     }  
  92.                 }  
  93.             }  
  94.               
  95.             /*Node start_Node = path.startNode(); 
  96.             Node end_Node = path.endNode();*/  
  97.               
  98.         }  
  99.         jsonData.put("links", linksArray);  
  100.         jsonData.put("nodes", nodeArray);  
  101.           
  102.         return jsonData;  
  103.           
  104.     }  
  105.   
  106.     private JSONObject renderer(Node node) {  
  107.         JSONArray nodeArray = new JSONArray();  
  108.         JSONObject nodeobj = new JSONObject();  
  109.         if (node.hasLabel(phoneLabel)) {  
  110.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  111.             while (proKeys.hasNext()) {  
  112.                 String key = proKeys.next();  
  113.                 if (!"pic".equals(key)) {  
  114.                     nodeobj.put(key, node.getProperty(key).toString());  
  115.                     nodeobj.put("type""phone");  
  116.                 }  
  117.             }  
  118.             nodeArray.add(nodeobj);  
  119.         }  
  120.         if (node.hasLabel(qqLabel)) {  
  121.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  122.             while (proKeys.hasNext()) {  
  123.                 String key = proKeys.next();  
  124.                 if (!"pic".equals(key)) {  
  125.                     nodeobj.put(key, node.getProperty(key).toString());  
  126.                     nodeobj.put("type""qq");  
  127.                 }  
  128.             }  
  129.             nodeArray.add(nodeobj);  
  130.         }  
  131.         if (node.hasLabel(emailLabel)) {  
  132.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  133.             while (proKeys.hasNext()) {  
  134.                 String key = proKeys.next();  
  135.                 if (!"pic".equals(key)) {  
  136.                     nodeobj.put(key, node.getProperty(key).toString());  
  137.                     nodeobj.put("type""email");  
  138.                 }  
  139.             }  
  140.             nodeArray.add(nodeobj);  
  141.         }  
  142.         if (node.hasLabel(accountLabel)) {  
  143.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  144.             while (proKeys.hasNext()) {  
  145.                 String key = proKeys.next();  
  146.                 if (!"pic".equals(key)) {  
  147.                     nodeobj.put(key, node.getProperty(key).toString());  
  148.                     nodeobj.put("type""account");  
  149.                 }  
  150.             }  
  151.             nodeArray.add(nodeobj);  
  152.         }  
  153.         if (node.hasLabel(personLabel)) {  
  154.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  155.             while (proKeys.hasNext()) {  
  156.                 String key = proKeys.next();  
  157.                 nodeobj.put(key, node.getProperty(key).toString());  
  158.                 nodeobj.put("type""person");  
  159.             }  
  160.             nodeArray.add(nodeobj);  
  161.         }  
  162.         if (node.hasLabel(addressLabel)) {  
  163.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  164.             while (proKeys.hasNext()) {  
  165.                 String key = proKeys.next();  
  166.                 nodeobj.put(key, node.getProperty(key).toString());  
  167.                 nodeobj.put("type""address");  
  168.             }  
  169.             nodeArray.add(nodeobj);  
  170.         }  
  171.         if (node.hasLabel(phonenumberLabel)) {  
  172.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  173.             while (proKeys.hasNext()) {  
  174.                 String key = proKeys.next();  
  175.                 nodeobj.put(key, node.getProperty(key).toString());  
  176.                 nodeobj.put("type""phonenumber");  
  177.             }  
  178.             nodeArray.add(nodeobj);  
  179.         }  
  180.         if (node.hasLabel(wechatLabel)) {  
  181.             Iterator<String> proKeys = node.getPropertyKeys().iterator();  
  182.             while (proKeys.hasNext()) {  
  183.                 String key = proKeys.next();  
  184.                 nodeobj.put(key, node.getProperty(key).toString());  
  185.                 nodeobj.put("type""wechat");  
  186.             }  
  187.             nodeArray.add(nodeobj);  
  188.         }  
  189.               
  190.         return nodeobj;  
  191.     }  


 Traversal框架的使用(Java版本)


http://blog.csdn.net/u012191627/article/details/50675901



记录neo4j图形数据库关系线的遍历记录neo4j图形数据库关系线的遍历记录neo4j图形数据库关系线的遍历