package com.rafali.flickruploader;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.rafali.flickruploader.AndroidDevice;
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class AppInstall implements Serializable {
private static final long serialVersionUID = 1L;
public enum FIELD {
deviceId, androidDevice, emails, ownerIds, dateCreation
}
@PrimaryKey
@Persistent
private String deviceId;
@Persistent(serialized = "true", defaultFetchGroup = "true")
private AndroidDevice androidDevice;
@Persistent
private List<String> emails;
@Persistent
private List<String> ownerIds;
@Persistent
private Boolean premium;
@Persistent
private Date dateCreation;
@Persistent
private String customSku;
@Persistent
private String flickrUserId;
@Persistent
private String flickrUserName;
@Persistent
private String flickrToken;
@Persistent
private String flickrTokenSecret;
public AppInstall(String deviceId, AndroidDevice androidDevice, Collection<String> emails) {
this.deviceId = deviceId;
this.androidDevice = androidDevice;
this.emails = emails == null ? new ArrayList<String>() : new ArrayList<String>(new HashSet<String>(emails));
this.dateCreation = new Date();
}
public void setAndroidDevice(AndroidDevice androidDevice) {
this.androidDevice = androidDevice;
}
public AndroidDevice getAndroidDevice() {
return androidDevice;
}
public List<String> getEmails() {
return emails;
}
public String getDeviceId() {
return deviceId;
}
public List<String> getOwnerIds() {
return Collections.unmodifiableList(ownerIds == null ? new ArrayList<String>() : ownerIds);
}
@Override
public String toString() {
return androidDevice + "-" + dateCreation + " : " + ownerIds + " : " + emails + ", premium:" + premium + ", sku:" + customSku;
}
public void setDateCreation(Date dateCreation) {
this.dateCreation = dateCreation;
}
public Date getDateCreation() {
return this.dateCreation;
}
public void addOwnerId(String userId) {
if (ownerIds == null)
ownerIds = new ArrayList<String>();
if (!ownerIds.contains(userId))
ownerIds.add(userId);
}
public boolean isPremium() {
if (premium == null)
return false;
return premium;
}
public void setPremium(boolean premium) {
this.premium = premium;
}
@Override
public int hashCode() {
return deviceId.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof AppInstall) {
return deviceId.equals(((AppInstall) obj).deviceId);
}
return false;
}
public String getCustomSku() {
return customSku;
}
public void setCustomSku(String customSku) {
this.customSku = customSku;
}
public String getFlickrUserId() {
return flickrUserId;
}
public void setFlickrUserId(String flickrUserId) {
this.flickrUserId = flickrUserId;
}
public String getFlickrUserName() {
return flickrUserName;
}
public void setFlickrUserName(String flickrUserName) {
this.flickrUserName = flickrUserName;
}
public String getFlickrToken() {
return flickrToken;
}
public void setFlickrToken(String flickrToken) {
this.flickrToken = flickrToken;
}
public String getFlickrTokenSecret() {
return flickrTokenSecret;
}
public void setFlickrTokenSecret(String flickrTokenSecret) {
this.flickrTokenSecret = flickrTokenSecret;
}
}