Java tutorial
/* * 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); } }