package chat.user; import chat.server.call.IJSONWriter; import chat.server.call.IJsonProvider; import chat.server.im.DataPool; import frame.object.data.Entity; public class Client implements IJsonProvider { private String id; private String clientId; private int platform; private String code; private String userId; private User user; private Session session; public Client(String clientId) { this.clientId = clientId; } public void load(DataPool dataPool) throws Exception { id = dataPool.getString("clientId"); platform = dataPool.getInteger("platform", 0); try { code = dataPool.getString("code"); } catch (Exception e) { code = "oneLogin"; } } public void load(Entity entity) { id = entity.getString("id"); clientId = entity.getString("id"); platform = entity.getInteger("platform", 0); code = entity.getString("code"); userId = entity.getString("userId"); } public void pushTo(Entity entity) throws Exception { entity.set("id", id); entity.set("clientId", clientId); entity.set("platform", platform); entity.set("code", code); entity.set("userId", userId); } @Override public void writeJSONObject(IJSONWriter writer) { writer.beginObject(); writeJSONData(writer); writer.endObject(); } @Override public void writeJSONData(IJSONWriter writer) { Token token = session.getToken(); writer.write("token", new String(token.getFullValue())); writer.write("userId", user.getId()); writer.write("userName", user.getName()); writer.write("portrait", user.getPortrait()); writer.write("register", user.isStranger()); } public String getId() { return id; } public int getPlatform() { return platform; } public String getCode() { return code; } public User getUser() { return user; } public String getUserName() { return user.getName(); } public String getUserId() { return userId; } public void setUser(User user) { this.user = user; if (user == null) { userId = null; return; } userId = user.getId(); user.addClient(this); } public void setUserId(String userId) { this.userId = userId; } public void createSession() throws Exception { session = SessionStore.getOrCreate(this); } public Session getSession() { return session; } @Override public int hashCode() { if (id == null) { return 0; } return id.hashCode(); } }