package polly.rx.entities; import java.util.Date; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.SequenceGenerator; import javax.persistence.Temporal; import javax.persistence.TemporalType; import de.skuzzle.polly.sdk.time.Time; import de.skuzzle.polly.tools.Check; import de.skuzzle.polly.tools.EqualsHelper; import de.skuzzle.polly.tools.Equatable; import polly.rx.core.orion.model.OrionObjectUtil; import polly.rx.core.orion.model.Portal; import polly.rx.core.orion.model.PortalType; @Entity @NamedQueries({ @NamedQuery(name = DBPortal.QUERY_PORTAL_BY_TYPE_AND_OWNER, query = "SELECT p FROM DBPortal p WHERE p.type = ?1 AND p.ownerName = ?2"), @NamedQuery(name = DBPortal.QUERY_PORTAL_BY_TYPE_AND_CLANTAG, query = "SELECT p FROM DBPortal p WHERE p.type = ?1 AND p.ownerClan = ?2"), @NamedQuery(name = DBPortal.QUERY_PORTAL_BY_SECTOR, query = "SELECT p FROM DBPortal p WHERE p.sector = ?1"), @NamedQuery(name = DBPortal.QUERY_PORTAL_BY_TYPE_AND_SECTOR, query = "SELECT p FROM DBPortal p WHERE p.type = ?1 AND p.sector = ?2"), @NamedQuery(name = DBPortal.QUERY_ALL_PORTALS, query = "SELECT p FROM DBPortal p"), @NamedQuery(name = DBPortal.QUERY_PORTAL_BY_QUAD, query = "SELECT p FROM DBPortal p WHERE p.type = ?1 AND p.sector.quadName = ?2") }) public class DBPortal implements Portal { public final static String QUERY_PORTAL_BY_TYPE_AND_OWNER = "QUERY_PORTAL_BY_TYPE_AND_OWNER"; //$NON-NLS-1$ public final static String QUERY_PORTAL_BY_TYPE_AND_CLANTAG = "QUERY_PORTAL_BY_TYPE_AND_CLANTAG"; //$NON-NLS-1$ public final static String QUERY_PORTAL_BY_SECTOR = "QUERY_PORTAL_BY_SECTOR"; //$NON-NLS-1$ public final static String QUERY_PORTAL_BY_QUAD = "QUERY_PORTAL_BY_QUAD"; //$NON-NLS-1$ public final static String QUERY_PORTAL_BY_TYPE_AND_SECTOR = "QUERY_PORTAL_BY_TYPE_AND_SECTOR"; //$NON-NLS-1$ public final static String QUERY_ALL_PORTALS = "QUERY_ALL_PORTALS"; //$NON-NLS-1$ private final static String GENERATOR = "PORTAL_GEN"; //$NON-NLS-1$ @Id @SequenceGenerator(name = GENERATOR) @GeneratedValue(strategy = GenerationType.TABLE, generator = GENERATOR) private int id; private String ownerName; private String ownerClan; @Enumerated(EnumType.ORDINAL) private PortalType type; @ManyToOne private DBSector sector; @Temporal(TemporalType.TIMESTAMP) private Date date; public DBPortal() { this.date = Time.currentTime(); this.ownerClan = ""; //$NON-NLS-1$ } public DBPortal(String ownerName, String ownerClan, PortalType type, DBSector sector, Date date) { Check.objects(ownerName, ownerClan, type, sector, date).notNull(); this.ownerName = ownerName; this.ownerClan = ownerClan; this.type = type; this.sector = sector; this.date = date; } @Override public DBSector getSector() { return this.sector; } public void setSector(DBSector sector) { this.sector = sector; } @Override public String toString() { return OrionObjectUtil.portalString(this); } @Override public int hashCode() { return OrionObjectUtil.portalHash(this); } @Override public final boolean equals(Object obj) { return EqualsHelper.testEquality(this, obj); } @Override public Class<?> getEquivalenceClass() { return Portal.class; } @Override public boolean actualEquals(Equatable o) { return OrionObjectUtil.portalsEqual(this, (Portal) o); } @Override public String getOwnerName() { return this.ownerName; } @Override public String getOwnerClan() { return this.ownerClan; } @Override public PortalType getType() { return this.type; } @Override public Date getDate() { return this.date; } }