package net.thesocialos.shared.model;
import java.io.Serializable;
import javax.persistence.Id;
import com.googlecode.objectify.annotation.Cached;
import com.googlecode.objectify.annotation.Entity;
@Entity
@Cached
public abstract class Account implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id Long id;
private String username;
public Account() {
}
public Account(String userName) {
username = userName;
}
/**
* @return the username
*/
public String getUsername() {
return username;
}
public abstract void refresh();
/**
* @param username
* the username to set
*/
public void setUsername(String username) {
this.username = username;
}
public Long getId() {
return id;
}
public static <T extends Account> Account toDTO(Account account) {
if (account instanceof Facebook) return new Facebook(account.getUsername());
if (account instanceof Google) return new Google(account.getUsername());
if (account instanceof Twitter) return new Twitter(account.getUsername());
if (account instanceof FlickR) return new FlickR(account.getUsername());
return null;
}
}