package com.github.andlyticsproject.model;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class AppInfo {
private Long id;
private String account;
private String packageName;
private Date lastUpdate;
private String name;
private String iconUrl;
private List<AppStats> history = new ArrayList<AppStats>();
private AppStats latestStats;
private boolean isDraftOnly;
// TODO -- make this an enum? Currently not used
private int publishState;
private boolean ghost;
private boolean skipNotification;
private boolean ratingDetailsExpanded;
private String versionName;
private AdmobStats admobStats;
private String admobAccount;
private String admobSiteId;
private String admobAdUnitId;
private Date lastCommentsUpdate;
private AppDetails details;
private String developerId;
private String developerName;
private RevenueSummary totalRevenueSummary;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public Date getLastUpdate() {
return lastUpdate;
}
public void setLastUpdate(Date lastUpdate) {
this.lastUpdate = lastUpdate;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setIconUrl(String iconUrl) {
this.iconUrl = iconUrl;
}
public String getIconUrl() {
return iconUrl;
}
public String getIconName() {
String iconName = packageName;
if (iconUrl != null) {
int slash = iconUrl.lastIndexOf('/');
if (slash > -1) {
iconName = iconUrl.substring(slash + 1, iconUrl.length());
}
}
return iconName;
}
public void setHistory(List<AppStats> history) {
this.history = history;
}
public List<AppStats> getHistory() {
return history;
}
public void addToHistory(AppStats stats) {
history.add(stats);
}
public void setLatestStats(AppStats latestStats) {
this.latestStats = latestStats;
}
public AppStats getLatestStats() {
return latestStats;
}
public void setDraftOnly(boolean isDraftOnly) {
this.isDraftOnly = isDraftOnly;
}
public boolean isDraftOnly() {
return isDraftOnly;
}
public int getPublishState() {
return publishState;
}
public void setPublishState(int publishState) {
this.publishState = publishState;
}
public void setGhost(boolean ghost) {
this.ghost = ghost;
}
public boolean isGhost() {
return ghost;
}
public void setRatingDetailsExpanded(boolean ratingDetailsExpanded) {
this.ratingDetailsExpanded = ratingDetailsExpanded;
}
public boolean isRatingDetailsExpanded() {
return ratingDetailsExpanded;
}
public void setSkipNotification(boolean skipNotification) {
this.skipNotification = skipNotification;
}
public boolean isSkipNotification() {
return skipNotification;
}
public void setVersionName(String versionName) {
this.versionName = versionName;
}
public String getVersionName() {
return versionName;
}
public void setAdmobStats(AdmobStats admobStats) {
this.admobStats = admobStats;
}
public AdmobStats getAdmobStats() {
return admobStats;
}
public String getAdmobAccount() {
return admobAccount;
}
public void setAdmobAccount(String admobAccount) {
this.admobAccount = admobAccount;
}
public String getAdmobSiteId() {
return admobSiteId;
}
public void setAdmobSiteId(String admobSiteId) {
this.admobSiteId = admobSiteId;
}
public String getAdmobAdUnitId() {
return admobAdUnitId;
}
public void setAdmobAdUnitId(String admobAdUnitId) {
this.admobAdUnitId = admobAdUnitId;
}
public Date getLastCommentsUpdate() {
return lastCommentsUpdate == null ? null : (Date) lastCommentsUpdate.clone();
}
public void setLastCommentsUpdate(Date lastCommentsUpdate) {
this.lastCommentsUpdate = lastCommentsUpdate == null ? null : (Date) lastCommentsUpdate
.clone();
}
public AppDetails getDetails() {
return details;
}
public void setDetails(AppDetails details) {
this.details = details;
}
public String getDeveloperId() {
return developerId;
}
public void setDeveloperId(String developerId) {
this.developerId = developerId;
}
public String getDeveloperName() {
return developerName;
}
public void setDeveloperName(String developerName) {
this.developerName = developerName;
}
public RevenueSummary getTotalRevenueSummary() {
return totalRevenueSummary;
}
public void setTotalRevenueSummary(RevenueSummary totalRevenueSummary) {
this.totalRevenueSummary = totalRevenueSummary;
}
// XXX -- do we need to compare everything?
// an app should be uniquely identified by the package name alone
// (this is enforced by the Play Store)
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((account == null) ? 0 : account.hashCode());
result = prime * result + ((developerId == null) ? 0 : developerId.hashCode());
result = prime * result + ((history == null) ? 0 : history.hashCode());
result = prime * result + ((iconUrl == null) ? 0 : iconUrl.hashCode());
result = prime * result + ((lastUpdate == null) ? 0 : lastUpdate.hashCode());
result = prime * result + ((latestStats == null) ? 0 : latestStats.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((packageName == null) ? 0 : packageName.hashCode());
result = prime * result + ((admobAccount == null) ? 0 : admobAccount.hashCode());
result = prime * result + ((admobSiteId == null) ? 0 : admobSiteId.hashCode());
result = prime * result
+ ((lastCommentsUpdate == null) ? 0 : lastCommentsUpdate.hashCode());
return result;
}
// XXX -- do we need to compare everything?
// an app should be uniquely identified by the package name alone
// (this is enforced by the Play Store)
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AppInfo other = (AppInfo) obj;
if (account == null) {
if (other.account != null)
return false;
} else if (!account.equals(other.account))
return false;
if (developerId == null) {
if (other.developerId != null)
return false;
} else if (!developerId.equals(other.developerId))
return false;
if (history == null) {
if (other.history != null)
return false;
} else if (!history.equals(other.history))
return false;
if (iconUrl == null) {
if (other.iconUrl != null)
return false;
} else if (!iconUrl.equals(other.iconUrl))
return false;
if (lastUpdate == null) {
if (other.lastUpdate != null)
return false;
} else if (!lastUpdate.equals(other.lastUpdate))
return false;
if (latestStats == null) {
if (other.latestStats != null)
return false;
} else if (!latestStats.equals(other.latestStats))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (packageName == null) {
if (other.packageName != null)
return false;
} else if (!packageName.equals(other.packageName))
return false;
if (admobAccount == null) {
if (other.admobAccount != null) {
return false;
}
} else if (!admobAccount.equals(other.admobAccount)) {
return false;
}
if (admobSiteId == null) {
if (other.admobSiteId != null) {
return false;
}
} else if (!admobSiteId.equals(other.admobSiteId)) {
return false;
}
if (lastCommentsUpdate == null) {
if (other.lastCommentsUpdate != null) {
return false;
}
} else if (!lastCommentsUpdate.equals(other.lastCommentsUpdate)) {
return false;
}
return true;
}
@Override
public String toString() {
return String.format("AppInfo [account=%s, developerId=%s, packageName=%s]", account,
developerId, packageName);
}
public boolean isIncomplete() {
return name == null || versionName == null || iconUrl == null;
}
}