diff --git a/web/src/main/java/com/navercorp/pinpoint/web/alarm/CheckerCategory.java b/web/src/main/java/com/navercorp/pinpoint/web/alarm/CheckerCategory.java index a2c0278e9..d628c4fac 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/alarm/CheckerCategory.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/alarm/CheckerCategory.java @@ -45,91 +45,91 @@ import com.navercorp.pinpoint.web.alarm.vo.Rule; */ public enum CheckerCategory { - SLOW_COUNT("SLOW_COUNT", DataCollectorCategory.RESPONSE_TIME) { + SLOW_COUNT("SLOW COUNT", DataCollectorCategory.RESPONSE_TIME) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new SlowCountChecker((ResponseTimeDataCollector)dataCollector, rule); } }, - SLOW_RATE("SLOW_RATE", DataCollectorCategory.RESPONSE_TIME) { + SLOW_RATE("SLOW RATE", DataCollectorCategory.RESPONSE_TIME) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new SlowRateChecker((ResponseTimeDataCollector)dataCollector, rule); } }, - ERROR_COUNT("ERROR_COUNT", DataCollectorCategory.RESPONSE_TIME) { + ERROR_COUNT("ERROR COUNT", DataCollectorCategory.RESPONSE_TIME) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new ErrorCountChecker((ResponseTimeDataCollector)dataCollector, rule); } }, - ERROR_RATE("ERROR_RATE", DataCollectorCategory.RESPONSE_TIME) { + ERROR_RATE("ERROR RATE", DataCollectorCategory.RESPONSE_TIME) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new ErrorRateChecker((ResponseTimeDataCollector)dataCollector, rule); } }, - TOTAL_COUNT("TOTAL_COUNT", DataCollectorCategory.RESPONSE_TIME) { + TOTAL_COUNT("TOTAL COUNT", DataCollectorCategory.RESPONSE_TIME) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new ResponseCountChecker((ResponseTimeDataCollector)dataCollector, rule); } }, - SLOW_COUNT_TO_CALLEE("SLOW_COUNT_TO_CALLEE", DataCollectorCategory.CALLER_STAT) { + SLOW_COUNT_TO_CALLEE("SLOW COUNT TO CALLEE", DataCollectorCategory.CALLER_STAT) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new SlowCountToCalleeChecker((MapStatisticsCallerDataCollector)dataCollector, rule); } }, - SLOW_RATE_TO_CALLEE("SLOW_RATE_TO_CALLEE", DataCollectorCategory.CALLER_STAT) { + SLOW_RATE_TO_CALLEE("SLOW RATE TO CALLEE", DataCollectorCategory.CALLER_STAT) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new SlowRateToCalleeChecker((MapStatisticsCallerDataCollector)dataCollector, rule); } }, - ERROR_COUNT_TO_CALLEE("ERROR_COUNT_TO_CALLEE", DataCollectorCategory.CALLER_STAT) { + ERROR_COUNT_TO_CALLEE("ERROR COUNT TO CALLEE", DataCollectorCategory.CALLER_STAT) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new ErrorCountToCalleeChecker((MapStatisticsCallerDataCollector)dataCollector, rule); } }, - ERROR_RATE_TO_CALLEE("ERROR_RATE_TO_CALLEE", DataCollectorCategory.CALLER_STAT) { + ERROR_RATE_TO_CALLEE("ERROR RATE TO CALLEE", DataCollectorCategory.CALLER_STAT) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new ErrorRateToCalleeChecker((MapStatisticsCallerDataCollector)dataCollector, rule); } }, - TOTAL_COUNT_TO_CALLEE("TOTAL_COUNT_TO_CALLEE", DataCollectorCategory.CALLER_STAT) { + TOTAL_COUNT_TO_CALLEE("TOTAL COUNT TO CALLEE", DataCollectorCategory.CALLER_STAT) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new TotalCountToCalleeChecker((MapStatisticsCallerDataCollector)dataCollector, rule); } }, - HEAP_USAGE_RATE("HEAP_USAGE_RATE", DataCollectorCategory.AGENT_STAT) { + HEAP_USAGE_RATE("HEAP USAGE RATE", DataCollectorCategory.AGENT_STAT) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new HeapUsageRateChecker((AgentStatDataCollector)dataCollector, rule); } }, - GC_COUNT("GC_COUNT", DataCollectorCategory.AGENT_STAT) { + GC_COUNT("GC COUNT", DataCollectorCategory.AGENT_STAT) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new GcCountChecker((AgentStatDataCollector)dataCollector, rule); } }, - JVM_CPU_USAGE_RATE("JVM_CPU_USAGE_RATE", DataCollectorCategory.AGENT_STAT) { + JVM_CPU_USAGE_RATE("JVM CPU USAGE RATE", DataCollectorCategory.AGENT_STAT) { @Override public AlarmChecker createChecker(DataCollector dataCollector, Rule rule) { return new JvmCpuUsageRateChecker((AgentStatDataCollector)dataCollector, rule); diff --git a/web/src/main/java/com/navercorp/pinpoint/web/controller/AlarmController.java b/web/src/main/java/com/navercorp/pinpoint/web/controller/AlarmController.java index 89d9398f0..4c26341a3 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/controller/AlarmController.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/controller/AlarmController.java @@ -20,9 +20,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -39,6 +42,8 @@ import com.navercorp.pinpoint.web.service.AlarmService; @Controller @RequestMapping(value="/alarmRule") public class AlarmController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + public final static String USER_GROUP_ID = "userGroupId"; @Autowired @@ -115,4 +120,15 @@ public class AlarmController { return CheckerCategory.getNames(); } + @ExceptionHandler(Exception.class) + @ResponseBody + public Map handleException(Exception e) { + logger.error(" Exception occured while trying to CRUD Alarm Rule information", e); + + Map result = new HashMap(); + result.put("errorCode", "500"); + result.put("errorMessage", "Exception occured while trying to Alarm Rule information"); + return result; + } + } diff --git a/web/src/main/java/com/navercorp/pinpoint/web/controller/UserController.java b/web/src/main/java/com/navercorp/pinpoint/web/controller/UserController.java index 58f35e7b1..58eeb40e7 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/controller/UserController.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/controller/UserController.java @@ -25,6 +25,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -125,5 +126,15 @@ public class UserController { return result; } + @ExceptionHandler(Exception.class) + @ResponseBody + public Map handleException(Exception e) { + logger.error(" Exception occured while trying to CRUD user information", e); + + Map result = new HashMap(); + result.put("errorCode", "500"); + result.put("errorMessage", "Exception occured while trying to CRUD user information"); + return result; + } } diff --git a/web/src/main/java/com/navercorp/pinpoint/web/controller/UserGroupController.java b/web/src/main/java/com/navercorp/pinpoint/web/controller/UserGroupController.java index 6c408c2ed..6b03bb57c 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/controller/UserGroupController.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/controller/UserGroupController.java @@ -19,9 +19,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -39,6 +42,8 @@ import com.navercorp.pinpoint.web.vo.UserGroupMember; @RequestMapping(value = "/userGroup") public class UserGroupController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + public static final String USER_GROUP_ID = "userGroupId"; @Autowired @@ -163,4 +168,15 @@ public class UserGroupController { // result.put("result", "SUCCESS"); // return result; // } + + @ExceptionHandler(Exception.class) + @ResponseBody + public Map handleException(Exception e) { + logger.error(" Exception occured while trying to CRUD userGroup information", e); + + Map result = new HashMap(); + result.put("errorCode", "500"); + result.put("errorMessage", "Exception occured while trying to CRUD userGroup information"); + return result; + } } diff --git a/web/src/main/java/com/navercorp/pinpoint/web/vo/User.java b/web/src/main/java/com/navercorp/pinpoint/web/vo/User.java index a371b6f51..e60f831db 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/vo/User.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/vo/User.java @@ -1,6 +1,7 @@ package com.navercorp.pinpoint.web.vo; public class User { + private String number; private String userId; private String name; private String department; @@ -18,6 +19,14 @@ public class User { this.email = email; } + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + public String getUserId() { return userId; } diff --git a/web/src/main/java/com/navercorp/pinpoint/web/vo/UserGroupMember.java b/web/src/main/java/com/navercorp/pinpoint/web/vo/UserGroupMember.java index fd5935af2..b9e73c6b2 100644 --- a/web/src/main/java/com/navercorp/pinpoint/web/vo/UserGroupMember.java +++ b/web/src/main/java/com/navercorp/pinpoint/web/vo/UserGroupMember.java @@ -2,6 +2,8 @@ package com.navercorp.pinpoint.web.vo; public class UserGroupMember { + private String number; + private String userGroupId; private String memberId; private String name; @@ -12,6 +14,15 @@ public class UserGroupMember { public UserGroupMember(String userGroupId, String memberId) { this.userGroupId = userGroupId; + this.memberId = memberId; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; } public String getUserGroupId() { diff --git a/web/src/main/resources/mapper/UserMapper.xml b/web/src/main/resources/mapper/UserMapper.xml index 76f94580a..159a3a615 100644 --- a/web/src/main/resources/mapper/UserMapper.xml +++ b/web/src/main/resources/mapper/UserMapper.xml @@ -5,12 +5,12 @@ - INSERT INTO user + INSERT INTO user (user_id, name, department, phonenumber, email) VALUES (#{userId}, #{name}, #{department}, #{phoneNumber}, #{email}) - INSERT INTO user + INSERT INTO user (user_id, name, department, phonenumber, email) VALUES (#{User.userId}, #{User.name}, #{User.department}, #{User.phoneNumber}, #{User.email}) diff --git a/web/src/main/resources/sql/CreateTableStatement.sql b/web/src/main/resources/sql/CreateTableStatement.sql index 5d5727625..de7c77ce0 100644 --- a/web/src/main/resources/sql/CreateTableStatement.sql +++ b/web/src/main/resources/sql/CreateTableStatement.sql @@ -4,37 +4,41 @@ DROP TABLE user; DROP TABLE alarm_rule; CREATE TABLE `user_group` ( - `number` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `number` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `id` VARCHAR(30) NOT NULL, PRIMARY KEY (`number`) ); ALTER TABLE user_group ADD UNIQUE KEY id_idx (id); CREATE TABLE `user_group_member` ( - `user_group_id` varchar(30) NOT NULL, - `member_id` varchar(30) NOT NULL, - PRIMARY KEY (`user_group_id`,`member_id`) + `number` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `user_group_id` VARCHAR(30) NOT NULL, + `member_id` VARCHAR(30) NOT NULL, + PRIMARY KEY (`number`) ); +ALTER TABLE user_group_member ADD UNIQUE KEY user_group_id_member_id_idx (`user_group_id`,`member_id`); CREATE TABLE `user` ( + `number` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `user_id` VARCHAR(30) NOT NULL, - `name` VARCHAR(30) NOT NULL, - `department` VARCHAR(100) NOT NULL, - `phonenumber` VARCHAR(30) NOT NULL, - `email` VARCHAR(30) NOT NULL, - PRIMARY KEY (`id`) + `name` VARCHAR(150) NOT NULL, + `department` VARCHAR(150) NOT NULL, + `phonenumber` VARCHAR(100), + `email` VARCHAR(100), + PRIMARY KEY (`number`) ); +ALTER TABLE USER ADD UNIQUE KEY user_id_idx (`user_id`); CREATE TABLE `alarm_rule` ( `rule_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `application_id` VARCHAR(30) NOT NULL, `service_type` VARCHAR(30) NOT NULL, - `checker_name` VARCHAR(30) NOT NULL, + `checker_name` VARCHAR(50) NOT NULL, `threshold` INT(10) DEFAULT NULL, `user_group_id` VARCHAR(30) NOT NULL, `sms_send` CHAR(1) DEFAULT NULL, `email_send` CHAR(1) DEFAULT NULL, - `notes` VARCHAR(50) DEFAULT NULL, + `notes` VARCHAR(100) DEFAULT NULL, PRIMARY KEY (`rule_id`) ); ALTER TABLE alarm_rule ADD UNIQUE KEY application_id_checker_name_user_group_id_idx (application_id, user_group_id, checker_name); diff --git a/web/src/test/java/com/navercorp/pinpoint/web/controller/UserControllerTest.java b/web/src/test/java/com/navercorp/pinpoint/web/controller/UserControllerTest.java index 48b3f65cc..9fc4a2201 100644 --- a/web/src/test/java/com/navercorp/pinpoint/web/controller/UserControllerTest.java +++ b/web/src/test/java/com/navercorp/pinpoint/web/controller/UserControllerTest.java @@ -161,12 +161,12 @@ public class UserControllerTest { this.mockMvc.perform(get("/user.pinpoint?userId=" + USER_ID).contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().contentType("application/json;charset=UTF-8")) - .andExpect(jsonPath("$", hasKey("userId"))) - .andExpect(jsonPath("$.userId").value(USER_ID)) - .andExpect(jsonPath("$", hasKey("name"))) - .andExpect(jsonPath("$", hasKey("department"))) - .andExpect(jsonPath("$", hasKey("phoneNumber"))) - .andExpect(jsonPath("$", hasKey("email"))) + .andExpect(jsonPath("$[0]", hasKey("userId"))) + .andExpect(jsonPath("$[0].userId").value(USER_ID)) + .andExpect(jsonPath("$[0]", hasKey("name"))) + .andExpect(jsonPath("$[0]", hasKey("department"))) + .andExpect(jsonPath("$[0]", hasKey("phoneNumber"))) + .andExpect(jsonPath("$[0]", hasKey("email"))) .andReturn();