@SuppressWarnings("unchecked") public Map<Integer, ALEipUser> getUsers(List<Integer> users) { Map<Integer, ALEipUser> results = new HashMap<Integer, ALEipUser>(users.size()); Map<Integer, ALEipUser> map = new HashMap<Integer, ALEipUser>(users.size()); List<Integer> fetchUsers = new ArrayList<Integer>(users.size()); HttpServletRequest request = HttpServletRequestLocator.get(); if (request != null) { map = (Map<Integer, ALEipUser>) request.getAttribute(USERS_KEY); if (map != null) { for (Integer userId : users) { ALEipUser user = map.get(userId); if (user != null) { results.put(userId, user); } else { fetchUsers.add(userId); } } } else { map = new HashMap<Integer, ALEipUser>(users.size()); fetchUsers.addAll(users); } } else { fetchUsers.addAll(users); } if (fetchUsers.size() > 0) { StringBuilder select = new StringBuilder(); select.append("SELECT"); select.append(" turbine_user.user_id,"); select.append(" turbine_user.last_name,"); select.append(" turbine_user.first_name,"); select.append(" turbine_user.login_name,"); select.append(" turbine_user.has_photo,"); select.append(" turbine_user.photo_modified"); StringBuilder body = new StringBuilder(); body.append(" FROM turbine_user WHERE "); body.append(" turbine_user.user_id IN ("); boolean isFirst = true; for (Integer num : fetchUsers) { if (!isFirst) { body.append(","); } body.append(num.intValue()); isFirst = false; } body.append(")"); SQLTemplate<VTurbineUserLite> query = Database.sql(VTurbineUserLite.class, select.toString() + body.toString()); List<VTurbineUserLite> list = query.fetchList(); for (VTurbineUserLite model : list) { ALEipUser eipUser = new ALEipUser(); eipUser.initField(); eipUser.setAliasName(model.getFirstName(), model.getLastName()); eipUser.setName(model.getLoginName()); eipUser.setUserId(model.getUserId()); eipUser.setHasPhoto("T".equals(model.getHasPhoto()) || "N".equals(model.getHasPhoto())); eipUser.setPhotoModified( model.getPhotoModified() != null ? model.getPhotoModified().getTime() : 0); results.put(model.getUserId(), eipUser); map.put(model.getUserId(), eipUser); } } // requestに登録 if (request != null) { request.setAttribute(USERS_KEY, map); } return results; }