⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modelutils.java

📁 lumaQQ的源文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
* LumaQQ - Java QQ Client
*
* Copyright (C) 2004 luma <stubma@163.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package edu.tsinghua.lumaqq.models;

import static edu.tsinghua.lumaqq.resource.Messages.*;

import java.io.File;
import java.io.IOException;

import edu.tsinghua.lumaqq.ecore.EcoreFactory;
import edu.tsinghua.lumaqq.ecore.LoginOption;
import edu.tsinghua.lumaqq.ecore.ProxyType;
import edu.tsinghua.lumaqq.ecore.face.FaceConstant;
import edu.tsinghua.lumaqq.ecore.face.FaceFactory;
import edu.tsinghua.lumaqq.ecore.face.FaceGroup;
import edu.tsinghua.lumaqq.ecore.face.Faces;
import edu.tsinghua.lumaqq.ecore.group.GroupFactory;
import edu.tsinghua.lumaqq.ecore.group.XCluster;
import edu.tsinghua.lumaqq.ecore.group.XGroup;
import edu.tsinghua.lumaqq.ecore.group.XGroups;
import edu.tsinghua.lumaqq.ecore.group.XOrganization;
import edu.tsinghua.lumaqq.ecore.group.XUser;
import edu.tsinghua.lumaqq.ecore.login.LoginFactory;
import edu.tsinghua.lumaqq.ecore.login.Logins;
import edu.tsinghua.lumaqq.ecore.option.GUIOption;
import edu.tsinghua.lumaqq.ecore.option.KeyOption;
import edu.tsinghua.lumaqq.ecore.option.MessageOption;
import edu.tsinghua.lumaqq.ecore.option.OpType;
import edu.tsinghua.lumaqq.ecore.option.OptionFactory;
import edu.tsinghua.lumaqq.ecore.option.Options;
import edu.tsinghua.lumaqq.ecore.option.OtherOption;
import edu.tsinghua.lumaqq.ecore.option.SyncOption;
import edu.tsinghua.lumaqq.eutil.FaceUtil;
import edu.tsinghua.lumaqq.eutil.GroupUtil;
import edu.tsinghua.lumaqq.eutil.LoginUtil;
import edu.tsinghua.lumaqq.eutil.OptionUtil;
import edu.tsinghua.lumaqq.qq.beans.ContactInfo;
import edu.tsinghua.lumaqq.qq.beans.QQFriend;

/**
 * 这个类负责提供一些创建数据的方法,纯粹是为了免得个别的文件行数太多,
 * 所以把这些集中操作底层数据的方法抽出来放在一个工具类里
 * 
 * @author luma
 */
public class ModelUtils {	    
	/**
	 * 从QQFriend类创建一个contact info结构
	 * @param friend QQFriend
	 * @return ContactInfo
	 */
	public static ContactInfo createContact(QQFriend friend) {
		ContactInfo ret = new ContactInfo();
		ret.nick = friend.nick;		
		ret.qq = friend.qqNum;		
		ret.age = friend.age;
		if(friend.isGG())
			ret.gender = gender_gg;
		else
			ret.gender = gender_mm;
		return ret;
	}
	
	/**
	 * 从User创建一个ContactInfo
	 * 
	 * @param u
	 * 		User对象
	 * @return
	 * 		ContactInfo对象
	 */
	public static ContactInfo createContact(User u) {
		ContactInfo ret = new ContactInfo();
		ret.nick = u.nick;	
		ret.qq = u.qq;		
		ret.head = u.headId;
		return ret;
	}

	/**
	 * 从Friend元素创建一个ContactInfo对象
	 * 
	 * @param user 
	 * 		Friend元素对象
	 * @return
	 * 		ContactInfo
	 */
	public static ContactInfo createContact(XUser user) {
		ContactInfo ret = new ContactInfo();
		ret.qq = user.getQq();
		ret.nick = user.getNick();
		ret.head = user.getHeadId();
		return ret;
	}	
	
	/**
	 * 从XML元素中创建Group
	 * 
	 * @param group 
	 * 		XGroup元素对象
	 * @return 
	 * 		Group对象
	 */
	public static Group createGroup(XGroup group) {
		Group ret = new Group();
		ret.name = group.getName();
		return ret;
	}
	
	/**
	 * 从XUser元素创建一个User
	 * 
	 * @param user 
	 * 		XUser 
	 * @return 
	 * 		User
	 */
	public static User createUser(XUser user) {
		User ret = new User();
		ret.qq = user.getQq();
		if(ret.qq == 0)
			return null;
		ret.nick = user.getNick();
		ret.cardName = user.getCardName();
		ret.displayName = ret.nick;
		ret.headId = user.getHeadId();
		ret.windowX = user.getWindowX();
		ret.windowY = user.getWindowY();
		ret.member = user.isMember();
		ret.status = Status.OFFLINE;
		ret.pinned = user.isPinned();
		ret.userFlag = user.getUserFlag();
		ret.organizationId = user.getOrganizationId(); 
		ret.info = createContact(user);
		ret.talkMode = user.isTalkMode();
		ret.lastMessageTime = user.getLastMessageTime();
		ret.signature = user.getSignature();
		ret.level = user.getLevel();
		ret.female = user.isFemale();
		ret.hasCustomHead = user.isHasCustomHead();
		ret.customHeadId = user.getCustomHeadId();
		ret.customHeadTimestamp = user.getCustomHeadTimestamp();
		return ret;
	}	
	
	/**
	 * 从User对象创建一个XUser元素对象
	 * 
	 * @param u
	 * 		User
	 * @return
	 * 		XUser
	 */
	public static XUser createXUser(User u) {
		XUser ret = GroupFactory.eINSTANCE.createXUser();
		ret.setQq(u.qq);
		ret.setNick(u.nick);
		ret.setHeadId(u.headId);
		ret.setWindowX(u.windowX);
		ret.setWindowY(u.windowY);
		ret.setMember(u.member);
		ret.setTalkMode(u.talkMode);
		ret.setOrganizationId(u.organizationId);
		ret.setPinned(u.pinned);
		ret.setCardName(u.cardName);
		ret.setUserFlag(u.userFlag);
		ret.setLastMessageTime(u.lastMessageTime);
		ret.setSignature(u.signature);
		ret.setLevel(u.level);
		ret.setFemale(u.female);
		ret.setHasCustomHead(u.hasCustomHead);
		ret.setCustomHeadId(u.customHeadId);
		ret.setCustomHeadTimestamp(u.customHeadTimestamp);
		return ret;
	}
	
	/**
	 * 创建XOrganization元素对象
	 * 
	 * @param org
	 * @return
	 */
	public static XOrganization createXOrganization(Organization org) {
		XOrganization ret = GroupFactory.eINSTANCE.createXOrganization();
		ret.setId(org.id);
		ret.setName(org.name);
		ret.setPath(org.path);
		return ret;
	}
	
	/**
	 * 创建Organization对象
	 * 
	 * @param org
	 * @return
	 */
	public static Organization createOrganization(XOrganization org) {
		Organization ret = new Organization();
		ret.id = org.getId();
		ret.path = org.getPath();
		ret.name = org.getName();
		return ret;
	}
	
	/**
	 * 从QQFriend类创建一个User
	 * 
	 * @param friend
	 * 		QQFriend对象
	 * @return
	 * 		User
	 */
	public static User createUser(QQFriend friend) {
		User ret = new User();
		ret.headId = friend.head;
		ret.status = Status.OFFLINE;
		ret.qq = friend.qqNum;
		ret.nick = friend.nick;
		ret.displayName = ret.nick;
		ret.member = friend.isMember();
		ret.info = createContact(friend);
		ret.userFlag = friend.userFlag;
		ret.female = !friend.isGG();
		return ret;
	}
	
	/**
	 * 创建群的Model
	 * 
	 * @param cluster
	 * 		XCluster
	 * @return
	 * 		Cluster
	 */
	public static Cluster createCluster(XCluster cluster) {
		Cluster ret = new Cluster();
		ret.clusterId = cluster.getClusterId();
		if(ret.clusterId == -1)
			return null;
		ret.externalId = cluster.getExternalId();
		if(ret.externalId == -1)
			return null;
		ret.parentClusterId = cluster.getParentClusterId();		
		ret.headId = cluster.getHeadId();
		ret.name = cluster.getName();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -