Commit 86cc0ba2 by Tuomas Riihimäki

Fixed strict typing to Facades.

1 parent 9bf91dc6
Showing with 99 additions and 74 deletions
...@@ -6,13 +6,11 @@ import javax.persistence.EntityManager; ...@@ -6,13 +6,11 @@ import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import fi.insomnia.bortal.beans.SecurityLogType;
import fi.insomnia.bortal.model.AccessRight; import fi.insomnia.bortal.model.AccessRight;
import fi.insomnia.bortal.model.LogEntryType;
@Stateless @Stateless
@LocalBean @LocalBean
public class AccessRightFacade extends GenericFacade<AccessRight> { public class AccessRightFacade extends IntegerPkGenericFacade<AccessRight> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.AccountEvent; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.AccountEvent;
@Stateless @Stateless
@LocalBean @LocalBean
public class AccountEventFacade extends GenericFacade<AccountEvent> { public class AccountEventFacade extends EventChildGenericFacade<AccountEvent> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Bill; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Bill;
@Stateless @Stateless
@LocalBean @LocalBean
public class BillFacade extends GenericFacade<Bill> { public class BillFacade extends EventChildGenericFacade<Bill> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.BillLine; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.BillLine;
@Stateless @Stateless
@LocalBean @LocalBean
public class BillLineFacade extends GenericFacade<BillLine> { public class BillLineFacade extends EventChildGenericFacade<BillLine> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.CardTemplate; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.CardTemplate;
@Stateless @Stateless
@LocalBean @LocalBean
public class CardTemplateFacade extends GenericFacade<CardTemplate> { public class CardTemplateFacade extends EventChildGenericFacade<CardTemplate> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.CompoEntry; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.CompoEntry;
@Stateless @Stateless
@LocalBean @LocalBean
public class CompoEntryFacade extends GenericFacade<CompoEntry> { public class CompoEntryFacade extends EventChildGenericFacade<CompoEntry> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.CompoEntryFile; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.CompoEntryFile;
@Stateless @Stateless
@LocalBean @LocalBean
public class CompoEntryFileFacade extends GenericFacade<CompoEntryFile> { public class CompoEntryFileFacade extends EventChildGenericFacade<CompoEntryFile> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.CompoEntryParticipant; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.CompoEntryParticipant;
@Stateless @Stateless
@LocalBean @LocalBean
public class CompoEntryParticipantFacade extends GenericFacade<CompoEntryParticipant> { public class CompoEntryParticipantFacade extends EventChildGenericFacade<CompoEntryParticipant> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Compo; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Compo;
@Stateless @Stateless
@LocalBean @LocalBean
public class CompoFacade extends GenericFacade<Compo> { public class CompoFacade extends EventChildGenericFacade<Compo> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Discount; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Discount;
@Stateless @Stateless
@LocalBean @LocalBean
public class DiscountFacade extends GenericFacade<Discount> { public class DiscountFacade extends EventChildGenericFacade<Discount> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.DiscountInstance; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.DiscountInstance;
@Stateless @Stateless
@LocalBean @LocalBean
public class DiscountInstanceFacade extends GenericFacade<DiscountInstance> { public class DiscountInstanceFacade extends EventChildGenericFacade<DiscountInstance> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
package fi.insomnia.bortal.facade;
import fi.insomnia.bortal.model.EventChildInterface;
import fi.insomnia.bortal.model.EventPk;
/**
* Session Bean implementation class GenericFacade
*/
public abstract class EventChildGenericFacade<T extends EventChildInterface> extends GenericFacade<EventPk,T> {
public EventChildGenericFacade(Class<T> entityClass) {
super(entityClass);
}
}
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Event; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Event;
@Stateless @Stateless
@LocalBean @LocalBean
public class EventFacade extends GenericFacade<Event> { public class EventFacade extends IntegerPkGenericFacade<Event> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.EventMap; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.EventMap;
@Stateless @Stateless
@LocalBean @LocalBean
public class EventMapFacade extends GenericFacade<EventMap> { public class EventMapFacade extends EventChildGenericFacade<EventMap> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.EventSettings; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.EventSettings;
@Stateless @Stateless
@LocalBean @LocalBean
public class EventSettingsFacade extends GenericFacade<EventSettings> { public class EventSettingsFacade extends EventChildGenericFacade<EventSettings> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.EventStatus; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.EventStatus;
@Stateless @Stateless
@LocalBean @LocalBean
public class EventStatusFacade extends GenericFacade<EventStatus> { public class EventStatusFacade extends EventChildGenericFacade<EventStatus> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.FoodWave; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.FoodWave;
@Stateless @Stateless
@LocalBean @LocalBean
public class FoodWaveFacade extends GenericFacade<FoodWave> { public class FoodWaveFacade extends EventChildGenericFacade<FoodWave> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.FoodWaveTemplate; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.FoodWaveTemplate;
@Stateless @Stateless
@LocalBean @LocalBean
public class FoodWaveTemplateFacade extends GenericFacade<FoodWaveTemplate> { public class FoodWaveTemplateFacade extends EventChildGenericFacade<FoodWaveTemplate> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -12,7 +12,7 @@ import fi.insomnia.bortal.model.ModelInterface; ...@@ -12,7 +12,7 @@ import fi.insomnia.bortal.model.ModelInterface;
/** /**
* Session Bean implementation class GenericFacade * Session Bean implementation class GenericFacade
*/ */
public abstract class GenericFacade<T extends ModelInterface> implements GenericFacadeLocal<T> { public abstract class GenericFacade<PK,T extends ModelInterface<PK>> implements GenericFacadeLocal<PK,T> {
private Class<T> entClass; private Class<T> entClass;
public GenericFacade(Class<T>entityClass) public GenericFacade(Class<T>entityClass)
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.GroupMembership; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.GroupMembership;
@Stateless @Stateless
@LocalBean @LocalBean
public class GroupMembershipFacade extends GenericFacade<GroupMembership> { public class GroupMembershipFacade extends EventChildGenericFacade<GroupMembership> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
package fi.insomnia.bortal.facade;
import fi.insomnia.bortal.model.ModelInterface;
/**
* Session Bean implementation class GenericFacade
*/
public abstract class IntegerPkGenericFacade<T extends ModelInterface<Integer>> extends GenericFacade<Integer,T> {
public IntegerPkGenericFacade(Class<T> entityClass) {
super(entityClass);
}
}
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Location; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Location;
@Stateless @Stateless
@LocalBean @LocalBean
public class LocationFacade extends GenericFacade<Location> { public class LocationFacade extends EventChildGenericFacade<Location> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.LogEntry; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.LogEntry;
@Stateless @Stateless
@LocalBean @LocalBean
public class LogEntryFacade extends GenericFacade<LogEntry> { public class LogEntryFacade extends EventChildGenericFacade<LogEntry> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -11,7 +11,7 @@ import fi.insomnia.bortal.model.LogEntryType; ...@@ -11,7 +11,7 @@ import fi.insomnia.bortal.model.LogEntryType;
@Stateless @Stateless
@LocalBean @LocalBean
public class LogEntryTypeFacade extends GenericFacade<LogEntryType> { public class LogEntryTypeFacade extends EventChildGenericFacade<LogEntryType> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
package fi.insomnia.bortal.facade;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import fi.insomnia.bortal.model.ModelInterface;
@Stateless
@LocalBean
public class ModelInterfaceFacade extends GenericFacade<ModelInterface> {
@PersistenceContext
private EntityManager em;
public ModelInterfaceFacade() {
super(ModelInterface.class);
}
protected EntityManager getEm() {
return em;
}
}
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.News; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.News;
@Stateless @Stateless
@LocalBean @LocalBean
public class NewsFacade extends GenericFacade<News> { public class NewsFacade extends EventChildGenericFacade<News> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.NewsGroup; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.NewsGroup;
@Stateless @Stateless
@LocalBean @LocalBean
public class NewsGroupFacade extends GenericFacade<NewsGroup> { public class NewsGroupFacade extends EventChildGenericFacade<NewsGroup> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Place; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Place;
@Stateless @Stateless
@LocalBean @LocalBean
public class PlaceFacade extends GenericFacade<Place> { public class PlaceFacade extends EventChildGenericFacade<Place> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.PlaceGroup; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.PlaceGroup;
@Stateless @Stateless
@LocalBean @LocalBean
public class PlaceGroupFacade extends GenericFacade<PlaceGroup> { public class PlaceGroupFacade extends EventChildGenericFacade<PlaceGroup> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.PrintedCard; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.PrintedCard;
@Stateless @Stateless
@LocalBean @LocalBean
public class PrintedCardFacade extends GenericFacade<PrintedCard> { public class PrintedCardFacade extends EventChildGenericFacade<PrintedCard> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -10,7 +10,7 @@ import fi.insomnia.bortal.model.Product; ...@@ -10,7 +10,7 @@ import fi.insomnia.bortal.model.Product;
@Stateless @Stateless
@LocalBean @LocalBean
public class ProductFacade extends GenericFacade<Product> { public class ProductFacade extends EventChildGenericFacade<Product> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.ReaderEvent; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.ReaderEvent;
@Stateless @Stateless
@LocalBean @LocalBean
public class ReaderEventFacade extends GenericFacade<ReaderEvent> { public class ReaderEventFacade extends EventChildGenericFacade<ReaderEvent> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Reader; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Reader;
@Stateless @Stateless
@LocalBean @LocalBean
public class ReaderFacade extends GenericFacade<Reader> { public class ReaderFacade extends EventChildGenericFacade<Reader> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -7,11 +7,10 @@ import javax.persistence.PersistenceContext; ...@@ -7,11 +7,10 @@ import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User;
@Stateless @Stateless
@LocalBean @LocalBean
public class RoleFacade extends GenericFacade<Role> { public class RoleFacade extends EventChildGenericFacade<Role> {
private static final String PUBLIC_ROLE_NAME = "public"; private static final String PUBLIC_ROLE_NAME = "public";
@PersistenceContext @PersistenceContext
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.RoleRight; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.RoleRight;
@Stateless @Stateless
@LocalBean @LocalBean
public class RoleRightFacade extends GenericFacade<RoleRight> { public class RoleRightFacade extends EventChildGenericFacade<RoleRight> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -10,7 +10,7 @@ import fi.insomnia.bortal.model.User; ...@@ -10,7 +10,7 @@ import fi.insomnia.bortal.model.User;
@Stateless @Stateless
@LocalBean @LocalBean
public class UserFacade extends GenericFacade<User> { public class UserFacade extends IntegerPkGenericFacade<User> {
public static final String DEFAULT_USER_LOGIN = "default"; public static final String DEFAULT_USER_LOGIN = "default";
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.UserImage; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.UserImage;
@Stateless @Stateless
@LocalBean @LocalBean
public class UserImageFacade extends GenericFacade<UserImage> { public class UserImageFacade extends EventChildGenericFacade<UserImage> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Vote; ...@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Vote;
@Stateless @Stateless
@LocalBean @LocalBean
public class VoteFacade extends GenericFacade<Vote> { public class VoteFacade extends EventChildGenericFacade<Vote> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
......
...@@ -6,7 +6,7 @@ import javax.ejb.Local; ...@@ -6,7 +6,7 @@ import javax.ejb.Local;
import fi.insomnia.bortal.model.ModelInterface; import fi.insomnia.bortal.model.ModelInterface;
@Local @Local
public interface GenericFacadeLocal<T extends ModelInterface> { public interface GenericFacadeLocal<PK, T extends ModelInterface<PK>> {
void create(T entity); void create(T entity);
...@@ -14,7 +14,7 @@ public interface GenericFacadeLocal<T extends ModelInterface> { ...@@ -14,7 +14,7 @@ public interface GenericFacadeLocal<T extends ModelInterface> {
T merge(T entity); T merge(T entity);
T find(Object id); T find(PK id);
List<T> findAll(); List<T> findAll();
......
...@@ -12,6 +12,6 @@ ...@@ -12,6 +12,6 @@
<attribute name="owner.project.facets" value="jst.java"/> <attribute name="owner.project.facets" value="jst.java"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/LanBortalUtilities"/> <classpathentry combineaccessrules="false" exported="true" kind="src" path="/LanBortalUtilities"/>
<classpathentry kind="output" path="build/classes"/> <classpathentry kind="output" path="build/classes"/>
</classpath> </classpath>
...@@ -24,13 +24,12 @@ import javax.persistence.TemporalType; ...@@ -24,13 +24,12 @@ import javax.persistence.TemporalType;
import javax.persistence.Version; import javax.persistence.Version;
/** /**
* * Competition to be held at the event.
*/ */
@Entity @Entity
@Table(name = "compos") @Table(name = "compos")
@NamedQueries( { @NamedQueries( {
@NamedQuery(name = "Compo.findAll", query = "SELECT c FROM Compo c"), @NamedQuery(name = "Compo.findAll", query = "SELECT c FROM Compo c"),
@NamedQuery(name = "Compo.findByName", query = "SELECT c FROM Compo c WHERE c.name = :name"), @NamedQuery(name = "Compo.findByName", query = "SELECT c FROM Compo c WHERE c.name = :name"),
@NamedQuery(name = "Compo.findByStartTime", query = "SELECT c FROM Compo c WHERE c.startTime = :startTime"), @NamedQuery(name = "Compo.findByStartTime", query = "SELECT c FROM Compo c WHERE c.startTime = :startTime"),
@NamedQuery(name = "Compo.findByVoteStart", query = "SELECT c FROM Compo c WHERE c.voteStart = :voteStart"), @NamedQuery(name = "Compo.findByVoteStart", query = "SELECT c FROM Compo c WHERE c.voteStart = :voteStart"),
...@@ -44,13 +43,24 @@ public class Compo implements EventChildInterface{ ...@@ -44,13 +43,24 @@ public class Compo implements EventChildInterface{
@EmbeddedId @EmbeddedId
private EventPk id; private EventPk id;
/**
* Name of the competition.
*/
@Column(name = "compo_name", nullable = false) @Column(name = "compo_name", nullable = false)
private String name; private String name;
/**
* Start time of the competition
* Submitting entries should be disabled after this time.
*/
@Column(name = "compo_start") @Column(name = "compo_start")
@Temporal(TemporalType.TIMESTAMP) @Temporal(TemporalType.TIMESTAMP)
private Calendar startTime; private Calendar startTime;
/**
* When the voting should start
* @See {@link #holdVoting}
*/
@Column(name = "vote_start") @Column(name = "vote_start")
@Temporal(TemporalType.TIMESTAMP) @Temporal(TemporalType.TIMESTAMP)
private Calendar voteStart; private Calendar voteStart;
...@@ -75,12 +85,23 @@ public class Compo implements EventChildInterface{ ...@@ -75,12 +85,23 @@ public class Compo implements EventChildInterface{
@Column(name = "max_participant_count") @Column(name = "max_participant_count")
private int maxParticipantCount; private int maxParticipantCount;
@Column(name = "hold_voting", nullable = false, columnDefinition = "boolean default true") /**
private boolean holdVoting; * If ( for some unimaginable reason ) compo is delayed
* hold voting can be used to postpone the start of the voting
* from the time specified in {@link #voteStart}
*/
@Column(name = "hold_voting", nullable = false)
private boolean holdVoting = true;
/**
* Entries submitted to participate this compo.
*/
@OneToMany(cascade = CascadeType.ALL, mappedBy = "compo") @OneToMany(cascade = CascadeType.ALL, mappedBy = "compo")
private List<CompoEntry> compoEntries; private List<CompoEntry> compoEntries;
/**
* Which event the compo belongs to
*/
@JoinColumn(name = "events_id", referencedColumnName = "events_id", nullable = false) @JoinColumn(name = "events_id", referencedColumnName = "events_id", nullable = false)
@ManyToOne(optional = false) @ManyToOne(optional = false)
private Event event; private Event event;
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <classpath>
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/JVM 1.6.0 (MacOS X Default)"> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<attributes>
<attribute name="owner.project.facets" value="jst.java"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="output" path="build/classes"/> <classpathentry kind="output" path="build/classes"/>
</classpath> </classpath>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!