diff --git a/quickstart/web/src/main/resources/applicationContext-dao-config.xml b/quickstart/web/src/main/resources/applicationContext-dao-config.xml
new file mode 100644
index 000000000..226bbd953
--- /dev/null
+++ b/quickstart/web/src/main/resources/applicationContext-dao-config.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/UserDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/UserDao.java
index 5b7692974..ce7a4032a 100644
--- a/web/src/main/java/com/navercorp/pinpoint/web/dao/UserDao.java
+++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/UserDao.java
@@ -24,6 +24,8 @@ import com.navercorp.pinpoint.web.vo.User;
*/
public interface UserDao {
+ void dropAndCreateUserTable();
+
void insertUser(User user);
void inserUserList(List users);
@@ -42,4 +44,5 @@ public interface UserDao {
+
}
diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/memory/MemoryAlarmDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/memory/MemoryAlarmDao.java
new file mode 100644
index 000000000..5b48d5334
--- /dev/null
+++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/memory/MemoryAlarmDao.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2014 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.dao.memory;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.springframework.stereotype.Repository;
+
+import com.navercorp.pinpoint.web.alarm.vo.Rule;
+import com.navercorp.pinpoint.web.dao.AlarmDao;
+
+/**
+ * @author minwoo.jung
+ */
+@Repository
+public class MemoryAlarmDao implements AlarmDao {
+
+ private final Map alarmRule = new ConcurrentHashMap();
+ private final AtomicInteger ruleIdGenerator = new AtomicInteger();
+
+ @Override
+ public String insertRule(Rule rule) {
+ String ruleId = String.valueOf(ruleIdGenerator.getAndIncrement());
+ rule.setRuleId(ruleId);
+ alarmRule.put(ruleId, rule);
+ return rule.getRuleId();
+ }
+
+ @Override
+ public void deleteRule(Rule rule) {
+ alarmRule.remove(rule.getRuleId());
+ }
+
+ @Override
+ public void deleteRuleByUserGroupId(String userGroupId) {
+ for (Entry entry : alarmRule.entrySet()) {
+ if (entry.getValue().getUserGroupId().equals(userGroupId)) {
+ alarmRule.remove(entry.getKey());
+ }
+ }
+ }
+
+ @Override
+ public List selectRuleByUserGroupId(String userGroupId) {
+ List ruleList = new LinkedList<>();
+
+ for (Entry entry : alarmRule.entrySet()) {
+ if (entry.getValue().getUserGroupId().equals(userGroupId)) {
+ ruleList.add(entry.getValue());
+ }
+ }
+
+ return ruleList;
+ }
+
+ @Override
+ public List selectRuleByApplicationId(String applicationId) {
+ List ruleList = new LinkedList<>();
+
+ for (Entry entry : alarmRule.entrySet()) {
+ if (entry.getValue().getApplicationId().equals(applicationId)) {
+ alarmRule.remove(entry.getKey());
+ }
+ }
+
+ return ruleList;
+ }
+
+ @Override
+ public void updateRule(Rule rule) {
+ alarmRule.put(rule.getRuleId(), rule);
+ }
+}
diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/memory/MemoryUserDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/memory/MemoryUserDao.java
new file mode 100644
index 000000000..aa4d70e40
--- /dev/null
+++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/memory/MemoryUserDao.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2014 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.dao.memory;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.springframework.stereotype.Repository;
+
+import com.navercorp.pinpoint.web.dao.UserDao;
+import com.navercorp.pinpoint.web.vo.User;
+
+/**
+ * @author minwoo.jung
+ */
+@Repository
+public class MemoryUserDao implements UserDao {
+
+ private final Map users = new ConcurrentHashMap();
+ private final AtomicInteger userNumGenerator = new AtomicInteger();
+
+ @Override
+ public void insertUser(User user) {
+ String userNumber = String.valueOf(userNumGenerator.getAndIncrement());
+ user.setNumber(userNumber);
+ users.put(user.getUserId(), user);
+ }
+
+ @Override
+ public void inserUserList(List users) {
+ for (User user : users) {
+ String userNumber = String.valueOf(userNumGenerator.getAndIncrement());
+ user.setNumber(userNumber);
+ this.users.put(user.getUserId(), user);
+ }
+ }
+
+ @Override
+ public void deleteUser(User user) {
+ users.remove(user.getUserId());
+ }
+
+ @Override
+ public List selectUser() {
+ return new ArrayList<>(users.values());
+ }
+
+ @Override
+ public void updateUser(User user) {
+ users.put(user.getUserId(), user);
+ }
+
+ @Override
+ public User selectUserByUserId(String userId) {
+ return users.get(userId);
+ }
+
+ @Override
+ public List selectUserByDepartment(String department) {
+ List userList = new LinkedList<>();
+
+ for (User user : users.values()) {
+ if (department.equals(user.getDepartment())) {
+ userList.add(user);
+ }
+ }
+
+ return userList;
+ }
+
+ @Override
+ public List selectUserByUserName(String userName) {
+ List userList = new LinkedList<>();
+
+ for (User user : users.values()) {
+ if (userName.equals(user.getName())) {
+ userList.add(user);
+ }
+ }
+
+ return userList;
+ }
+
+ @Override
+ public void dropAndCreateUserTable() {
+ users.clear();
+ userNumGenerator.lazySet(1);
+ }
+}
diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/memory/MemoryUserGroupDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/memory/MemoryUserGroupDao.java
new file mode 100644
index 000000000..0a3d62487
--- /dev/null
+++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/memory/MemoryUserGroupDao.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2014 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.dao.memory;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+
+import com.navercorp.pinpoint.web.dao.UserDao;
+import com.navercorp.pinpoint.web.dao.UserGroupDao;
+import com.navercorp.pinpoint.web.vo.User;
+import com.navercorp.pinpoint.web.vo.UserGroup;
+import com.navercorp.pinpoint.web.vo.UserGroupMember;
+
+/**
+ * @author minwoo.jung
+ */
+@Repository
+public class MemoryUserGroupDao implements UserGroupDao {
+
+ private final Map userGroups = new ConcurrentHashMap();
+ private final Map userGroupMembers = new ConcurrentHashMap();
+
+ private final AtomicInteger userGroupNumGenerator = new AtomicInteger();
+ private final AtomicInteger userGroupMemNumGenerator = new AtomicInteger();
+
+ @Autowired
+ UserDao userDao;
+
+ @Override
+ public String createUserGroup(UserGroup userGroup) {
+ String userGroupNumber = String.valueOf(userGroupNumGenerator.getAndIncrement());
+ userGroup.setNumber(userGroupNumber);
+ userGroups.put(userGroupNumber, userGroup);
+ return userGroup.getNumber();
+ }
+
+ @Override
+ public List selectUserGroup() {
+ return new ArrayList<>(userGroups.values());
+ }
+
+ @Override
+ public void updateUserGroup(UserGroup userGroup) {
+ userGroups.put(userGroup.getNumber(), userGroup);
+ }
+
+ @Override
+ public void deleteUserGroup(UserGroup userGroup) {
+ for(UserGroup ug : userGroups.values()) {
+ if (ug.getId().equals(userGroup.getId())) {
+ userGroups.remove(ug.getNumber());
+ break;
+ }
+ }
+ }
+
+ @Override
+ public void insertMember(UserGroupMember userGroupMember) {
+ String memberNum = String.valueOf(userGroupMemNumGenerator.getAndIncrement());
+ userGroupMember.setNumber(memberNum);
+ userGroupMembers.put(memberNum, userGroupMember);
+ }
+
+ @Override
+ public void deleteMember(UserGroupMember userGroupMember) {
+ for (UserGroupMember member : userGroupMembers.values()) {
+ if (member.getUserGroupId().equals(userGroupMember.getUserGroupId()) && member.getMemberId().equals(userGroupMember.getMemberId())) {
+ userGroupMembers.remove(member.getNumber());
+ break;
+ }
+ }
+ }
+
+ @Override
+ public List selectMember(String userGroupId) {
+ List userGroupMemberList = new LinkedList<>();
+
+ for (UserGroupMember member : userGroupMembers.values()) {
+ if (member.getUserGroupId().equals(userGroupId)) {
+ userGroupMemberList.add(member);
+ }
+ }
+
+ return userGroupMemberList;
+ }
+
+ @Override
+ public void updateMember(UserGroupMember userGroupMember) {
+ userGroupMembers.put(userGroupMember.getNumber(), userGroupMember);
+ }
+
+ @Override
+ public void deleteMemberByUserGroupId(String userGroupId) {
+ for (UserGroupMember member : userGroupMembers.values()) {
+ if (member.getUserGroupId().equals(userGroupId)) {
+ userGroupMembers.remove(userGroupId);
+ }
+ }
+ }
+
+ @Override
+ public List selectPhoneNumberOfMember(String userGroupId) {
+ List userGroupMemberList = new LinkedList<>();
+
+ for (UserGroupMember member : userGroupMembers.values()) {
+ if (member.getUserGroupId().equals(userGroupId)) {
+ userGroupMemberList.add(member);
+ }
+ }
+
+ List phoneNumbers = new LinkedList<>();
+
+ for (UserGroupMember member : userGroupMemberList) {
+ User user = userDao.selectUserByUserId(member.getMemberId());
+ phoneNumbers.add(user.getPhoneNumber());
+ }
+
+ return phoneNumbers;
+ }
+
+ @Override
+ public List selectEmailOfMember(String userGroupId) {
+ List userGroupMemberList = new LinkedList<>();
+
+ for (UserGroupMember member : userGroupMembers.values()) {
+ if (member.getUserGroupId().equals(userGroupId)) {
+ userGroupMemberList.add(member);
+ }
+ }
+
+ List emails = new LinkedList<>();
+
+ for (UserGroupMember member : userGroupMemberList) {
+ User user = userDao.selectUserByUserId(member.getMemberId());
+ emails.add(user.getEmail());
+ }
+
+ return emails;
+ }
+
+ @Override
+ public void updateUserGroupIdOfMember(UserGroup userGroup) {
+ UserGroup group = userGroups.get(userGroup.getNumber());
+
+ for (UserGroupMember member : userGroupMembers.values()) {
+ if (member.getUserGroupId().equals(group.getId())) {
+ member.setUserGroupId(userGroup.getId());
+ }
+ }
+ }
+
+
+}
diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/mysql/MysqlUserDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/mysql/MysqlUserDao.java
index 9cbf74b68..8192888b8 100644
--- a/web/src/main/java/com/navercorp/pinpoint/web/dao/mysql/MysqlUserDao.java
+++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/mysql/MysqlUserDao.java
@@ -77,4 +77,10 @@ public class MysqlUserDao implements UserDao {
public List selectUserByUserName(String userName) {
return sqlSessionTemplate.selectList(NAMESPACE + "selectUserByUserName", userName);
}
+
+ @Override
+ public void dropAndCreateUserTable() {
+ sqlSessionTemplate.selectOne(NAMESPACE + "dropAndCreateUserTable");
+
+ }
}
diff --git a/web/src/main/java/com/navercorp/pinpoint/web/dao/mysql/MysqlUserGroupDao.java b/web/src/main/java/com/navercorp/pinpoint/web/dao/mysql/MysqlUserGroupDao.java
index d5fec9f61..3d530e3b5 100644
--- a/web/src/main/java/com/navercorp/pinpoint/web/dao/mysql/MysqlUserGroupDao.java
+++ b/web/src/main/java/com/navercorp/pinpoint/web/dao/mysql/MysqlUserGroupDao.java
@@ -78,7 +78,7 @@ public class MysqlUserGroupDao implements UserGroupDao {
@Override
public void updateMember(UserGroupMember userGroupMember) {
- sqlSessionTemplate.delete(NAMESPACE + "updateMember", userGroupMember);
+ sqlSessionTemplate.update(NAMESPACE + "updateMember", userGroupMember);
}
@Override
diff --git a/web/src/main/java/com/navercorp/pinpoint/web/service/UserGroupServiceImpl.java b/web/src/main/java/com/navercorp/pinpoint/web/service/UserGroupServiceImpl.java
index aa45fbe77..49f3a8312 100644
--- a/web/src/main/java/com/navercorp/pinpoint/web/service/UserGroupServiceImpl.java
+++ b/web/src/main/java/com/navercorp/pinpoint/web/service/UserGroupServiceImpl.java
@@ -61,7 +61,6 @@ public class UserGroupServiceImpl implements UserGroupService {
@Override
public void deleteMember(UserGroupMember userGroupMember) {
userGroupDao.deleteMember(userGroupMember);
-
}
@Override
diff --git a/web/src/main/java/com/navercorp/pinpoint/web/service/UserService.java b/web/src/main/java/com/navercorp/pinpoint/web/service/UserService.java
index b4af3a266..11f254c09 100644
--- a/web/src/main/java/com/navercorp/pinpoint/web/service/UserService.java
+++ b/web/src/main/java/com/navercorp/pinpoint/web/service/UserService.java
@@ -24,6 +24,8 @@ import com.navercorp.pinpoint.web.vo.User;
*/
public interface UserService {
+ void dropAndCreateUserTable();
+
void insertUser(User user);
void deleteUser(User user);
diff --git a/web/src/main/java/com/navercorp/pinpoint/web/service/UserServiceImpl.java b/web/src/main/java/com/navercorp/pinpoint/web/service/UserServiceImpl.java
index 1010b79c1..4413302ac 100644
--- a/web/src/main/java/com/navercorp/pinpoint/web/service/UserServiceImpl.java
+++ b/web/src/main/java/com/navercorp/pinpoint/web/service/UserServiceImpl.java
@@ -68,4 +68,9 @@ public class UserServiceImpl implements UserService {
return userDao.selectUserByDepartment(department);
}
+ @Override
+ public void dropAndCreateUserTable() {
+ userDao.dropAndCreateUserTable();
+ }
+
}
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 b9e73c6b2..9e1aa4c73 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
@@ -3,7 +3,6 @@ package com.navercorp.pinpoint.web.vo;
public class UserGroupMember {
private String number;
-
private String userGroupId;
private String memberId;
private String name;
diff --git a/web/src/main/resources/applicationContext-dao-config.xml b/web/src/main/resources/applicationContext-dao-config.xml
index 5414e7198..4a63de3c8 100644
--- a/web/src/main/resources/applicationContext-dao-config.xml
+++ b/web/src/main/resources/applicationContext-dao-config.xml
@@ -1,75 +1,78 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/main/resources/applicationContext-web.xml b/web/src/main/resources/applicationContext-web.xml
index ae3018d23..9fb118c5a 100644
--- a/web/src/main/resources/applicationContext-web.xml
+++ b/web/src/main/resources/applicationContext-web.xml
@@ -24,7 +24,6 @@
-->
SELECT a.user_group_id, a.member_id, b.name, b.department
FROM user_group_member a
- INNER JOIN user b ON a.member_id = b.user_id
+ INNER JOIN puser b ON a.member_id = b.user_id
WHERE a.user_group_id = #{userGroupId}
diff --git a/web/src/main/resources/mapper/UserMapper.xml b/web/src/main/resources/mapper/UserMapper.xml
index 8a1da9894..e40b3647c 100644
--- a/web/src/main/resources/mapper/UserMapper.xml
+++ b/web/src/main/resources/mapper/UserMapper.xml
@@ -4,6 +4,10 @@
+
+
INSERT INTO puser (user_id, name, department, phonenumber, email)
VALUES (#{userId}, #{name}, #{department}, #{phoneNumber}, #{email})