diff --git a/WebContent/WEB-INF/lib/hippo-commons-0.0.1.jar b/WebContent/WEB-INF/lib/hippo-commons-0.0.1.jar index dd23c0561..1c1ee9440 100644 Binary files a/WebContent/WEB-INF/lib/hippo-commons-0.0.1.jar and b/WebContent/WEB-INF/lib/hippo-commons-0.0.1.jar differ diff --git a/WebContent/WEB-INF/views/flow.jsp b/WebContent/WEB-INF/views/flow.jsp new file mode 100644 index 000000000..27b02b624 --- /dev/null +++ b/WebContent/WEB-INF/views/flow.jsp @@ -0,0 +1,36 @@ +<%@ page language="java" contentType="text/html; charset=EUC-KR" + pageEncoding="EUC-KR"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +{ + "nodes": + [ + {"name":"Apache"}, + {"name":"BLOC_1"}, + {"name":"BLOC_2"}, + {"name":"BLOC_3"}, + {"name":"Arcus11211"}, + {"name":"Arcus11212"}, + {"name":"Arcus11213"} + ], + + "links": + [ + + {"source":0,"target":1,"value":11}, + {"source":0,"target":2,"value":31}, + {"source":0,"target":3,"value":11}, + + {"source":1,"target":4,"value":11}, + {"source":1,"target":5,"value":41}, + {"source":1,"target":6,"value":11}, + + {"source":2,"target":4,"value":111}, + {"source":2,"target":5,"value":114}, + {"source":2,"target":6,"value":11}, + + {"source":3,"target":4,"value":114}, + {"source":3,"target":5,"value":11}, + {"source":3,"target":6,"value":81} + + ] +} \ No newline at end of file diff --git a/src/main/java/com/nhn/hippo/web/controller/FlowChartController.java b/src/main/java/com/nhn/hippo/web/controller/FlowChartController.java index 33e8e453a..37bb88827 100644 --- a/src/main/java/com/nhn/hippo/web/controller/FlowChartController.java +++ b/src/main/java/com/nhn/hippo/web/controller/FlowChartController.java @@ -1,5 +1,8 @@ package com.nhn.hippo.web.controller; +import java.util.Iterator; +import java.util.Map; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -15,8 +18,15 @@ public class FlowChartController { @Autowired private FlowChartService flow; - @RequestMapping(value = "/flow", method = RequestMethod.POST) - public String arcus(Model model, @RequestParam("id") int id) { + @RequestMapping(value = "/flow", method = RequestMethod.GET) + public String arcus(Model model, @RequestParam("host") String[] hosts, @RequestParam("from") long from, @RequestParam("to") long to) { + + Iterator> iterator = flow.selectTraces(hosts, from, to); + + while (iterator.hasNext()) { + System.out.println(iterator.next()); + } + return "flow"; } } \ No newline at end of file diff --git a/src/main/java/com/nhn/hippo/web/service/FlowChartService.java b/src/main/java/com/nhn/hippo/web/service/FlowChartService.java index 1313de2f5..63dc4bd0c 100755 --- a/src/main/java/com/nhn/hippo/web/service/FlowChartService.java +++ b/src/main/java/com/nhn/hippo/web/service/FlowChartService.java @@ -1,5 +1,8 @@ package com.nhn.hippo.web.service; -public interface FlowChartService { +import java.util.Iterator; +import java.util.Map; +public interface FlowChartService { + public Iterator> selectTraces(String[] agentIds, long from, long to); } diff --git a/src/main/java/com/nhn/hippo/web/service/FlowChartServiceImpl.java b/src/main/java/com/nhn/hippo/web/service/FlowChartServiceImpl.java index 6b7deb669..02887b846 100755 --- a/src/main/java/com/nhn/hippo/web/service/FlowChartServiceImpl.java +++ b/src/main/java/com/nhn/hippo/web/service/FlowChartServiceImpl.java @@ -1,14 +1,76 @@ package com.nhn.hippo.web.service; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang.ArrayUtils; +import org.apache.hadoop.hbase.util.Bytes; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; + +import com.profiler.common.hbase.HBaseClient; +import com.profiler.common.hbase.HBaseQuery; +import com.profiler.common.hbase.HBaseQuery.HbaseColumn; +import com.profiler.common.hbase.HBaseTables; @Service -@Transactional public class FlowChartServiceImpl implements FlowChartService { - // @Autowired - // @Qualifier("memberDaoJdbc") - // MemberDao dao; + @Autowired + @Qualifier("hbaseClient") + HBaseClient client; + public Iterator> selectTraces(String[] agentIds, long from, long to) { + List column = new ArrayList(); + column.add(new HbaseColumn("Trace", "ID")); + + final List>> list = new ArrayList>>(); + + for (String agentId : agentIds) { + byte[] s = ArrayUtils.addAll(Bytes.toBytes(agentId), Bytes.toBytes(from)); + byte[] e = ArrayUtils.addAll(Bytes.toBytes(agentId), Bytes.toBytes(to)); + + HBaseQuery query = new HBaseQuery(HBaseTables.TRACE_INDEX, s, e, column); + Iterator> result = client.getHBaseData(query); + list.add(result); + } + + return new Iterator>() { + int pos = 0; + + @Override + public boolean hasNext() { + if (list.isEmpty()) + return false; + + while (pos < list.size()) { + if (list.get(pos).hasNext()) { + break; + } else { + pos++; + + if (pos >= list.size()) { + return false; + } else { + continue; + } + } + } + return true; + } + + @Override + public Map next() { + return list.get(pos).next(); + } + + @Override + public void remove() { + throw new RuntimeException("NOT SUPPORTED METHOD"); + } + }; + } } diff --git a/src/main/resources/hbase.properties b/src/main/resources/hbase.properties new file mode 100644 index 000000000..d3ca50aba --- /dev/null +++ b/src/main/resources/hbase.properties @@ -0,0 +1,4 @@ +hbase.client.host=localhost +hbase.client.port=2181 +#hbase.client.host=10.25.131.38 +#hbase.client.port=2181 \ No newline at end of file diff --git a/src/main/resources/servlet-context.xml b/src/main/resources/servlet-context.xml index bf28e82d0..f09a48c57 100644 --- a/src/main/resources/servlet-context.xml +++ b/src/main/resources/servlet-context.xml @@ -1,9 +1,11 @@ - - - - + - - + + + + \ No newline at end of file