webim.service.WebimModel.java Source code

Java tutorial

Introduction

Here is the source code for webim.service.WebimModel.java

Source

/*
 * WebimModel.java
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package webim.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Service;

import webim.dao.WebimBuddyDao;
import webim.dao.WebimHistoryDao;
import webim.dao.WebimRoomDao;
import webim.dao.WebimSettingDao;
import webim.dao.WebimVisitorDao;
import webim.model.WebimEndpoint;
import webim.model.WebimHistory;
import webim.model.WebimMember;
import webim.model.WebimMessage;
import webim.model.WebimRoom;
import webim.model.WebimVisitor;

/**
 * WebIM??
 * 
 * @author Feng Lee <feng.lee at nextalk.im>
 * 
 * @since 5.4
 */
@Service("webimModel")
public class WebimModel {

    @Resource(name = "webimHistoryDao")
    private WebimHistoryDao historyDao;

    @Resource(name = "webimSettingDao")
    private WebimSettingDao settingDao;

    @Resource(name = "webimRoomDao")
    private WebimRoomDao roomDao;

    @Resource(name = "webimVisitorDao")
    private WebimVisitorDao visitorDao;

    @Resource(name = "webimBuddyDao")
    private WebimBuddyDao buddyDao;

    /**
     * ?with?.
     * 
     * @param uid
     *            ?id
     * @param with
     *            id????long
     * @param type
     *            chat | grpchat
     *            
     * @param limit
     *            ?
     * @return ?
     */
    public List<WebimHistory> histories(String uid, String with, String type, int limit) {
        return historyDao.getHistories(uid, with, type, limit);

    }

    /**
     * ??
     * 
     * @param uid uid
     * @return ?
     */
    public List<WebimHistory> offlineHistories(String uid, int limit) {
        return historyDao.getOfflineHistories(uid, limit);
    }

    /**
     * ????
     * 
     * @param uid id
     * @param msg ?
     */
    public void insertHistory(String uid, WebimMessage msg) {
        WebimHistory history = new WebimHistory();
        history.setFrom(uid);
        history.setTo(msg.getTo());
        history.setType(msg.getType());
        history.setNick(msg.getNick());
        history.setBody(msg.getBody());
        history.setStyle(msg.getStyle());
        history.setSend(msg.isOffline() ? 0 : 1);
        history.setTimestamp(msg.getTimestamp());
        insertHistory(history);
    }

    /**
     * ????WebimHistory
     * 
     * @param history
     *            ?
     */
    public void insertHistory(WebimHistory history) {
        historyDao.insertHistory(history);
    }

    /**
     * with?
     * 
     * @param uid
     *            uid
     * @param with
     *            id,????long
     */
    public void clearHistories(String uid, String with) {
        historyDao.clearHistories(uid, with);
    }

    /**
     * ????
     * 
     * @param uid
     *            uid
     */
    public void offlineHistoriesReaded(String uid) {
        historyDao.offlineHistoriesReaded(uid);
    }

    /**
     * ???
     * 
     * @param uid
     *            uid
     * @return ??JSON?
     */
    public String getSetting(String uid) {
        return settingDao.get(uid);
    }

    /**
     * ??
     * 
     * @param uid
     *            uid
     * @param data
     *            ??JSON?
     */
    public void saveSetting(String uid, String data) {
        settingDao.set(uid, data);
    }

    /**
     * ?roomId?
     * 
     * @param roomId
     * @return 
     */
    public WebimRoom findRoom(String roomId) {
        return roomDao.getRoom(roomId);
    }

    /**
     * ??
     * 
     * @param uid id
     * 
     * @return 
     */
    public List<WebimRoom> rooms(String uid) {
        return roomDao.getRoomsOfUser(uid);
    }

    /**
     * ?id?
     * 
     * @param uid UID
     * @param ids Id
     * 
     * @return 
     */
    public List<WebimRoom> roomsByIds(String uid, String[] ids) {
        return roomDao.getRoomsByIds(uid, ids);
    }

    /**
     * ??
     * 
     * @param room ID
     * @return ?
     */
    public List<WebimMember> members(String roomId) {
        return roomDao.getMembersOfRoom(roomId);
    }

    /**
     * 
     * 
     * @param owner
     * @param name
     * @param nick
     */
    public WebimRoom createRoom(String owner, String name, String nick) {
        WebimRoom room = new WebimRoom(name, nick);
        room.setOwner(owner);
        roomDao.insertRoom(room);
        return room;
    }

    /**
     * ?
     * 
     * @param roomId name
     * @param members ?
     */
    public void inviteRoom(String roomId, List<WebimEndpoint> members) {
        roomDao.inviteMembersToRoom(roomId, members);
        //TODO: invite members to room
    }

    /**
     * 
     * 
     * @param room name
     * @param uid
     * @param nick
     */
    public void joinRoom(String roomId, String uid, String nick) {
        roomDao.joinRoom(roomId, new WebimMember(uid, nick));
    }

    /**
     * 
     * 
     * @param roomId
     * @param uid
     */
    public void leaveRoom(String roomId, String uid) {
        roomDao.leaveRoom(roomId, uid);
    }

    /**
     * ?
     * 
     * @param room
     * @param uid
     */
    public void blockRoom(String roomId, String uid) {
        roomDao.blockRoom(roomId, uid);
    }

    /**
     * ?
     * 
     * @param roomId
     * @param uid
     */
    public void unblockRoom(String roomId, String uid) {
        roomDao.unblockRoom(roomId, uid);
    }

    /**
     * ??
     * 
     * @param room
     * @param uid
     * 
     * @return is blocked
     */
    public boolean isRoomBlocked(String roomId, String uid) {
        return roomDao.isRoomBlocked(roomId, uid);
    }

    /**
     * ?id?
     * 
     * @param vids
     * @return
     */
    public List<WebimVisitor> visitors(String[] vids) {
        if (vids.length == 0)
            return new ArrayList<WebimVisitor>();
        String[] ids = new String[vids.length];
        for (int i = 0; i < vids.length; i++) {
            ids[i] = vids[i].substring("vid:".length());
        }
        return visitorDao.findAll(vids);
    }

    /**
     * ?vidvid?name
     * 
     * @param vid
     * @return
     */
    public WebimVisitor findVisitor(String vid) {
        return visitorDao.find(vid);
    }

    /**
     * 
     * @param vid
     * @param request
     * @return
     */
    public WebimVisitor createVisitor(String vid, HttpServletRequest request) {
        Map<String, String> data = new HashMap<String, String>();
        data.put("name", vid);
        data.put("ipaddr", request.getRemoteAddr());
        data.put("referer", request.getHeader("referrer"));
        return visitorDao.insert(data);
    }

    public boolean isBuddy(String uid, String with) {
        return buddyDao.isBuddy(uid, with);
    }

    public void addBuddy(String uid, String with) {
        buddyDao.addBuddy(uid, with);
    }

}