package net.miz_hi.smileessence.model.status.user; import net.miz_hi.smileessence.Client; import net.miz_hi.smileessence.model.status.IStatusModel; import net.miz_hi.smileessence.preference.EnumPreferenceKey; import net.miz_hi.smileessence.status.EnumNameStyle; import net.miz_hi.smileessence.task.impl.GetUserTask; import net.miz_hi.smileessence.util.StringUtils; import twitter4j.User; import java.util.Date; import java.util.concurrent.Future; public class UserModel implements IStatusModel { public long userId; public String screenName; public String name; public String homePageUrl; public String location; public String description; public String iconUrl; public String biggerIconUrl; public String headerImageUrl; public int statusCount; public int friendCount; public int followerCount; public int favoriteCount; public Date createdAt; public boolean isProtected; private UserModel() { } public UserModel(User user) { userId = user.getId(); updateData(user); } public UserModel updateData(User user) { screenName = user.getScreenName(); name = user.getName(); homePageUrl = user.getURLEntity().getExpandedURL(); location = user.getLocation(); description = StringUtils.replaceUrlEntity(user.getDescription(), user.getDescriptionURLEntities(), true); iconUrl = user.getProfileImageURL(); biggerIconUrl = user.getBiggerProfileImageURL(); headerImageUrl = user.getProfileBannerURL(); statusCount = user.getStatusesCount(); friendCount = user.getFriendsCount(); followerCount = user.getFollowersCount(); favoriteCount = user.getFavouritesCount(); createdAt = user.getCreatedAt(); isProtected = user.isProtected(); // ImageCache.preCache(iconUrl); return this; } public User getRawUser() { Future<User> resp = new GetUserTask(userId).callAsync(); try { return resp.get(); } catch (Exception e) { e.printStackTrace(); return null; } } public boolean isMe() { return userId == Client.getMainAccount().getUserId(); } public static UserModel getNullUserModel() { UserModel user = new UserModel(); user.screenName = ""; user.name = ""; user.homePageUrl = ""; user.location = ""; user.description = ""; user.iconUrl = ""; user.headerImageUrl = ""; user.statusCount = 0; user.friendCount = 0; user.followerCount = 0; user.favoriteCount = 0; user.createdAt = new Date(); user.isProtected = false; return user; } @Override public UserModel getUser() { return this; } @Override public String getTextTop() { StringBuilder builder = new StringBuilder(); String style = Client.getPreferenceValue(EnumPreferenceKey.NAME_STYLE); if (style.equals(EnumNameStyle.S_N.get()) || style.equals(EnumNameStyle.S.get())) { builder.append(screenName); } else if (style.equals(EnumNameStyle.N_S.get()) || style.equals(EnumNameStyle.N.get())) { builder.append(name); } if (style.equals(EnumNameStyle.S_N.get())) { builder.append(" / "); builder.append(name); } else if (style.equals(EnumNameStyle.N_S.get())) { builder.append(" / "); builder.append(screenName); } return builder.toString(); } @Override public String getTextContent() { if (description.length() > 100) { return description.substring(0, 100) + "..."; } else { return description; } } @Override public String getTextBottom() { return location; } }