Example usage for org.apache.commons.collections CollectionUtils addAll

List of usage examples for org.apache.commons.collections CollectionUtils addAll

Introduction

In this page you can find the example usage for org.apache.commons.collections CollectionUtils addAll.

Prototype

public static void addAll(Collection collection, Object[] elements) 

Source Link

Document

Adds all elements in the array to the given collection.

Usage

From source file:com.tmwsoft.sns.web.action.MainAction.java

public ActionForward cp_friend(HttpServletRequest request, HttpServletResponse response) {
    Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
    Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
    Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
    Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
    String op = request.getParameter("op");
    int uid = Common.intval(request.getParameter("uid"));
    space.put("key", Common.spaceKey(space, sConfig, 0));
    Map<String, String> actives = new HashMap<String, String>();
    actives.put(op, " class=\"active\"");
    request.setAttribute("actives", actives);
    try {//ww  w . j a  va 2  s . c  o  m
        if ("add".equals(op)) {
            if (!Common.checkPerm(request, response, "allowfriend")) {
                MessageVO msgVO = Common.ckSpaceLog(request);
                if (msgVO != null) {
                    return showMessage(request, response, msgVO);
                }
                return showMessage(request, response, "no_privilege");
            }
            if (uid == (Integer) sGlobal.get("supe_uid")) {
                return showMessage(request, response, "friend_self_error");
            }
            if (Common.in_array((String[]) space.get("friends"), uid)) {
                return showMessage(request, response, "you_have_friends");
            }
            if (!mainService.checkRealName(request, "friend")) {
                return showMessage(request, response, "no_privilege_realname");
            }
            Map<String, Object> toSpace = Common.getSpace(request, sGlobal, sConfig, uid);
            if (Common.empty(toSpace)) {
                return showMessage(request, response, "space_does_not_exist");
            }
            if (mainService.isBlackList((Integer) toSpace.get("uid"), (Integer) sGlobal.get("supe_uid")) != 0) {
                return showMessage(request, response, "is_blacklist");
            }
            Map<Integer, String> groups = Common.getFriendGroup(request);
            int status = Common.getFriendStatus((Integer) sGlobal.get("supe_uid"), uid);
            if (status == 1) {
                return showMessage(request, response, "you_have_friends");
            } else {
                int maxFriendNum = (Integer) Common.checkPerm(request, response, sGlobal, "maxfriendnum");
                if (maxFriendNum != 0 && (Integer) space.get("friendnum") >= maxFriendNum
                        + (Integer) space.get("addfriend")) {
                    Map globalMagic = Common.getCacheDate(request, response, "cache/cache_magic.jsp",
                            "globalMagic");
                    if (!Common.empty(globalMagic.get("friendnum"))) {
                        return showMessage(request, response, "enough_of_the_number_of_friends_with_magic");
                    } else {
                        return showMessage(request, response, "enough_of_the_number_of_friends");
                    }
                }

                int fStatus = Common.getFriendStatus(uid, (Integer) sGlobal.get("supe_uid"));
                int fu_requestfriendauditing = 0;

                try {
                    fu_requestfriendauditing = ((Integer) ((Map) ((Map) toSpace.get("privacy")).get("view"))
                            .get("requestfriendauditing")).intValue();
                    if (fu_requestfriendauditing == 1) {
                        fStatus = 0;
                        Map<String, String> parames = new HashMap<String, String>();
                        parames.put("op", "add");
                        parames.put("add2submit", "true");
                        parames.put("gid", "0");
                        parames.put("uid", uid + "");
                        request = new AddFriendHttpServletRequestWrapper(request, parames);
                    }
                } catch (Exception ex) {
                    ;
                }

                if (fStatus == -1) {
                    if (status == -1) {
                        if (!Common.empty(toSpace.get("videostatus"))) {
                            if (!mainService.checkVideoPhoto(request, response, "friend", toSpace)) {
                                return showMessage(request, response, "no_privilege_videophoto");
                            }
                        }
                        if (submitCheck(request, "addsubmit")) {
                            Map<String, Object> serArr = new HashMap<String, Object>();
                            serArr.put("uid", sGlobal.get("supe_uid"));
                            serArr.put("fuid", uid);
                            serArr.put("fusername", Common.addSlashes((String) toSpace.get("username")));
                            serArr.put("gid", Common.intval(request.getParameter("gid")));
                            serArr.put("note", Common.getStr(request.getParameter("note"), 50, true, true,
                                    false, 0, 0, request, response));
                            serArr.put("dateline", sGlobal.get("timestamp"));
                            dataBaseService.insertTable("sns_friend", serArr, false, false);
                            mainService.sendMail(request, response, uid, "",
                                    Common.getMessage(request, "cp_friend_subject",
                                            new String[] { sNames.get(space.get("uid")),
                                                    Common.getSiteUrl(request)
                                                            + "main.action?ac=friend&amp;op=request" }),
                                    "", "friend_add");
                            dataBaseService.executeUpdate(
                                    "UPDATE sns_space SET addfriendnum=addfriendnum+1 WHERE uid='" + uid + "'");
                            return showMessage(request, response, "request_has_been_sent");
                        } else {
                            request.setAttribute("op", op);
                            request.setAttribute("tospace", toSpace);
                            request.setAttribute("groups", groups);
                            return include(request, response, sConfig, sGlobal, "cp_friend.jsp");
                        }
                    } else {
                        return showMessage(request, response, "waiting_for_the_other_test");
                    }
                } else {
                    boolean result = false;
                    if (fu_requestfriendauditing == 0) {
                        result = submitCheck(request, "add2submit");
                    } else {
                        result = true;
                    }
                    if (result) {
                        int gid = Common.intval(request.getParameter("gid"));
                        if (fu_requestfriendauditing == 0) {
                            mainService.updateFriend(request, sGlobal, sConfig, (Integer) space.get("uid"),
                                    (String) space.get("username"), (Integer) toSpace.get("uid"),
                                    (String) toSpace.get("username"), "add", gid);
                        } else {
                            mainService.updateFriend(request, sGlobal, sConfig, (Integer) space.get("uid"),
                                    (String) space.get("username"), (Integer) toSpace.get("uid"),
                                    (String) toSpace.get("username"), "invite", gid);
                        }
                        if (Common.ckPrivacy(sGlobal, sConfig, space, "friend", 1)) {
                            Map<String, String> fs = new HashMap<String, String>();
                            fs.put("icon", "friend");
                            fs.put("title_template", Common.getMessage(request, "cp_feed_friend_title"));
                            fs.put("body_template", "");
                            fs.put("body_general", "");
                            Map titleData = new HashMap();
                            titleData.put("touser", "<a href=\"zone.action?uid=" + toSpace.get("uid") + "\">"
                                    + sNames.get(toSpace.get("uid")) + "</a>");
                            mainService.addFeed(sGlobal, fs.get("icon"), fs.get("title_template"), titleData,
                                    fs.get("body_template"), null, fs.get("body_general"), null, null, "", 0, 0,
                                    0, "", false);
                        }
                        dataBaseService
                                .executeUpdate("UPDATE sns_space SET addfriendnum=addfriendnum-1 WHERE uid='"
                                        + space.get("uid") + "' AND addfriendnum>0");
                        mainService.addNotification(request, sGlobal, sConfig, uid, "friend",
                                Common.getMessage(request, "cp_note_friend_add"), false);
                        return showMessage(request, response, "friends_add", request.getParameter("refer"), 1,
                                new String[] { sNames.get(toSpace.get("uid")) });
                    } else {
                        op = "add2";
                        request.setAttribute("op", op);
                        request.setAttribute("tospace", toSpace);
                        request.setAttribute("groups", groups);
                        return include(request, response, sConfig, sGlobal, "cp_friend.jsp");
                    }
                }
            }
        } else if ("ignore".equals(op)) {
            if (uid > 0) {
                if (submitCheck(request, "friendsubmit")) {
                    int fStatus = Common.getFriendStatus(uid, (Integer) space.get("uid"));
                    if (fStatus == 1) {
                        mainService.updateFriend(request, sGlobal, sConfig, (Integer) sGlobal.get("supe_uid"),
                                (String) sGlobal.get("supe_username"), uid, "", "ignore", 0);
                    } else if (fStatus == 0) {
                        mainService.ignoreRequest(space, sConfig, uid);
                    }
                    return showMessage(request, response, "do_success", "main.action?ac=friend&op=request", 0);
                }
            } else if (space.get("key").toString().equals(request.getParameter("key"))) {
                List<Map<String, Object>> fUids = dataBaseService
                        .executeQuery("SELECT uid FROM sns_friend WHERE fuid='" + space.get("uid")
                                + "' AND status='0' LIMIT 0,1");
                if (fUids.size() > 0) {
                    Map<String, Object> value = fUids.get(0);
                    uid = (Integer) value.get("uid");
                    Map whereArr = new HashMap();
                    whereArr.put("uid", uid);
                    String userName = Common.getCount("sns_space", whereArr, "username");
                    mainService.ignoreRequest(space, sConfig, uid);
                    return showMessage(request, response, "friend_ignore_next",
                            "main.action?ac=friend&op=ignore&confirm=1&key=" + space.get("key"), 1, userName);
                } else {
                    return showMessage(request, response, "do_success", "main.action?ac=friend&op=request", 0);
                }
            } else {
                return showMessage(request, response, "specified_user_is_not_your_friend");
            }
        } else if ("addconfirm".equals(op)) {
            if (space.get("key").toString().equals(request.getParameter("key"))) {
                int maxFriendNum = (Integer) Common.checkPerm(request, response, sGlobal, "maxfriendnum");
                if (maxFriendNum != 0 && (Integer) space.get("friendnum") >= maxFriendNum
                        + (Integer) space.get("addfriend")) {
                    Map globalMagic = Common.getCacheDate(request, response, "cache/cache_magic.jsp",
                            "globalMagic");
                    if (!Common.empty(globalMagic.get("friendnum"))) {
                        return showMessage(request, response, "enough_of_the_number_of_friends_with_magic");
                    } else {
                        return showMessage(request, response, "enough_of_the_number_of_friends");
                    }
                }
                List<Map<String, Object>> uids = dataBaseService
                        .executeQuery("SELECT uid FROM sns_friend WHERE fuid='" + space.get("uid")
                                + "' AND status='0' LIMIT 0,1");
                if (uids.size() > 0) {
                    Map<String, Object> value = uids.get(0);
                    uid = (Integer) value.get("uid");
                    Map whereArr = new HashMap();
                    whereArr.put("uid", uid);
                    String userName = Common.getCount("sns_space", whereArr, "username");
                    mainService.updateFriend(request, sGlobal, sConfig, (Integer) space.get("uid"),
                            (String) space.get("username"), uid, userName, "add", 0);
                    dataBaseService.executeUpdate("UPDATE sns_space SET addfriendnum=addfriendnum-1 WHERE uid='"
                            + space.get("uid") + "' AND addfriendnum>0");
                    return showMessage(request, response, "friend_addconfirm_next",
                            "main.action?ac=friend&op=addconfirm&key=" + space.get("key"), 1, userName);
                }
            }
            return showMessage(request, response, "do_success", "main.action?ac=friend&op=request", 0);
        } else if ("syn".equals(op)) {
            return null;
        } else if ("find".equals(op)) {
            int maxNum = 18;
            List noUids = new ArrayList();
            if (space.get("friends") != null) {
                CollectionUtils.addAll(noUids, (String[]) space.get("friends"));
            }
            noUids.add(space.get("uid").toString());
            List<Map<String, Object>> nearList = new ArrayList<Map<String, Object>>(maxNum);
            int i = 0;
            String myIp = Common.getOnlineIP(request, true);
            List<Map<String, Object>> sessionList = dataBaseService
                    .executeQuery("SELECT * FROM sns_session WHERE ip='" + myIp + "' LIMIT 0,200");
            for (Map<String, Object> value : sessionList) {
                if (!noUids.contains(value.get("uid").toString())) {
                    nearList.add(value);
                    i++;
                    if (i >= maxNum) {
                        break;
                    }
                }
            }
            request.setAttribute("nearList", nearList);
            i = 0;
            if (!Common.empty(space.get("feedfriend"))) {
                Map friendList = new HashMap(maxNum);
                List<Map<String, Object>> friends = dataBaseService
                        .executeQuery("SELECT fuid AS uid, fusername AS username FROM "
                                + " sns_friend WHERE uid IN (" + space.get("feedfriend") + ") LIMIT 0,200");
                for (Map<String, Object> value : friends) {
                    if (!noUids.contains(value.get("uid").toString()) && !Common.empty(value.get("username"))) {
                        friendList.put(value.get("uid"), value);
                        i++;
                        if (i >= maxNum) {
                            break;
                        }
                    }
                }
                request.setAttribute("friendList", friendList);
            }
            i = 0;
            List<Map<String, Object>> onLineList = new ArrayList<Map<String, Object>>(maxNum);
            List<Map<String, Object>> onLines = dataBaseService
                    .executeQuery("SELECT * FROM sns_session LIMIT 0,200");
            for (Map<String, Object> value : onLines) {
                if (!noUids.contains(value.get("uid").toString())) {
                    onLineList.add(value);
                    i++;
                    if (i >= maxNum) {
                        break;
                    }
                }
            }
            request.setAttribute("onLineList", onLineList);
        } else if ("changegroup".equals(op)) {
            if (submitCheck(request, "changegroupsubmit")) {
                dataBaseService.executeUpdate(
                        "UPDATE sns_friend SET gid='" + Common.intval(request.getParameter("group"))
                                + "' WHERE uid='" + sGlobal.get("supe_uid") + "' AND fuid='" + uid + "'");
                mainService.friendCache(request, sGlobal, sConfig, (Integer) sGlobal.get("supe_uid"));
                return showMessage(request, response, "do_success", (String) sGlobal.get("refer"));
            }
            List<Map<String, Object>> friends = dataBaseService
                    .executeQuery("SELECT * FROM sns_friend WHERE uid='" + sGlobal.get("supe_uid")
                            + "' AND fuid='" + uid + "'");
            if (friends.isEmpty()) {
                return showMessage(request, response, "specified_user_is_not_your_friend");
            }
            Map<String, Object> friend = friends.get(0);
            Map groupSelect = new HashMap();
            groupSelect.put(friend.get("gid"), " checked");
            Map<Integer, String> groups = Common.getFriendGroup(request);
            request.setAttribute("groups", groups);
            request.setAttribute("groupSelect", groupSelect);
        } else if ("changenum".equals(op)) {
            if (submitCheck(request, "changenumsubmit")) {
                dataBaseService.executeUpdate(
                        "UPDATE sns_friend SET num='" + Common.intval(request.getParameter("num"))
                                + "' WHERE uid='" + sGlobal.get("supe_uid") + "' AND fuid='" + uid + "'");
                mainService.friendCache(request, sGlobal, sConfig, (Integer) sGlobal.get("supe_uid"));
                return showMessage(request, response, "do_success", (String) sGlobal.get("refer"), 0);
            }
            List<Map<String, Object>> friends = dataBaseService
                    .executeQuery("SELECT * FROM sns_friend WHERE uid='" + sGlobal.get("supe_uid")
                            + "' AND fuid='" + uid + "'");
            if (friends.isEmpty()) {
                return showMessage(request, response, "specified_user_is_not_your_friend");
            }
            request.setAttribute("friend", friends.get(0));
        } else if ("group".equals(op)) {
            if (submitCheck(request, "groupsubmin")) {
                String[] fUids = request.getParameterValues("fuids");
                if (Common.empty(fUids)) {
                    return showMessage(request, response, "please_correct_choice_groups_friend");
                }
                int groupId = Common.intval(request.getParameter("group"));
                dataBaseService.executeUpdate(
                        "UPDATE sns_friend SET gid='" + groupId + "' WHERE uid='" + sGlobal.get("supe_uid")
                                + "' AND fuid IN (" + Common.sImplode(fUids) + ") AND status='1'");
                mainService.friendCache(request, sGlobal, sConfig, (Integer) sGlobal.get("supe_uid"));
                return showMessage(request, response, "do_success", (String) sGlobal.get("refer"));
            }
            int perPage = 50;
            int page = Common.intval(request.getParameter("page"));
            if (page < 1) {
                page = 1;
            }
            int start = (page - 1) * perPage;
            if (!Common.empty(space.get("friendnum"))) {
                Map<Integer, String> groups = Common.getFriendGroup(request);
                String theURL = "main.action?ac=friend&op=group";
                int group = request.getParameter("group") == null ? -1
                        : Common.intval(request.getParameter("group"));
                String whereSQL = "";
                if (group > -1) {
                    whereSQL = "AND main.gid='" + group + "'";
                    theURL += "&group=" + group;
                }
                int count = dataBaseService.findRows("SELECT COUNT(*) FROM sns_friend main WHERE main.uid='"
                        + space.get("uid") + "' AND main.status='1' " + whereSQL);
                List<Map<String, Object>> list = dataBaseService.executeQuery(
                        "SELECT main.fuid AS uid,main.fusername AS username, main.gid, main.num FROM sns_friend main WHERE main.uid='"
                                + space.get("uid") + "' AND main.status='1' " + whereSQL
                                + " ORDER BY main.dateline DESC LIMIT " + start + "," + perPage);
                for (Map<String, Object> value : list) {
                    value.put("group", groups.get(value.get("gid")));
                }
                request.setAttribute("list", list);
                request.setAttribute("multi", Common.multi(request, count, perPage, page,
                        (Integer) sConfig.get("maxpage"), theURL, null, null));
            }
            Map<Integer, String> groups = Common.getFriendGroup(request);
            request.setAttribute("groups", groups);
            actives.put("group", " class=\"active\"");
        } else if ("request".equals(op)) {
            if (submitCheck(request, "requestsubmin")) {
                return showMessage(request, response, "do_success", (String) sGlobal.get("refer"));
            }
            int maxFriendnum = (Integer) Common.checkPerm(request, response, sGlobal, "maxfriendnum");
            if (maxFriendnum > 0) {
                maxFriendnum = maxFriendnum + (Integer) space.get("addfriend");
            }
            int perPage = 20;
            int page = Common.intval(request.getParameter("page"));
            if (page < 1) {
                page = 1;
            }
            int start = (page - 1) * perPage;
            String[] friend1 = (String[]) space.get("friends");
            Map whereArr = new HashMap();
            whereArr.put("fuid", space.get("uid"));
            whereArr.put("status", 0);
            int count = Common.intval(Common.getCount("sns_friend", whereArr, null));
            if (count > 0) {
                List<Map<String, Object>> list = dataBaseService
                        .executeQuery("SELECT f.dateline,f.note,f.fuid, s.*, sf.friend FROM "
                                + " sns_friend f LEFT JOIN sns_space s ON s.uid=f.uid LEFT JOIN sns_spacefield sf ON sf.uid=f.uid WHERE f.fuid='"
                                + space.get("uid") + "' AND f.status='0' ORDER BY f.dateline DESC LIMIT "
                                + start + "," + perPage);
                for (Map<String, Object> value : list) {
                    String[] cFriend = {};
                    String[] friend2 = Common.empty(value.get("friend")) ? null
                            : value.get("friend").toString().split(",");
                    if (friend1 != null && friend2 != null) {
                        cFriend = getArrayIntersect(friend1, friend2);
                    }
                    value.put("cfriend", Common.implode(cFriend, ","));
                    value.put("cfcount", cFriend.length);
                }
                request.setAttribute("list", list);
            }
            if (count != (Integer) space.get("addfriendnum")) {
                dataBaseService.executeUpdate("UPDATE sns_space SET addfriendnum='" + count + "' WHERE uid='"
                        + space.get("uid") + "'");
            }
            request.setAttribute("multi", Common.multi(request, count, perPage, page,
                    (Integer) sConfig.get("maxpage"), "main.action?ac=friend&op=request", null, null));
            request.setAttribute("maxfriendnum", maxFriendnum);
        } else if ("groupname".equals(op)) {
            Map<Integer, String> groups = Common.getFriendGroup(request);
            int group = Common.intval(request.getParameter("group"));
            if (groups.get(group) == null) {
                return showMessage(request, response, "change_friend_groupname_error");
            }
            if (submitCheck(request, "groupnamesubmit")) {
                Map<String, Object> privacy = (Map<String, Object>) space.get("privacy");
                Map<Integer, String> groupList = null;
                if (privacy != null) {
                    groupList = (Map<Integer, String>) privacy.get("groupname");
                }
                groupList = groupList == null ? new HashMap<Integer, String>() : groupList;
                String groupName = Common.getStr(request.getParameter("groupname"), 20, true, true, false, 0, 0,
                        request, response);
                groupList.put(group, groupName);
                if (privacy != null) {
                    privacy.put("groupname", groupList);
                    space.put("privacy", privacy);
                }
                mainService.privacyUpdate(privacy, (Integer) sGlobal.get("supe_uid"));
                return showMessage(request, response, "do_success", request.getParameter("refer"));
            }
            request.setAttribute("group", group);
            request.setAttribute("groups", groups);
        } else if ("groupignore".equals(op)) {
            Map<Integer, String> groups = Common.getFriendGroup(request);
            int group = Common.intval(request.getParameter("group"));
            if (groups.get(group) == null) {
                return showMessage(request, response, "change_friend_groupname_error");
            }
            if (submitCheck(request, "groupignoresubmit")) {
                Map<String, Object> privacy = (Map<String, Object>) space.get("privacy");
                Map<Integer, Integer> filterGid = null;
                if (privacy != null) {
                    filterGid = (Map<Integer, Integer>) privacy.get("filter_gid");
                }
                filterGid = filterGid == null ? new HashMap<Integer, Integer>() : filterGid;
                if (filterGid.get(group) != null) {
                    filterGid.remove(group);
                } else {
                    filterGid.put(group, group);
                }
                if (privacy != null) {
                    privacy.put("filter_gid", filterGid);
                    space.put("privacy", privacy);
                }
                mainService.privacyUpdate(privacy, (Integer) sGlobal.get("supe_uid"));
                mainService.friendCache(request, sGlobal, sConfig, (Integer) sGlobal.get("supe_uid"));
                return showMessage(request, response, "do_success", request.getParameter("refer"), 0);
            }
            request.setAttribute("group", group);
        } else if ("blacklist".equals(op)) {
            if ("delete".equals(request.getParameter("subop"))) {
                dataBaseService.executeUpdate("DELETE FROM sns_blacklist WHERE uid='" + space.get("uid")
                        + "' AND buid='" + uid + "'");
                return showMessage(request, response, "do_success",
                        "zone.action?do=friend&view=blacklist&start=" + request.getParameter("start"), 0);
            }
            if (submitCheck(request, "blacklistsubmit")) {
                String userName = Common.trim(request.getParameter("username"));
                List<Map<String, Object>> spaceList = dataBaseService
                        .executeQuery("SELECT * FROM sns_space WHERE username='" + userName + "'");
                if (spaceList.isEmpty()) {
                    return showMessage(request, response, "space_does_not_exist");
                }
                Map<String, Object> toSpace = spaceList.get(0);
                if (toSpace.get("uid").equals(space.get("uid"))) {
                    return showMessage(request, response, "unable_to_manage_self");
                }
                if (Common.in_array((String[]) space.get("friends"), toSpace.get("uid"))) {
                    mainService.updateFriend(request, sGlobal, sConfig, (Integer) sGlobal.get("supe_uid"),
                            (String) sGlobal.get("supe_username"), (Integer) toSpace.get("uid"), "", "ignore",
                            0);
                }
                Map insertData = new HashMap();
                insertData.put("uid", space.get("uid"));
                insertData.put("buid", toSpace.get("uid"));
                insertData.put("dateline", sGlobal.get("timestamp"));
                dataBaseService.insertTable("sns_blacklist", insertData, false, true);
                return showMessage(request, response, "do_success",
                        "zone.action?do=friend&view=blacklist&start=" + request.getParameter("start"), 0);
            }
        } else if ("rand".equals(op)) {
            Object[] randUids = null;
            if ((Integer) space.get("friendnum") < 5) {
                List<Map<String, Object>> sessionList = dataBaseService
                        .executeQuery("SELECT uid FROM sns_session LIMIT 0,100");
                List onlineList = new ArrayList(sessionList.size());
                for (Map<String, Object> value : sessionList) {
                    if (!value.get("uid").equals(space.get("uid"))) {
                        onlineList.add(value.get("uid"));
                    }
                }
                randUids = (Object[]) Common
                        .sarrayRand(arrayMerge(onlineList.toArray(), (String[]) space.get("friends")), 1);
            } else {
                randUids = (Object[]) Common.sarrayRand(space.get("friends"), 1);
            }
            return showMessage(request, response, "do_success",
                    "zone.action?uid=" + (randUids == null ? "" : randUids[randUids.length - 1]), 0);
        } else if ("getcfriend".equals(op)) {
            String[] fuids = Common.empty(request.getParameter("fuid")) ? null
                    : request.getParameter("fuid").split(",");
            Map<Integer, Integer> newfUids = new HashMap<Integer, Integer>(fuids == null ? 0 : fuids.length);
            if (fuids != null) {
                for (String value : fuids) {
                    int fuid = Common.intval(value);
                    if (fuid != 0) {
                        newfUids.put(fuid, fuid);
                    }
                }
            }
            if (!newfUids.isEmpty()) {
                List<Map<String, Object>> list = dataBaseService
                        .executeQuery("SELECT uid,username,name,namestatus FROM sns_space WHERE uid IN ("
                                + Common.sImplode(newfUids) + ") LIMIT 0,15");
                request.setAttribute("list", list);
            }
        } else if ("search".equals(op)) {
            Map<Integer, Map<String, Object>> fields = Common.getCacheDate(request, response,
                    "cache/cache_profilefield.jsp", "globalProfilefield");
            if (!Common.empty(request.getParameter("searchsubmit"))
                    || !Common.empty(request.getParameter("searchmode"))) {
                Map<String, String[]> paramMap = request.getParameterMap();
                paramMap.put("searchsubmit", new String[] { 1 + "" });
                paramMap.put("searchmode", new String[] { 1 + "" });
                List<String> whereArr = new ArrayList<String>();
                Map<String, String> fromArr = new HashMap<String, String>();
                String fSQL = "";
                fromArr.put("space", " sns_space s");
                String searchKey = request.getParameter("searchkey");
                if (!Common.empty(Common.stripSearchKey(searchKey))) {
                    whereArr.add("(s.name='" + searchKey + "' OR s.username='" + searchKey + "')");
                } else {
                    for (String value : new String[] { "uid", "username", "name", "videostatus", "avatar" }) {
                        if (!Common.empty(request.getParameter(value))) {
                            whereArr.add("s." + value + "='" + request.getParameter(value) + "'");
                        }
                    }
                }
                String spaceField = null;
                for (String value : new String[] { "sex", "qq", "msn", "birthyear", "birthmonth", "birthday",
                        "blood", "marry", "birthprovince", "birthcity", "resideprovince", "residecity" }) {
                    if (!Common.empty(request.getParameter(value))) {
                        fromArr.put("spacefield", " sns_spacefield sf");
                        spaceField = "sf.uid=s.uid";
                        whereArr.add("sf." + value + "='" + request.getParameter(value) + "'");
                        fSQL += ", sf." + value;
                    }
                }
                int startAge, endAge;
                endAge = startAge = 0;
                if (!Common.empty(request.getParameter("endage"))) {
                    startAge = Integer.valueOf(Common.sgmdate(request, "yyyy", 0))
                            - Common.intval(request.getParameter("endage"));
                }
                if (!Common.empty(request.getParameter("startage"))) {
                    endAge = Integer.valueOf(Common.sgmdate(request, "yyyy", 0))
                            - Common.intval(request.getParameter("startage"));
                }
                if (startAge != 0 || endAge != 0) {
                    fromArr.put("spacefield", " sns_spacefield sf");
                    spaceField = "sf.uid=s.uid";
                }
                if (startAge != 0 && endAge != 0 && endAge > startAge) {
                    whereArr.add("(sf.birthyear>=" + startAge + " AND sf.birthyear<=" + endAge + ")");
                } else if (startAge != 0 && endAge == 0) {
                    whereArr.add("sf.birthyear>=" + startAge);
                } else if (startAge == 0 && endAge != 0) {
                    whereArr.add("sf.birthyear<=" + endAge);
                }
                boolean haveField = false;
                for (Entry<Integer, Map<String, Object>> e : fields.entrySet()) {
                    if (!Common.empty(e.getValue().get("allowsearch"))) {
                        String field = Common.stripSearchKey(request.getParameter("field_" + e.getKey()));
                        if (!Common.empty(field)) {
                            haveField = true;
                            whereArr.add("sf.field_" + e.getKey() + " LIKE '%" + field + "%'");
                        }
                    }
                }
                if (haveField) {
                    fromArr.put("spacefield", " sns_spacefield sf");
                    spaceField = "sf.uid=s.uid";
                }
                String type = request.getParameter("type");
                String spaceInfo = null;
                if ("edu".equals(type) || "work".equals(type)) {
                    for (String value : new String[] { "type", "title", "subtitle", "startyear" }) {
                        if (!Common.empty(request.getParameter(value))) {
                            fromArr.put("spaceinfo", " sns_spaceinfo si");
                            spaceInfo = "si.uid=s.uid";
                            whereArr.add("si." + value + "='" + request.getParameter(value) + "'");
                        }
                    }
                }
                if (!whereArr.isEmpty()) {
                    List<Map<String, Object>> searchList = dataBaseService
                            .executeQuery("SELECT s.* " + fSQL + " FROM " + Common.implode(fromArr, ",")
                                    + " WHERE " + Common.implode(whereArr, " AND ")
                                    + (spaceField == null ? "" : " AND " + spaceField)
                                    + (spaceInfo == null ? "" : " AND " + spaceInfo) + " LIMIT 0,500");
                    Set<Map<String, Object>> list = new LinkedHashSet<Map<String, Object>>(searchList.size());
                    for (Map<String, Object> value : searchList) {
                        value.put("isfriend",
                                (value.get("uid").equals(space.get("uid"))
                                        || (Common.in_array((String[]) space.get("friends"), value.get("uid"))))
                                                ? true
                                                : false);
                        value.put("gColor", Common.getColor(request, response, (Integer) value.get("groupid")));
                        value.put("gIcon", Common.getIcon(request, response, (Integer) value.get("groupid")));
                        list.add(value);
                    }
                    request.setAttribute("list", list);
                }
            } else {
                StringBuffer yearHTML = new StringBuffer();
                int nowy = Integer.valueOf(Common.sgmdate(request, "yyyy", 0));
                for (int i = 0; i < 50; i++) {
                    int they = nowy - i;
                    yearHTML.append("<option value=\"" + they + "\">" + they + "</option>");
                }
                request.setAttribute("yearhtml", yearHTML);
                Map sexArr = new HashMap();
                sexArr.put(space.get("sex").toString(), " checked");
                request.setAttribute("sexarr", sexArr);
                String all = request.getParameter("all");
                StringBuffer birthYearHTML = new StringBuffer();
                for (int i = 0; i < 100; i++) {
                    int they = nowy - i;
                    String selectStr = "";
                    if (Common.empty(all)) {
                        selectStr = they == (Integer) space.get("birthyear") ? " selected" : "";
                    }
                    birthYearHTML
                            .append("<option value=\"" + they + "\"" + selectStr + ">" + they + "</option>");
                }
                request.setAttribute("birthyearhtml", birthYearHTML.toString());
                String birthMonthHTML = "";
                for (int i = 1; i < 13; i++) {
                    String selectStr = "";
                    if (Common.empty(all)) {
                        selectStr = i == (Integer) space.get("birthmonth") ? " selected" : "";
                    }
                    birthMonthHTML += "<option value=\"" + i + "\"" + selectStr + ">" + i + "</option>";
                }
                request.setAttribute("birthmonthhtml", birthMonthHTML.toString());
                StringBuffer birthdayHTML = new StringBuffer();
                for (int i = 1; i < 29; i++) {
                    String selectStr = "";
                    if (Common.empty(all)) {
                        selectStr = i == (Integer) space.get("birthday") ? " selected" : "";
                    }
                    birthdayHTML.append("<option value=\"" + i + "\"" + selectStr + ">" + i + "</option>");
                }
                request.setAttribute("birthdayhtml", birthdayHTML.toString());
                String bloodHTML = "";
                for (String value : new String[] { "A", "B", "O", "AB" }) {
                    String selectStr = "";
                    if (Common.empty(all)) {
                        selectStr = value.equals(space.get("blood")) ? " selected" : "";
                    }
                    bloodHTML += "<option value=\"" + value + "\"" + selectStr + ">" + value + "</option>";
                }
                request.setAttribute("bloodhtml", bloodHTML.toString());
                Map marryArr = new HashMap();
                marryArr.put(space.get("marry").toString(), " selected");
                request.setAttribute("marryarr", marryArr);
                List<Integer> removeKeys = new ArrayList<Integer>(fields.size());
                for (Entry<Integer, Map<String, Object>> e : fields.entrySet()) {
                    Map<String, Object> fValue = e.getValue();
                    if (!Common.empty(fValue.get("allowsearch"))) {
                        if ("text".equals(fValue.get("formtype"))) {
                            fValue.put("html", "<input type=\"text\" name=\"field_" + e.getKey()
                                    + "\" value=\"\" class=\"t_input\">");
                        } else {
                            StringBuffer HTML = new StringBuffer();
                            HTML.append("<select name=\"field_" + e.getKey()
                                    + "\"><option value=\"\">---</option>");
                            String[] optionArr = fValue.get("choice").toString().split("\n");
                            for (String ov : optionArr) {
                                ov = ov.trim();
                                if (!"".equals(ov)) {
                                    HTML.append("<option value=\"" + ov + "\">" + ov + "</option>");
                                }
                            }
                            HTML.append("</select>");
                            fValue.put("html", HTML.toString());
                        }
                    } else {
                        removeKeys.add(e.getKey());
                    }
                }
                for (Integer removeKey : removeKeys) {
                    fields.remove(removeKey);
                }
                request.setAttribute("fields", fields);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        return showMessage(request, response, e.getMessage());
    }
    request.setAttribute("op", op);
    request.setAttribute("uid", uid);
    return include(request, response, sConfig, sGlobal, "cp_friend.jsp");
}

From source file:cn.jcenterhome.web.action.CpAction.java

public ActionForward cp_friend(HttpServletRequest request, HttpServletResponse response) {
    Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
    Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
    Map<String, Object> space = (Map<String, Object>) request.getAttribute("space");
    Map<Integer, String> sNames = (Map<Integer, String>) request.getAttribute("sNames");
    String op = request.getParameter("op");
    int uid = Common.intval(request.getParameter("uid"));
    space.put("key", Common.spaceKey(space, sConfig, 0));
    Map<String, String> actives = new HashMap<String, String>();
    actives.put(op, " class=\"active\"");
    request.setAttribute("actives", actives);
    try {//from  w ww.j a v a2s . co  m
        if ("add".equals(op)) {
            if (!Common.checkPerm(request, response, "allowfriend")) {
                MessageVO msgVO = Common.ckSpaceLog(request);
                if (msgVO != null) {
                    return showMessage(request, response, msgVO);
                }
                return showMessage(request, response, "no_privilege");
            }
            if (uid == (Integer) sGlobal.get("supe_uid")) {
                return showMessage(request, response, "friend_self_error");
            }
            if (Common.in_array((String[]) space.get("friends"), uid)) {
                return showMessage(request, response, "you_have_friends");
            }
            if (!cpService.checkRealName(request, "friend")) {
                return showMessage(request, response, "no_privilege_realname");
            }
            Map<String, Object> toSpace = Common.getSpace(request, sGlobal, sConfig, uid);
            if (Common.empty(toSpace)) {
                return showMessage(request, response, "space_does_not_exist");
            }
            if (cpService.isBlackList((Integer) toSpace.get("uid"), (Integer) sGlobal.get("supe_uid")) != 0) {
                return showMessage(request, response, "is_blacklist");
            }
            Map<Integer, String> groups = Common.getFriendGroup(request);
            int status = Common.getFriendStatus((Integer) sGlobal.get("supe_uid"), uid);
            if (status == 1) {
                return showMessage(request, response, "you_have_friends");
            } else {
                int maxFriendNum = (Integer) Common.checkPerm(request, response, sGlobal, "maxfriendnum");
                if (maxFriendNum != 0 && (Integer) space.get("friendnum") >= maxFriendNum
                        + (Integer) space.get("addfriend")) {
                    Map globalMagic = Common.getCacheDate(request, response, "/data/cache/cache_magic.jsp",
                            "globalMagic");
                    if (!Common.empty(globalMagic.get("friendnum"))) {
                        return showMessage(request, response, "enough_of_the_number_of_friends_with_magic");
                    } else {
                        return showMessage(request, response, "enough_of_the_number_of_friends");
                    }
                }
                int fStatus = Common.getFriendStatus(uid, (Integer) sGlobal.get("supe_uid"));
                if (fStatus == -1) {
                    if (status == -1) {
                        if (!Common.empty(toSpace.get("videostatus"))) {
                            if (!cpService.checkVideoPhoto(request, response, "friend", toSpace)) {
                                return showMessage(request, response, "no_privilege_videophoto");
                            }
                        }
                        if (submitCheck(request, "addsubmit")) {
                            Map<String, Object> serArr = new HashMap<String, Object>();
                            serArr.put("uid", sGlobal.get("supe_uid"));
                            serArr.put("fuid", uid);
                            serArr.put("fusername", Common.addSlashes((String) toSpace.get("username")));
                            serArr.put("gid", Common.intval(request.getParameter("gid")));
                            serArr.put("note", Common.getStr(request.getParameter("note"), 50, true, true,
                                    false, 0, 0, request, response));
                            serArr.put("dateline", sGlobal.get("timestamp"));
                            dataBaseService.insertTable("friend", serArr, false, false);
                            cpService.sendMail(request, response, uid, "", Common.getMessage(request,
                                    "cp_friend_subject",
                                    new String[] { sNames.get(space.get("uid")),
                                            Common.getSiteUrl(request) + "cp.jsp?ac=friend&amp;op=request" }),
                                    "", "friend_add");
                            dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
                                    + " SET addfriendnum=addfriendnum+1 WHERE uid='" + uid + "'");
                            return showMessage(request, response, "request_has_been_sent");
                        } else {
                            request.setAttribute("op", op);
                            request.setAttribute("tospace", toSpace);
                            request.setAttribute("groups", groups);
                            return include(request, response, sConfig, sGlobal, "cp_friend.jsp");
                        }
                    } else {
                        return showMessage(request, response, "waiting_for_the_other_test");
                    }
                } else {
                    if (submitCheck(request, "add2submit")) {
                        int gid = Common.intval(request.getParameter("gid"));
                        cpService.updateFriend(request, sGlobal, sConfig, (Integer) space.get("uid"),
                                (String) space.get("username"), (Integer) toSpace.get("uid"),
                                (String) toSpace.get("username"), "add", gid);
                        if (Common.ckPrivacy(sGlobal, sConfig, space, "friend", 1)) {
                            Map<String, String> fs = new HashMap<String, String>();
                            fs.put("icon", "friend");
                            fs.put("title_template", Common.getMessage(request, "cp_feed_friend_title"));
                            fs.put("body_template", "");
                            fs.put("body_general", "");
                            Map titleData = new HashMap();
                            titleData.put("touser", "<a href=\"space.jsp?uid=" + toSpace.get("uid") + "\">"
                                    + sNames.get(toSpace.get("uid")) + "</a>");
                            cpService.addFeed(sGlobal, fs.get("icon"), fs.get("title_template"), titleData,
                                    fs.get("body_template"), null, fs.get("body_general"), null, null, "", 0, 0,
                                    0, "", false);
                        }
                        dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
                                + " SET addfriendnum=addfriendnum-1 WHERE uid='" + space.get("uid")
                                + "' AND addfriendnum>0");
                        cpService.addNotification(request, sGlobal, sConfig, uid, "friend",
                                Common.getMessage(request, "cp_note_friend_add"), false);
                        return showMessage(request, response, "friends_add", request.getParameter("refer"), 1,
                                new String[] { sNames.get(toSpace.get("uid")) });
                    } else {
                        op = "add2";
                        request.setAttribute("op", op);
                        request.setAttribute("tospace", toSpace);
                        request.setAttribute("groups", groups);
                        return include(request, response, sConfig, sGlobal, "cp_friend.jsp");
                    }
                }
            }
        } else if ("ignore".equals(op)) {
            if (uid > 0) {
                if (submitCheck(request, "friendsubmit")) {
                    int fStatus = Common.getFriendStatus(uid, (Integer) space.get("uid"));
                    if (fStatus == 1) {
                        cpService.updateFriend(request, sGlobal, sConfig, (Integer) sGlobal.get("supe_uid"),
                                (String) sGlobal.get("supe_username"), uid, "", "ignore", 0);
                    } else if (fStatus == 0) {
                        cpService.ignoreRequest(space, sConfig, uid);
                    }
                    return showMessage(request, response, "do_success", "cp.jsp?ac=friend&op=request", 0);
                }
            } else if (space.get("key").toString().equals(request.getParameter("key"))) {
                List<Map<String, Object>> fUids = dataBaseService
                        .executeQuery("SELECT uid FROM " + JavaCenterHome.getTableName("friend")
                                + " WHERE fuid='" + space.get("uid") + "' AND status='0' LIMIT 0,1");
                if (fUids.size() > 0) {
                    Map<String, Object> value = fUids.get(0);
                    uid = (Integer) value.get("uid");
                    Map whereArr = new HashMap();
                    whereArr.put("uid", uid);
                    String userName = Common.getCount("space", whereArr, "username");
                    cpService.ignoreRequest(space, sConfig, uid);
                    return showMessage(request, response, "friend_ignore_next",
                            "cp.jsp?ac=friend&op=ignore&confirm=1&key=" + space.get("key"), 1, userName);
                } else {
                    return showMessage(request, response, "do_success", "cp.jsp?ac=friend&op=request", 0);
                }
            } else {
                return showMessage(request, response, "specified_user_is_not_your_friend");
            }
        } else if ("addconfirm".equals(op)) {
            if (space.get("key").toString().equals(request.getParameter("key"))) {
                int maxFriendNum = (Integer) Common.checkPerm(request, response, sGlobal, "maxfriendnum");
                if (maxFriendNum != 0 && (Integer) space.get("friendnum") >= maxFriendNum
                        + (Integer) space.get("addfriend")) {
                    Map globalMagic = Common.getCacheDate(request, response, "/data/cache/cache_magic.jsp",
                            "globalMagic");
                    if (!Common.empty(globalMagic.get("friendnum"))) {
                        return showMessage(request, response, "enough_of_the_number_of_friends_with_magic");
                    } else {
                        return showMessage(request, response, "enough_of_the_number_of_friends");
                    }
                }
                List<Map<String, Object>> uids = dataBaseService
                        .executeQuery("SELECT uid FROM " + JavaCenterHome.getTableName("friend")
                                + " WHERE fuid='" + space.get("uid") + "' AND status='0' LIMIT 0,1");
                if (uids.size() > 0) {
                    Map<String, Object> value = uids.get(0);
                    uid = (Integer) value.get("uid");
                    Map whereArr = new HashMap();
                    whereArr.put("uid", uid);
                    String userName = Common.getCount("space", whereArr, "username");
                    cpService.updateFriend(request, sGlobal, sConfig, (Integer) space.get("uid"),
                            (String) space.get("username"), uid, userName, "add", 0);
                    dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
                            + " SET addfriendnum=addfriendnum-1 WHERE uid='" + space.get("uid")
                            + "' AND addfriendnum>0");
                    return showMessage(request, response, "friend_addconfirm_next",
                            "cp.jsp?ac=friend&op=addconfirm&key=" + space.get("key"), 1, userName);
                }
            }
            return showMessage(request, response, "do_success", "cp.jsp?ac=friend&op=request", 0);
        } else if ("syn".equals(op)) {
            return null;
        } else if ("find".equals(op)) {
            int maxNum = 18;
            List noUids = new ArrayList();
            if (space.get("friends") != null) {
                CollectionUtils.addAll(noUids, (String[]) space.get("friends"));
            }
            noUids.add(space.get("uid").toString());
            List<Map<String, Object>> nearList = new ArrayList<Map<String, Object>>(maxNum);
            int i = 0;
            String myIp = Common.getOnlineIP(request, true);
            List<Map<String, Object>> sessionList = dataBaseService.executeQuery("SELECT * FROM "
                    + JavaCenterHome.getTableName("session") + " WHERE ip='" + myIp + "' LIMIT 0,200");
            for (Map<String, Object> value : sessionList) {
                if (!noUids.contains(value.get("uid").toString())) {
                    Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
                            (String) value.get("username"), "", 0);
                    nearList.add(value);
                    i++;
                    if (i >= maxNum) {
                        break;
                    }
                }
            }
            request.setAttribute("nearList", nearList);
            i = 0;
            if (!Common.empty(space.get("feedfriend"))) {
                Map friendList = new HashMap(maxNum);
                List<Map<String, Object>> friends = dataBaseService
                        .executeQuery("SELECT fuid AS uid, fusername AS username FROM "
                                + JavaCenterHome.getTableName("friend") + " WHERE uid IN ("
                                + space.get("feedfriend") + ") LIMIT 0,200");
                for (Map<String, Object> value : friends) {
                    if (!noUids.contains(value.get("uid").toString()) && !Common.empty(value.get("username"))) {
                        Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
                                (String) value.get("username"), "", 0);
                        friendList.put(value.get("uid"), value);
                        i++;
                        if (i >= maxNum) {
                            break;
                        }
                    }
                }
                request.setAttribute("friendList", friendList);
            }
            i = 0;
            List<Map<String, Object>> onLineList = new ArrayList<Map<String, Object>>(maxNum);
            List<Map<String, Object>> onLines = dataBaseService
                    .executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("session") + " LIMIT 0,200");
            for (Map<String, Object> value : onLines) {
                if (!noUids.contains(value.get("uid").toString())) {
                    Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
                            (String) value.get("username"), null, 0);
                    onLineList.add(value);
                    i++;
                    if (i >= maxNum) {
                        break;
                    }
                }
            }
            request.setAttribute("onLineList", onLineList);
            Common.realname_get(sGlobal, sConfig, sNames, space);
        } else if ("changegroup".equals(op)) {
            if (submitCheck(request, "changegroupsubmit")) {
                dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("friend") + " SET gid='"
                        + Common.intval(request.getParameter("group")) + "' WHERE uid='"
                        + sGlobal.get("supe_uid") + "' AND fuid='" + uid + "'");
                cpService.friendCache(request, sGlobal, sConfig, (Integer) sGlobal.get("supe_uid"));
                return showMessage(request, response, "do_success", (String) sGlobal.get("refer"));
            }
            List<Map<String, Object>> friends = dataBaseService
                    .executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("friend") + " WHERE uid='"
                            + sGlobal.get("supe_uid") + "' AND fuid='" + uid + "'");
            if (friends.isEmpty()) {
                return showMessage(request, response, "specified_user_is_not_your_friend");
            }
            Map<String, Object> friend = friends.get(0);
            Map groupSelect = new HashMap();
            groupSelect.put(friend.get("gid"), " checked");
            Map<Integer, String> groups = Common.getFriendGroup(request);
            request.setAttribute("groups", groups);
            request.setAttribute("groupSelect", groupSelect);
        } else if ("changenum".equals(op)) {
            if (submitCheck(request, "changenumsubmit")) {
                dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("friend") + " SET num='"
                        + Common.intval(request.getParameter("num")) + "' WHERE uid='" + sGlobal.get("supe_uid")
                        + "' AND fuid='" + uid + "'");
                cpService.friendCache(request, sGlobal, sConfig, (Integer) sGlobal.get("supe_uid"));
                return showMessage(request, response, "do_success", (String) sGlobal.get("refer"), 0);
            }
            List<Map<String, Object>> friends = dataBaseService
                    .executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("friend") + " WHERE uid='"
                            + sGlobal.get("supe_uid") + "' AND fuid='" + uid + "'");
            if (friends.isEmpty()) {
                return showMessage(request, response, "specified_user_is_not_your_friend");
            }
            request.setAttribute("friend", friends.get(0));
        } else if ("group".equals(op)) {
            if (submitCheck(request, "groupsubmin")) {
                String[] fUids = request.getParameterValues("fuids");
                if (Common.empty(fUids)) {
                    return showMessage(request, response, "please_correct_choice_groups_friend");
                }
                int groupId = Common.intval(request.getParameter("group"));
                dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("friend") + " SET gid='"
                        + groupId + "' WHERE uid='" + sGlobal.get("supe_uid") + "' AND fuid IN ("
                        + Common.sImplode(fUids) + ") AND status='1'");
                cpService.friendCache(request, sGlobal, sConfig, (Integer) sGlobal.get("supe_uid"));
                return showMessage(request, response, "do_success", (String) sGlobal.get("refer"));
            }
            int perPage = 50;
            int page = Common.intval(request.getParameter("page"));
            if (page < 1) {
                page = 1;
            }
            int start = (page - 1) * perPage;
            if (!Common.empty(space.get("friendnum"))) {
                Map<Integer, String> groups = Common.getFriendGroup(request);
                String theURL = "cp.jsp?ac=friend&op=group";
                int group = request.getParameter("group") == null ? -1
                        : Common.intval(request.getParameter("group"));
                String whereSQL = "";
                if (group > -1) {
                    whereSQL = "AND main.gid='" + group + "'";
                    theURL += "&group=" + group;
                }
                int count = dataBaseService.findRows("SELECT COUNT(*) FROM "
                        + JavaCenterHome.getTableName("friend") + " main WHERE main.uid='" + space.get("uid")
                        + "' AND main.status='1' " + whereSQL);
                List<Map<String, Object>> list = dataBaseService.executeQuery(
                        "SELECT main.fuid AS uid,main.fusername AS username, main.gid, main.num FROM "
                                + JavaCenterHome.getTableName("friend") + " main WHERE main.uid='"
                                + space.get("uid") + "' AND main.status='1' " + whereSQL
                                + " ORDER BY main.dateline DESC LIMIT " + start + "," + perPage);
                for (Map<String, Object> value : list) {
                    Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
                            (String) value.get("username"), "", 0);
                    value.put("group", groups.get(value.get("gid")));
                }
                request.setAttribute("list", list);
                request.setAttribute("multi", Common.multi(request, count, perPage, page,
                        (Integer) sConfig.get("maxpage"), theURL, null, null));
            }
            Map<Integer, String> groups = Common.getFriendGroup(request);
            request.setAttribute("groups", groups);
            actives.put("group", " class=\"active\"");
            Common.realname_get(sGlobal, sConfig, sNames, space);
        } else if ("request".equals(op)) {
            if (submitCheck(request, "requestsubmin")) {
                return showMessage(request, response, "do_success", (String) sGlobal.get("refer"));
            }
            int maxFriendnum = (Integer) Common.checkPerm(request, response, sGlobal, "maxfriendnum");
            if (maxFriendnum > 0) {
                maxFriendnum = maxFriendnum + (Integer) space.get("addfriend");
            }
            int perPage = 20;
            int page = Common.intval(request.getParameter("page"));
            if (page < 1) {
                page = 1;
            }
            int start = (page - 1) * perPage;
            String[] friend1 = (String[]) space.get("friends");
            Map whereArr = new HashMap();
            whereArr.put("fuid", space.get("uid"));
            whereArr.put("status", 0);
            int count = Common.intval(Common.getCount("friend", whereArr, null));
            if (count > 0) {
                List<Map<String, Object>> list = dataBaseService
                        .executeQuery("SELECT f.dateline,f.note,f.fuid, s.*, sf.friend FROM "
                                + JavaCenterHome.getTableName("friend") + " f LEFT JOIN "
                                + JavaCenterHome.getTableName("space") + " s ON s.uid=f.uid LEFT JOIN "
                                + JavaCenterHome.getTableName("spacefield")
                                + " sf ON sf.uid=f.uid WHERE f.fuid='" + space.get("uid")
                                + "' AND f.status='0' ORDER BY f.dateline DESC LIMIT " + start + "," + perPage);
                for (Map<String, Object> value : list) {
                    Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
                            (String) value.get("username"), "", 0);
                    String[] cFriend = {};
                    String[] friend2 = Common.empty(value.get("friend")) ? null
                            : value.get("friend").toString().split(",");
                    if (friend1 != null && friend2 != null) {
                        cFriend = getArrayIntersect(friend1, friend2);
                    }
                    value.put("cfriend", Common.implode(cFriend, ","));
                    value.put("cfcount", cFriend.length);
                }
                request.setAttribute("list", list);
            }
            if (count != (Integer) space.get("addfriendnum")) {
                dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space")
                        + " SET addfriendnum='" + count + "' WHERE uid='" + space.get("uid") + "'");
            }
            request.setAttribute("multi", Common.multi(request, count, perPage, page,
                    (Integer) sConfig.get("maxpage"), "cp.jsp?ac=friend&op=request", null, null));
            Common.realname_get(sGlobal, sConfig, sNames, space);
            request.setAttribute("maxfriendnum", maxFriendnum);
        } else if ("groupname".equals(op)) {
            Map<Integer, String> groups = Common.getFriendGroup(request);
            int group = Common.intval(request.getParameter("group"));
            if (groups.get(group) == null) {
                return showMessage(request, response, "change_friend_groupname_error");
            }
            if (submitCheck(request, "groupnamesubmit")) {
                Map<String, Object> privacy = (Map<String, Object>) space.get("privacy");
                Map<Integer, String> groupList = null;
                if (privacy != null) {
                    groupList = (Map<Integer, String>) privacy.get("groupname");
                }
                groupList = groupList == null ? new HashMap<Integer, String>() : groupList;
                String groupName = Common.getStr(request.getParameter("groupname"), 20, true, true, false, 0, 0,
                        request, response);
                groupList.put(group, groupName);
                if (privacy != null) {
                    privacy.put("groupname", groupList);
                    space.put("privacy", privacy);
                }
                cpService.privacyUpdate(privacy, (Integer) sGlobal.get("supe_uid"));
                return showMessage(request, response, "do_success", request.getParameter("refer"));
            }
            request.setAttribute("group", group);
            request.setAttribute("groups", groups);
        } else if ("groupignore".equals(op)) {
            Map<Integer, String> groups = Common.getFriendGroup(request);
            int group = Common.intval(request.getParameter("group"));
            if (groups.get(group) == null) {
                return showMessage(request, response, "change_friend_groupname_error");
            }
            if (submitCheck(request, "groupignoresubmit")) {
                Map<String, Object> privacy = (Map<String, Object>) space.get("privacy");
                Map<Integer, Integer> filterGid = null;
                if (privacy != null) {
                    filterGid = (Map<Integer, Integer>) privacy.get("filter_gid");
                }
                filterGid = filterGid == null ? new HashMap<Integer, Integer>() : filterGid;
                if (filterGid.get(group) != null) {
                    filterGid.remove(group);
                } else {
                    filterGid.put(group, group);
                }
                if (privacy != null) {
                    privacy.put("filter_gid", filterGid);
                    space.put("privacy", privacy);
                }
                cpService.privacyUpdate(privacy, (Integer) sGlobal.get("supe_uid"));
                cpService.friendCache(request, sGlobal, sConfig, (Integer) sGlobal.get("supe_uid"));
                return showMessage(request, response, "do_success", request.getParameter("refer"), 0);
            }
            request.setAttribute("group", group);
        } else if ("blacklist".equals(op)) {
            if ("delete".equals(request.getParameter("subop"))) {
                dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("blacklist")
                        + " WHERE uid='" + space.get("uid") + "' AND buid='" + uid + "'");
                return showMessage(request, response, "do_success",
                        "space.jsp?do=friend&view=blacklist&start=" + request.getParameter("start"), 0);
            }
            if (submitCheck(request, "blacklistsubmit")) {
                String userName = Common.trim(request.getParameter("username"));
                List<Map<String, Object>> spaceList = dataBaseService.executeQuery("SELECT * FROM "
                        + JavaCenterHome.getTableName("space") + " WHERE username='" + userName + "'");
                if (spaceList.isEmpty()) {
                    return showMessage(request, response, "space_does_not_exist");
                }
                Map<String, Object> toSpace = spaceList.get(0);
                if (toSpace.get("uid").equals(space.get("uid"))) {
                    return showMessage(request, response, "unable_to_manage_self");
                }
                if (Common.in_array((String[]) space.get("friends"), toSpace.get("uid"))) {
                    cpService.updateFriend(request, sGlobal, sConfig, (Integer) sGlobal.get("supe_uid"),
                            (String) sGlobal.get("supe_username"), (Integer) toSpace.get("uid"), "", "ignore",
                            0);
                }
                Map insertData = new HashMap();
                insertData.put("uid", space.get("uid"));
                insertData.put("buid", toSpace.get("uid"));
                insertData.put("dateline", sGlobal.get("timestamp"));
                dataBaseService.insertTable("blacklist", insertData, false, true);
                return showMessage(request, response, "do_success",
                        "space.jsp?do=friend&view=blacklist&start=" + request.getParameter("start"), 0);
            }
        } else if ("rand".equals(op)) {
            Object[] randUids = null;
            if ((Integer) space.get("friendnum") < 5) {
                List<Map<String, Object>> sessionList = dataBaseService.executeQuery(
                        "SELECT uid FROM " + JavaCenterHome.getTableName("session") + " LIMIT 0,100");
                List onlineList = new ArrayList(sessionList.size());
                for (Map<String, Object> value : sessionList) {
                    if (!value.get("uid").equals(space.get("uid"))) {
                        onlineList.add(value.get("uid"));
                    }
                }
                randUids = (Object[]) Common
                        .sarrayRand(arrayMerge(onlineList.toArray(), (String[]) space.get("friends")), 1);
            } else {
                randUids = (Object[]) Common.sarrayRand(space.get("friends"), 1);
            }
            return showMessage(request, response, "do_success",
                    "space.jsp?uid=" + (randUids == null ? "" : randUids[randUids.length - 1]), 0);
        } else if ("getcfriend".equals(op)) {
            String[] fuids = Common.empty(request.getParameter("fuid")) ? null
                    : request.getParameter("fuid").split(",");
            Map<Integer, Integer> newfUids = new HashMap<Integer, Integer>(fuids == null ? 0 : fuids.length);
            if (fuids != null) {
                for (String value : fuids) {
                    int fuid = Common.intval(value);
                    if (fuid != 0) {
                        newfUids.put(fuid, fuid);
                    }
                }
            }
            if (!newfUids.isEmpty()) {
                List<Map<String, Object>> list = dataBaseService.executeQuery(
                        "SELECT uid,username,name,namestatus FROM " + JavaCenterHome.getTableName("space")
                                + " WHERE uid IN (" + Common.sImplode(newfUids) + ") LIMIT 0,15");
                for (Map<String, Object> value : list) {
                    Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
                            (String) value.get("username"), (String) value.get("name"),
                            (Integer) value.get("namestatus"));
                }
                request.setAttribute("list", list);
                Common.realname_get(sGlobal, sConfig, sNames, space);
            }
        } else if ("search".equals(op)) {
            Map<Integer, Map<String, Object>> fields = Common.getCacheDate(request, response,
                    "/data/cache/cache_profilefield.jsp", "globalProfilefield");
            if (!Common.empty(request.getParameter("searchsubmit"))
                    || !Common.empty(request.getParameter("searchmode"))) {
                Map<String, String[]> paramMap = request.getParameterMap();
                paramMap.put("searchsubmit", new String[] { 1 + "" });
                paramMap.put("searchmode", new String[] { 1 + "" });
                List<String> whereArr = new ArrayList<String>();
                Map<String, String> fromArr = new HashMap<String, String>();
                String fSQL = "";
                fromArr.put("space", JavaCenterHome.getTableName("space") + " s");
                String searchKey = request.getParameter("searchkey");
                if (!Common.empty(Common.stripSearchKey(searchKey))) {
                    whereArr.add("(s.name='" + searchKey + "' OR s.username='" + searchKey + "')");
                } else {
                    for (String value : new String[] { "uid", "username", "name", "videostatus", "avatar" }) {
                        if (!Common.empty(request.getParameter(value))) {
                            whereArr.add("s." + value + "='" + request.getParameter(value) + "'");
                        }
                    }
                }
                String spaceField = null;
                for (String value : new String[] { "sex", "qq", "msn", "birthyear", "birthmonth", "birthday",
                        "blood", "marry", "birthprovince", "birthcity", "resideprovince", "residecity" }) {
                    if (!Common.empty(request.getParameter(value))) {
                        fromArr.put("spacefield", JavaCenterHome.getTableName("spacefield") + " sf");
                        spaceField = "sf.uid=s.uid";
                        whereArr.add("sf." + value + "='" + request.getParameter(value) + "'");
                        fSQL += ", sf." + value;
                    }
                }
                int startAge, endAge;
                endAge = startAge = 0;
                if (!Common.empty(request.getParameter("endage"))) {
                    startAge = Integer.valueOf(Common.sgmdate(request, "yyyy", 0))
                            - Common.intval(request.getParameter("endage"));
                }
                if (!Common.empty(request.getParameter("startage"))) {
                    endAge = Integer.valueOf(Common.sgmdate(request, "yyyy", 0))
                            - Common.intval(request.getParameter("startage"));
                }
                if (startAge != 0 || endAge != 0) {
                    fromArr.put("spacefield", JavaCenterHome.getTableName("spacefield") + " sf");
                    spaceField = "sf.uid=s.uid";
                }
                if (startAge != 0 && endAge != 0 && endAge > startAge) {
                    whereArr.add("(sf.birthyear>=" + startAge + " AND sf.birthyear<=" + endAge + ")");
                } else if (startAge != 0 && endAge == 0) {
                    whereArr.add("sf.birthyear>=" + startAge);
                } else if (startAge == 0 && endAge != 0) {
                    whereArr.add("sf.birthyear<=" + endAge);
                }
                boolean haveField = false;
                for (Entry<Integer, Map<String, Object>> e : fields.entrySet()) {
                    if (!Common.empty(e.getValue().get("allowsearch"))) {
                        String field = Common.stripSearchKey(request.getParameter("field_" + e.getKey()));
                        if (!Common.empty(field)) {
                            haveField = true;
                            whereArr.add("sf.field_" + e.getKey() + " LIKE '%" + field + "%'");
                        }
                    }
                }
                if (haveField) {
                    fromArr.put("spacefield", JavaCenterHome.getTableName("spacefield") + " sf");
                    spaceField = "sf.uid=s.uid";
                }
                String type = request.getParameter("type");
                String spaceInfo = null;
                if ("edu".equals(type) || "work".equals(type)) {
                    for (String value : new String[] { "type", "title", "subtitle", "startyear" }) {
                        if (!Common.empty(request.getParameter(value))) {
                            fromArr.put("spaceinfo", JavaCenterHome.getTableName("spaceinfo") + " si");
                            spaceInfo = "si.uid=s.uid";
                            whereArr.add("si." + value + "='" + request.getParameter(value) + "'");
                        }
                    }
                }
                if (!whereArr.isEmpty()) {
                    List<Map<String, Object>> searchList = dataBaseService
                            .executeQuery("SELECT s.* " + fSQL + " FROM " + Common.implode(fromArr, ",")
                                    + " WHERE " + Common.implode(whereArr, " AND ")
                                    + (spaceField == null ? "" : " AND " + spaceField)
                                    + (spaceInfo == null ? "" : " AND " + spaceInfo) + " LIMIT 0,500");
                    Set<Map<String, Object>> list = new LinkedHashSet<Map<String, Object>>(searchList.size());
                    for (Map<String, Object> value : searchList) {
                        Common.realname_set(sGlobal, sConfig, sNames, (Integer) value.get("uid"),
                                (String) value.get("username"), (String) value.get("name"),
                                (Integer) value.get("namestatus"));
                        value.put("isfriend",
                                (value.get("uid").equals(space.get("uid"))
                                        || (Common.in_array((String[]) space.get("friends"), value.get("uid"))))
                                                ? true
                                                : false);
                        value.put("gColor", Common.getColor(request, response, (Integer) value.get("groupid")));
                        value.put("gIcon", Common.getIcon(request, response, (Integer) value.get("groupid")));
                        list.add(value);
                    }
                    request.setAttribute("list", list);
                }
                Common.realname_get(sGlobal, sConfig, sNames, space);
            } else {
                StringBuffer yearHTML = new StringBuffer();
                int nowy = Integer.valueOf(Common.sgmdate(request, "yyyy", 0));
                for (int i = 0; i < 50; i++) {
                    int they = nowy - i;
                    yearHTML.append("<option value=\"" + they + "\">" + they + "</option>");
                }
                request.setAttribute("yearhtml", yearHTML);
                Map sexArr = new HashMap();
                sexArr.put(space.get("sex").toString(), " checked");
                request.setAttribute("sexarr", sexArr);
                String all = request.getParameter("all");
                StringBuffer birthYearHTML = new StringBuffer();
                for (int i = 0; i < 100; i++) {
                    int they = nowy - i;
                    String selectStr = "";
                    if (Common.empty(all)) {
                        selectStr = they == (Integer) space.get("birthyear") ? " selected" : "";
                    }
                    birthYearHTML
                            .append("<option value=\"" + they + "\"" + selectStr + ">" + they + "</option>");
                }
                request.setAttribute("birthyearhtml", birthYearHTML.toString());
                String birthMonthHTML = "";
                for (int i = 1; i < 13; i++) {
                    String selectStr = "";
                    if (Common.empty(all)) {
                        selectStr = i == (Integer) space.get("birthmonth") ? " selected" : "";
                    }
                    birthMonthHTML += "<option value=\"" + i + "\"" + selectStr + ">" + i + "</option>";
                }
                request.setAttribute("birthmonthhtml", birthMonthHTML.toString());
                StringBuffer birthdayHTML = new StringBuffer();
                for (int i = 1; i < 29; i++) {
                    String selectStr = "";
                    if (Common.empty(all)) {
                        selectStr = i == (Integer) space.get("birthday") ? " selected" : "";
                    }
                    birthdayHTML.append("<option value=\"" + i + "\"" + selectStr + ">" + i + "</option>");
                }
                request.setAttribute("birthdayhtml", birthdayHTML.toString());
                String bloodHTML = "";
                for (String value : new String[] { "A", "B", "O", "AB" }) {
                    String selectStr = "";
                    if (Common.empty(all)) {
                        selectStr = value.equals(space.get("blood")) ? " selected" : "";
                    }
                    bloodHTML += "<option value=\"" + value + "\"" + selectStr + ">" + value + "</option>";
                }
                request.setAttribute("bloodhtml", bloodHTML.toString());
                Map marryArr = new HashMap();
                marryArr.put(space.get("marry").toString(), " selected");
                request.setAttribute("marryarr", marryArr);
                List<Integer> removeKeys = new ArrayList<Integer>(fields.size());
                for (Entry<Integer, Map<String, Object>> e : fields.entrySet()) {
                    Map<String, Object> fValue = e.getValue();
                    if (!Common.empty(fValue.get("allowsearch"))) {
                        if ("text".equals(fValue.get("formtype"))) {
                            fValue.put("html", "<input type=\"text\" name=\"field_" + e.getKey()
                                    + "\" value=\"\" class=\"t_input\">");
                        } else {
                            StringBuffer HTML = new StringBuffer();
                            HTML.append("<select name=\"field_" + e.getKey()
                                    + "\"><option value=\"\">---</option>");
                            String[] optionArr = fValue.get("choice").toString().split("\n");
                            for (String ov : optionArr) {
                                ov = ov.trim();
                                if (!"".equals(ov)) {
                                    HTML.append("<option value=\"" + ov + "\">" + ov + "</option>");
                                }
                            }
                            HTML.append("</select>");
                            fValue.put("html", HTML.toString());
                        }
                    } else {
                        removeKeys.add(e.getKey());
                    }
                }
                for (Integer removeKey : removeKeys) {
                    fields.remove(removeKey);
                }
                request.setAttribute("fields", fields);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        return showMessage(request, response, e.getMessage());
    }
    request.setAttribute("op", op);
    request.setAttribute("uid", uid);
    return include(request, response, sConfig, sGlobal, "cp_friend.jsp");
}

From source file:net.sourceforge.openutils.mgnlcriteria.tests.CriteriaTestUtils.java

public static Collection<Node> collectCollectionFromResult(AdvancedResult result) {

    ResultIterator<? extends Node> items = result.getItems();
    ArrayList<Node> list = new ArrayList<Node>();

    CollectionUtils.addAll(list, items);
    return list;/*from w w w .j a  v  a  2 s. co  m*/
}

From source file:nl.strohalm.cyclos.dao.accounts.AccountDAOImpl.java

@Override
public Iterator<MemberTransactionDetailsReportData> membersTransactionsDetailsReport(
        final MembersTransactionsReportParameters params) {
    final StringBuilder sql = new StringBuilder();
    final Map<String, Object> parameters = new HashMap<String, Object>();

    // Find the transfer types ids
    Set<Long> ttIds = null;
    if (CollectionUtils.isNotEmpty(params.getPaymentFilters())) {
        ttIds = new HashSet<Long>();
        for (PaymentFilter pf : params.getPaymentFilters()) {
            pf = getFetchDao().fetch(pf, PaymentFilter.Relationships.TRANSFER_TYPES);
            final Long[] ids = EntityHelper.toIds(pf.getTransferTypes());
            CollectionUtils.addAll(ttIds, ids);
        }//from w w  w .  j a v a  2  s. c om
    }

    // Get the member group ids
    Set<Long> groupIds = null;
    if (CollectionUtils.isNotEmpty(params.getMemberGroups())) {
        groupIds = new HashSet<Long>();
        CollectionUtils.addAll(groupIds, EntityHelper.toIds(params.getMemberGroups()));
    }

    // Get the period
    final Period period = params.getPeriod();
    final QueryParameter beginParameter = HibernateHelper.getBeginParameter(period);
    final QueryParameter endParameter = HibernateHelper.getEndParameter(period);

    // Set the parameters
    final boolean useTT = CollectionUtils.isNotEmpty(ttIds);
    if (useTT) {
        parameters.put("ttIds", ttIds);
    }
    if (beginParameter != null) {
        parameters.put("beginDate", beginParameter.getValue());
    }
    if (endParameter != null) {
        parameters.put("endDate", endParameter.getValue());
    }
    parameters.put("processed", Payment.Status.PROCESSED.getValue());

    // Build the sql string
    sql.append(
            " select u.username, m.name, bu.username broker_username, b.name broker_name, h.account_type_name, h.date, h.amount, h.description, h.related_username, h.related_name, h.transfer_type_name, h.transaction_number");
    sql.append(
            " from members m inner join users u on m.id = u.id left join members b on m.member_broker_id = b.id left join users bu on b.id = bu.id,");
    sql.append(" (");
    if (params.isCredits()) {
        appendMembersTransactionsDetailsReportSqlPart(sql, useTT, beginParameter, endParameter, true, true);
        sql.append(" union");
        appendMembersTransactionsDetailsReportSqlPart(sql, useTT, beginParameter, endParameter, true, false);
        if (params.isDebits()) {
            sql.append(" union");
        }
    }
    if (params.isDebits()) {
        appendMembersTransactionsDetailsReportSqlPart(sql, useTT, beginParameter, endParameter, false, true);
        sql.append(" union");
        appendMembersTransactionsDetailsReportSqlPart(sql, useTT, beginParameter, endParameter, false, false);
    }
    sql.append(" ) h");
    sql.append(" where m.id = h.member_id");
    if (groupIds != null) {
        parameters.put("groupIds", groupIds);
        sql.append(" and m.group_id in (:groupIds)");
    }
    sql.append(" order by m.name, u.username, h.account_type_name, h.date desc, h.transfer_id desc");

    // Prepare the query
    final SQLQuery query = getSession().createSQLQuery(sql.toString());
    final Map<String, Type> columns = new LinkedHashMap<String, Type>();
    columns.put("username", StandardBasicTypes.STRING);
    columns.put("name", StandardBasicTypes.STRING);
    columns.put("broker_username", StandardBasicTypes.STRING);
    columns.put("broker_name", StandardBasicTypes.STRING);
    columns.put("account_type_name", StandardBasicTypes.STRING);
    columns.put("date", StandardBasicTypes.CALENDAR);
    columns.put("amount", StandardBasicTypes.BIG_DECIMAL);
    columns.put("description", StandardBasicTypes.STRING);
    columns.put("related_username", StandardBasicTypes.STRING);
    columns.put("related_name", StandardBasicTypes.STRING);
    columns.put("transfer_type_name", StandardBasicTypes.STRING);
    columns.put("transaction_number", StandardBasicTypes.STRING);
    for (final Map.Entry<String, Type> entry : columns.entrySet()) {
        query.addScalar(entry.getKey(), entry.getValue());
    }
    getHibernateQueryHandler().setQueryParameters(query, parameters);

    // Create a transformer, which will read rows as Object[] and transform them to MemberTransactionDetailsReportData
    final Transformer<Object[], MemberTransactionDetailsReportData> transformer = new Transformer<Object[], MemberTransactionDetailsReportData>() {
        @Override
        public MemberTransactionDetailsReportData transform(final Object[] input) {
            final MemberTransactionDetailsReportData data = new MemberTransactionDetailsReportData();
            int i = 0;
            for (final Map.Entry<String, Type> entry : columns.entrySet()) {
                final String columnName = entry.getKey();
                // Column names are transfer_type_name, property is transferTypeName
                String propertyName = WordUtils.capitalize(columnName, COLUMN_DELIMITERS);
                propertyName = Character.toLowerCase(propertyName.charAt(0)) + propertyName.substring(1);
                propertyName = StringUtils.replace(propertyName, "_", "");
                PropertyHelper.set(data, propertyName, input[i]);
                i++;
            }
            return data;
        }
    };

    return new ScrollableResultsIterator<MemberTransactionDetailsReportData>(query, transformer);
}

From source file:nl.strohalm.cyclos.dao.accounts.fee.account.MemberAccountFeeLogDAOImpl.java

@Override
public int prepareCharge(final AccountFeeLog log) {
    final Long[] groupIds = EntityHelper.toIds(log.getAccountFee().getGroups());
    if (ArrayUtils.isEmpty(groupIds)) {
        // No groups to charge
        return 0;
    }//from  www.  j a v  a  2 s . co  m
    final MutableInt result = new MutableInt();
    runNative(new JDBCCallback() {
        @Override
        public void execute(final JDBCWrapper jdbc) throws SQLException {
            String[] placeHolders = new String[groupIds.length];
            Arrays.fill(placeHolders, "?");

            StringBuilder sql = new StringBuilder();
            sql.append(" insert into members_pending_charge");
            sql.append(" (account_fee_log_id, member_id)");
            sql.append(" select ?, id");
            sql.append(" from members m");
            sql.append(" where m.subclass = ?");
            sql.append(" and m.group_id in (").append(StringUtils.join(placeHolders, ",")).append(')');

            List<Object> args = new ArrayList<Object>(groupIds.length + 2);
            args.add(log.getId());
            args.add("M");
            CollectionUtils.addAll(args, groupIds);
            int totalMembers = jdbc.execute(sql.toString(), args.toArray());
            result.setValue(totalMembers);
        }
    });
    return result.intValue();
}

From source file:nl.strohalm.cyclos.dao.members.ElementDAOImpl.java

@Override
public void removeChannelsFromMembers(final MemberGroup group, final Collection<Channel> channels) {
    if (CollectionUtils.isNotEmpty(channels)) {
        final Map<String, Object> parameters = new HashMap<String, Object>();
        final Set<Long> channelIds = new HashSet<Long>();
        CollectionUtils.addAll(channelIds, EntityHelper.toIds(channels));
        parameters.put("channelIds", channelIds);
        parameters.put("groupId", group.getId());
        final String statement = " delete from members_channels " + " where channel_id in (:channelIds) "
                + " and member_id in (select id from members where group_id = :groupId) ";
        final SQLQuery query = getSession().createSQLQuery(statement);
        getHibernateQueryHandler().setQueryParameters(query, parameters);
        query.executeUpdate();//from   w  w  w  . jav a  2s . c  o  m
    }

}

From source file:nl.strohalm.cyclos.dao.members.ReferenceDAOImpl.java

@Override
public List<PaymentAwaitingFeedbackDTO> searchPaymentsAwaitingFeedback(
        final PaymentsAwaitingFeedbackQuery query) {

    final ResultType resultType = query.getResultType();
    final PageParameters pageParameters = query.getPageParameters();
    final boolean countOnly = resultType == ResultType.PAGE && pageParameters != null
            && pageParameters.getMaxResults() == 0;

    // There are 2 tables which contains payments that can have feedback: transfers and scheduled payments
    // As we need an union, we need a native SQL

    final Member member = query.getMember();
    Boolean expired = query.getExpired();

    final StringBuilder sql = new StringBuilder();
    sql.append(" select ");
    if (countOnly) {
        sql.append(" count(*) as row_count");
    } else {//from  w  ww.  jav a  2s  .c  o m
        sql.append(" * ");
    }
    sql.append(" from ( ");
    {
        sql.append(
                " select t.id, t.type_id as transferTypeId, false as scheduled, t.date, t.amount, tm.id as memberId, tm.name as memberName, ta.owner_name as memberUsername");
        sql.append(
                " from transfers t inner join transfer_types tt on t.type_id = tt.id inner join accounts ta on t.to_account_id = ta.id inner join members tm on ta.member_id = tm.id");
        if (member != null) {
            sql.append(" inner join accounts a on t.from_account_id = a.id");
        }
        sql.append(" left join refs tf on tf.transfer_id = t.id");
        sql.append(" where tt.requires_feedback = true");
        sql.append(" and t.date >= tt.feedback_enabled_since");
        sql.append(" and t.parent_id is null");
        sql.append(" and t.chargeback_of_id is null");
        sql.append(" and t.scheduled_payment_id is null");
        sql.append(" and t.process_date is not null");
        if (expired != null) {
            sql.append(" and t.feedback_deadline " + (expired ? "<" : ">=") + " now()");
        }
        sql.append(" and tf.id is null");
        if (member != null) {
            sql.append(" and a.member_id = :memberId");
        }

        sql.append(" union ");

        sql.append(" select sp.id, sp.type_id, true, sp.date, sp.amount, tm.id, tm.name, ta.owner_name");
        sql.append(
                " from scheduled_payments sp inner join transfer_types tt on sp.type_id = tt.id inner join accounts ta on sp.to_account_id = ta.id inner join members tm on ta.member_id = tm.id");
        if (member != null) {
            sql.append(" inner join accounts a on sp.from_account_id = a.id");
        }
        sql.append(" left join refs tf on tf.scheduled_payment_id = sp.id");
        sql.append(" where tt.requires_feedback = true");
        if (expired != null) {
            sql.append(" and sp.feedback_deadline " + (expired ? "<" : ">=") + " now()");
        }
        sql.append(" and sp.date >= tt.feedback_enabled_since");
        sql.append(" and tf.id is null");
        if (member != null) {
            sql.append(" and a.member_id = :memberId");
        }
    }
    sql.append(") as awaiting ");
    if (!countOnly) {
        sql.append("order by date");
    }

    SQLQuery sqlQuery = getSession().createSQLQuery(sql.toString());
    if (member != null) {
        sqlQuery.setLong("memberId", member.getId());
    }
    if (countOnly) {
        // Handle the special case for count only
        sqlQuery.addScalar("row_count", StandardBasicTypes.INTEGER);
        int count = ((Number) sqlQuery.uniqueResult()).intValue();
        return new PageImpl<PaymentAwaitingFeedbackDTO>(pageParameters, count,
                Collections.<PaymentAwaitingFeedbackDTO>emptyList());
    } else {
        // Execute the search
        sqlQuery.addScalar("id", StandardBasicTypes.LONG);
        sqlQuery.addScalar("transferTypeId", StandardBasicTypes.LONG);
        sqlQuery.addScalar("scheduled", StandardBasicTypes.BOOLEAN);
        sqlQuery.addScalar("date", StandardBasicTypes.CALENDAR);
        sqlQuery.addScalar("amount", StandardBasicTypes.BIG_DECIMAL);
        sqlQuery.addScalar("memberId", StandardBasicTypes.LONG);
        sqlQuery.addScalar("memberName", StandardBasicTypes.STRING);
        sqlQuery.addScalar("memberUsername", StandardBasicTypes.STRING);
        getHibernateQueryHandler().applyPageParameters(pageParameters, sqlQuery);

        // We'll always use an iterator, even if it is for later adding it to a list
        Iterator<PaymentAwaitingFeedbackDTO> iterator = new ScrollableResultsIterator<PaymentAwaitingFeedbackDTO>(
                sqlQuery, new Transformer<Object[], PaymentAwaitingFeedbackDTO>() {
                    @Override
                    public PaymentAwaitingFeedbackDTO transform(final Object[] input) {
                        PaymentAwaitingFeedbackDTO dto = new PaymentAwaitingFeedbackDTO();
                        dto.setId((Long) input[0]);
                        dto.setTransferTypeId((Long) input[1]);
                        dto.setScheduled(Boolean.TRUE.equals(input[2]));
                        dto.setDate((Calendar) input[3]);
                        dto.setAmount((BigDecimal) input[4]);
                        dto.setMemberId((Long) input[5]);
                        dto.setMemberName((String) input[6]);
                        dto.setMemberUsername((String) input[7]);

                        TransferType transferType = (TransferType) getSession().load(TransferType.class,
                                dto.getTransferTypeId());
                        dto.setCurrency(getFetchDao().fetch(transferType.getCurrency()));

                        return dto;
                    }
                });
        if (resultType == ResultType.ITERATOR) {
            return new IteratorListImpl<PaymentAwaitingFeedbackDTO>(iterator);
        } else {
            List<PaymentAwaitingFeedbackDTO> list = new ArrayList<PaymentAwaitingFeedbackDTO>();
            CollectionUtils.addAll(list, iterator);
            DataIteratorHelper.close(iterator);

            if (resultType == ResultType.PAGE) {
                // For page, we need another search for the total count
                query.setPageForCount();
                int totalCount = PageHelper.getTotalCount(searchPaymentsAwaitingFeedback(query));

                return new PageImpl<PaymentAwaitingFeedbackDTO>(pageParameters, totalCount, list);
            } else {
                return list;
            }
        }
    }
}

From source file:nl.strohalm.cyclos.services.access.AbstractPermissionCheck.java

private List<Permission> join(final Permission[]... permissions) {
    List<Permission> result = new ArrayList<Permission>();
    boolean hasNonNull = false;
    for (Permission[] current : permissions) {
        if (current != null) {
            hasNonNull = true;/*w  ww . j ava  2s  .  c o m*/
            CollectionUtils.addAll(result, current);
        }
    }
    if (!hasNonNull) {
        return null;
    }
    return result;
}

From source file:nl.strohalm.cyclos.services.transfertypes.TransferTypeServiceImpl.java

@Override
public Collection<TransferType> getAllowedTTs(Element element) {
    element = fetchService.fetch(element,
            RelationshipHelper.nested(Element.Relationships.GROUP, Group.Relationships.TRANSFER_TYPES),
            RelationshipHelper.nested(Element.Relationships.GROUP,
                    AdminGroup.Relationships.TRANSFER_TYPES_AS_MEMBER),
            RelationshipHelper.nested(Element.Relationships.GROUP,
                    Group.Relationships.CONVERSION_SIMULATION_TTS));
    Group group = element.getGroup();

    Set<TransferType> allowed = new HashSet<TransferType>();
    CollectionUtils.addAll(allowed, group.getConversionSimulationTTs().iterator());

    // Add the TTs with permission as member
    if (group instanceof AdminGroup) {
        CollectionUtils.addAll(allowed, ((AdminGroup) group).getTransferTypesAsMember().iterator());
    } else if (group instanceof BrokerGroup) {
        CollectionUtils.addAll(allowed, ((BrokerGroup) group).getTransferTypesAsMember().iterator());
    }/*from   w w  w.  j ava2 s  . c o m*/

    // Add the TTs with permission
    if (group instanceof OperatorGroup) { // an operator doesn't have its own TT it inherits from member
        OperatorGroup operatorGroup = (OperatorGroup) group;
        group = fetchService.fetch(operatorGroup.getMember().getGroup(), Group.Relationships.TRANSFER_TYPES);
    }
    CollectionUtils.addAll(allowed, group.getTransferTypes().iterator());

    // All TTs used to pay account fees should be accessible
    if (group instanceof MemberGroup) {
        MemberGroup memberGroup = (MemberGroup) group;
        Collection<AccountFee> accountFees = memberGroup.getAccountFees();
        for (AccountFee accountFee : accountFees) {
            allowed.add(accountFee.getTransferType());
        }
    }

    return allowed;
}

From source file:nl.strohalm.cyclos.struts.access.policies.utils.ElementActionPolicy.java

private ElementActionPolicy(final Nature... natures) {
    this.natures = new HashSet<Nature>();
    CollectionUtils.addAll(this.natures, natures);
}