/web/src/main/java/com/navercorp/pinpoint/web/view/TransactionInfoViewModel.java
Java | 362 lines | 289 code | 53 blank | 20 comment | 12 complexity | b5eec88e740c8120a60484606fab85e3 MD5 | raw file
- /*
- * Copyright 2015 NAVER Corp.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.navercorp.pinpoint.web.view;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.json.simple.JSONObject;
- import com.fasterxml.jackson.annotation.JsonProperty;
- import com.fasterxml.jackson.databind.annotation.JsonSerialize;
- import com.navercorp.pinpoint.common.util.DateUtils;
- import com.navercorp.pinpoint.web.applicationmap.Link;
- import com.navercorp.pinpoint.web.applicationmap.Node;
- import com.navercorp.pinpoint.web.vo.TransactionId;
- import com.navercorp.pinpoint.web.vo.callstacks.Record;
- import com.navercorp.pinpoint.web.vo.callstacks.RecordSet;
- /**
- * @author jaehong.kim
- * @author minwoo.jung
- */
- public class TransactionInfoViewModel {
- private TransactionId traceId;
- private Collection<Node> nodes;
- private Collection<Link> links;
- private RecordSet recordSet;
- private String completeState;
- private boolean logLinkEnable;
- private String logButtonName;
- private String logPageUrl;
- private String disableButtonMessage;
- public TransactionInfoViewModel(TransactionId traceId, Collection<Node> nodes, Collection<Link> links, RecordSet recordSet, String completeState, boolean logLinkEnable, String logButtonName, String logPageUrl, String disableButtonMessage) {
- this.traceId = traceId;
- this.nodes = nodes;
- this.links = links;
- this.recordSet = recordSet;
- this.completeState = completeState;
- this.logLinkEnable = logLinkEnable;
- this.logButtonName = logButtonName;
- this.logPageUrl = logPageUrl;
- this.disableButtonMessage = disableButtonMessage;
- }
- @JsonProperty("applicationName")
- public String getApplicationName() {
- return recordSet.getApplicationName();
- }
- @JsonProperty("transactionId")
- public String getTransactionId() {
- return traceId.getFormatString();
- }
- @JsonProperty("agentId")
- public String getAgentId() {
- return recordSet.getAgentId();
- }
- @JsonProperty("applicationId")
- public String getApplicationId() {
- return recordSet.getApplicationId();
- }
- @JsonProperty("callStackStart")
- public long getCallStackStart() {
- return recordSet.getStartTime();
- }
- @JsonProperty("callStackEnd")
- public long getCallStackEnd() {
- return recordSet.getEndTime();
- }
- @JsonProperty("completeState")
- public String getCompleteState() {
- return completeState;
- }
- @JsonProperty("logLinkEnable")
- public boolean isLogLinkEnable() {
- return logLinkEnable;
- }
- @JsonProperty("loggingTransactionInfo")
- public boolean isLoggingTransactionInfo() {
- return recordSet.isLoggingTransactionInfo();
- }
- @JsonProperty("logButtonName")
- public String getLogButtonName() {
- return logButtonName;
- }
- @JsonProperty("logPageUrl")
- public String getLogPageUrl() {
- if (logPageUrl != null && logPageUrl.length() > 0) {
- StringBuilder sb = new StringBuilder();
- sb.append("transactionId=").append(traceId.getFormatString());
- sb.append("&time=").append(recordSet.getStartTime());
- return logPageUrl + "?" + sb.toString();
- }
- return "";
- }
- @JsonProperty("disableButtonMessage")
- public String getDisableButtonMessage() {
- return disableButtonMessage;
- }
- @JsonProperty("callStackIndex")
- public Map<String, Integer> getCallStackIndex() {
- final Map<String, Integer> index = new HashMap<String, Integer>();
- for (int i = 0; i < CallStack.INDEX.length; i++) {
- index.put(CallStack.INDEX[i], i);
- }
- return index;
- }
- @JsonProperty("callStack")
- public List<CallStack> getCallStack() {
- List<CallStack> list = new ArrayList<CallStack>();
- boolean first = true;
- long barRatio = 0;
- for(Record record : recordSet.getRecordList()) {
- if(first) {
- if(record.isMethod()) {
- long begin = record.getBegin();
- long end = record.getBegin() + record.getElapsed();
- if(end - begin > 0) {
- barRatio = 100 / (end - begin);
- }
- }
- first = false;
- }
- list.add(new CallStack(record, barRatio));
- }
- return list;
- }
- @JsonProperty("applicationMapData")
- public Map<String, List<Object>> getApplicationMapData() {
- Map<String, List<Object>> result = new HashMap<String, List<Object>>();
- List<Object> nodeDataArray = new ArrayList<Object>();
- for(Node node : nodes) {
- nodeDataArray.add(node);
- }
- result.put("nodeDataArray", nodeDataArray);
- List<Object> linkDataArray = new ArrayList<Object>();
- for(Link link : links) {
- linkDataArray.add(link);
- }
- result.put("linkDataArray", linkDataArray);
- return result;
- }
- @JsonSerialize(using=TransactionInfoCallStackSerializer.class)
- public static class CallStack {
- static final String[] INDEX = {"depth",
- "begin",
- "end",
- "excludeFromTimeline",
- "applicationName",
- "tab",
- "id",
- "parentId",
- "isMethod",
- "hasChild",
- "title",
- "arguments",
- "executeTime",
- "gap",
- "elapsedTime",
- "barWidth",
- "executionMilliseconds",
- "simpleClassName",
- "methodType",
- "apiType",
- "agent",
- "isFocused",
- "hasException",
- "logButtonName",
- "logPageUrl",
- "isAuthorized"
- };
- private String depth = "";
- private long begin;
- private long end;
- private boolean excludeFromTimeline;
- private String applicationName = "";
- private int tab;
- private String id = "";
- private String parentId = "";
- private boolean isMethod;
- private boolean hasChild;
- private String title = "";
- private String arguments = "";
- private String executeTime = "";
- private String gap = "";
- private String elapsedTime = "";
- private String barWidth = "";
- private String executionMilliseconds = "";
- private String simpleClassName = "";
- private String methodType = "";
- private String apiType = "";
- private String agent = "";
- private boolean isFocused;
- private boolean hasException;
- private boolean isAuthorized;
- public CallStack(final Record record, long barRatio) {
- begin = record.getBegin();
- end = record.getBegin() + record.getElapsed();
- excludeFromTimeline = record.isExcludeFromTimeline();
- applicationName = record.getApplicationName();
- tab = record.getTab();
- id = String.valueOf(record.getId());
- if (record.getParentId() > 0) {
- parentId = String.valueOf(record.getParentId());
- }
- isMethod = record.isMethod();
- hasChild = record.getHasChild();
- title = JSONObject.escape(record.getTitle());
- //arguments = JSONObject.escape(StringEscapeUtils.escapeHtml4(record.getArguments()));
- arguments = record.getArguments();
- if (record.isMethod()) {
- executeTime = DateUtils.longToDateStr(record.getBegin(), "HH:mm:ss SSS"); // time format
- gap = String.valueOf(record.getGap());
- elapsedTime = String.valueOf(record.getElapsed());
- barWidth = String.format("%1d", (int)(((end - begin) * barRatio) + 0.9));
- executionMilliseconds = String.valueOf(record.getExecutionMilliseconds());
- }
- simpleClassName = record.getSimpleClassName();
- methodType = String.valueOf(record.getMethodType());
- apiType = record.getApiType();
- agent = record.getAgent();
- isFocused = record.isFocused();
- hasException = record.getHasException();
- isAuthorized = record.isAuthorized();
- }
- public String getDepth() {
- return depth;
- }
- public long getBegin() {
- return begin;
- }
- public long getEnd() {
- return end;
- }
- public boolean isExcludeFromTimeline() {
- return excludeFromTimeline;
- }
- public String getApplicationName() {
- return applicationName;
- }
- public int getTab() {
- return tab;
- }
- public String getId() {
- return id;
- }
- public String getParentId() {
- return parentId;
- }
- public boolean isMethod() {
- return isMethod;
- }
- public boolean isHasChild() {
- return hasChild;
- }
- public String getTitle() {
- return title;
- }
- public String getArguments() {
- return arguments;
- }
- public String getExecuteTime() {
- return executeTime;
- }
- public String getGap() {
- return gap;
- }
- public String getElapsedTime() {
- return elapsedTime;
- }
- public String getBarWidth() {
- return barWidth;
- }
- public String getExecutionMilliseconds() {
- return executionMilliseconds;
- }
- public String getSimpleClassName() {
- return simpleClassName;
- }
- public String getMethodType() {
- return methodType;
- }
- public String getApiType() {
- return apiType;
- }
- public String getAgent() {
- return agent;
- }
- public boolean isFocused() {
- return isFocused;
- }
- public boolean isHasException() {
- return hasException;
- }
-
- public boolean isAuthorized() {
- return isAuthorized;
- }
- }
- }