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})