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;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import fi.insomnia.bortal.beans.SecurityLogType;
import fi.insomnia.bortal.model.AccessRight;
import fi.insomnia.bortal.model.LogEntryType;
@Stateless
@LocalBean
public class AccessRightFacade extends GenericFacade<AccessRight> {
public class AccessRightFacade extends IntegerPkGenericFacade<AccessRight> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.AccountEvent;
@Stateless
@LocalBean
public class AccountEventFacade extends GenericFacade<AccountEvent> {
public class AccountEventFacade extends EventChildGenericFacade<AccountEvent> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Bill;
@Stateless
@LocalBean
public class BillFacade extends GenericFacade<Bill> {
public class BillFacade extends EventChildGenericFacade<Bill> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.BillLine;
@Stateless
@LocalBean
public class BillLineFacade extends GenericFacade<BillLine> {
public class BillLineFacade extends EventChildGenericFacade<BillLine> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.CardTemplate;
@Stateless
@LocalBean
public class CardTemplateFacade extends GenericFacade<CardTemplate> {
public class CardTemplateFacade extends EventChildGenericFacade<CardTemplate> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.CompoEntry;
@Stateless
@LocalBean
public class CompoEntryFacade extends GenericFacade<CompoEntry> {
public class CompoEntryFacade extends EventChildGenericFacade<CompoEntry> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.CompoEntryFile;
@Stateless
@LocalBean
public class CompoEntryFileFacade extends GenericFacade<CompoEntryFile> {
public class CompoEntryFileFacade extends EventChildGenericFacade<CompoEntryFile> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.CompoEntryParticipant;
@Stateless
@LocalBean
public class CompoEntryParticipantFacade extends GenericFacade<CompoEntryParticipant> {
public class CompoEntryParticipantFacade extends EventChildGenericFacade<CompoEntryParticipant> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Compo;
@Stateless
@LocalBean
public class CompoFacade extends GenericFacade<Compo> {
public class CompoFacade extends EventChildGenericFacade<Compo> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Discount;
@Stateless
@LocalBean
public class DiscountFacade extends GenericFacade<Discount> {
public class DiscountFacade extends EventChildGenericFacade<Discount> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.DiscountInstance;
@Stateless
@LocalBean
public class DiscountInstanceFacade extends GenericFacade<DiscountInstance> {
public class DiscountInstanceFacade extends EventChildGenericFacade<DiscountInstance> {
@PersistenceContext
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;
@Stateless
@LocalBean
public class EventFacade extends GenericFacade<Event> {
public class EventFacade extends IntegerPkGenericFacade<Event> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.EventMap;
@Stateless
@LocalBean
public class EventMapFacade extends GenericFacade<EventMap> {
public class EventMapFacade extends EventChildGenericFacade<EventMap> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.EventSettings;
@Stateless
@LocalBean
public class EventSettingsFacade extends GenericFacade<EventSettings> {
public class EventSettingsFacade extends EventChildGenericFacade<EventSettings> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.EventStatus;
@Stateless
@LocalBean
public class EventStatusFacade extends GenericFacade<EventStatus> {
public class EventStatusFacade extends EventChildGenericFacade<EventStatus> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.FoodWave;
@Stateless
@LocalBean
public class FoodWaveFacade extends GenericFacade<FoodWave> {
public class FoodWaveFacade extends EventChildGenericFacade<FoodWave> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.FoodWaveTemplate;
@Stateless
@LocalBean
public class FoodWaveTemplateFacade extends GenericFacade<FoodWaveTemplate> {
public class FoodWaveTemplateFacade extends EventChildGenericFacade<FoodWaveTemplate> {
@PersistenceContext
private EntityManager em;
......
......@@ -12,7 +12,7 @@ import fi.insomnia.bortal.model.ModelInterface;
/**
* 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;
public GenericFacade(Class<T>entityClass)
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.GroupMembership;
@Stateless
@LocalBean
public class GroupMembershipFacade extends GenericFacade<GroupMembership> {
public class GroupMembershipFacade extends EventChildGenericFacade<GroupMembership> {
@PersistenceContext
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;
@Stateless
@LocalBean
public class LocationFacade extends GenericFacade<Location> {
public class LocationFacade extends EventChildGenericFacade<Location> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.LogEntry;
@Stateless
@LocalBean
public class LogEntryFacade extends GenericFacade<LogEntry> {
public class LogEntryFacade extends EventChildGenericFacade<LogEntry> {
@PersistenceContext
private EntityManager em;
......
......@@ -11,7 +11,7 @@ import fi.insomnia.bortal.model.LogEntryType;
@Stateless
@LocalBean
public class LogEntryTypeFacade extends GenericFacade<LogEntryType> {
public class LogEntryTypeFacade extends EventChildGenericFacade<LogEntryType> {
@PersistenceContext
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;
@Stateless
@LocalBean
public class NewsFacade extends GenericFacade<News> {
public class NewsFacade extends EventChildGenericFacade<News> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.NewsGroup;
@Stateless
@LocalBean
public class NewsGroupFacade extends GenericFacade<NewsGroup> {
public class NewsGroupFacade extends EventChildGenericFacade<NewsGroup> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Place;
@Stateless
@LocalBean
public class PlaceFacade extends GenericFacade<Place> {
public class PlaceFacade extends EventChildGenericFacade<Place> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.PlaceGroup;
@Stateless
@LocalBean
public class PlaceGroupFacade extends GenericFacade<PlaceGroup> {
public class PlaceGroupFacade extends EventChildGenericFacade<PlaceGroup> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.PrintedCard;
@Stateless
@LocalBean
public class PrintedCardFacade extends GenericFacade<PrintedCard> {
public class PrintedCardFacade extends EventChildGenericFacade<PrintedCard> {
@PersistenceContext
private EntityManager em;
......
......@@ -10,7 +10,7 @@ import fi.insomnia.bortal.model.Product;
@Stateless
@LocalBean
public class ProductFacade extends GenericFacade<Product> {
public class ProductFacade extends EventChildGenericFacade<Product> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.ReaderEvent;
@Stateless
@LocalBean
public class ReaderEventFacade extends GenericFacade<ReaderEvent> {
public class ReaderEventFacade extends EventChildGenericFacade<ReaderEvent> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Reader;
@Stateless
@LocalBean
public class ReaderFacade extends GenericFacade<Reader> {
public class ReaderFacade extends EventChildGenericFacade<Reader> {
@PersistenceContext
private EntityManager em;
......
......@@ -7,11 +7,10 @@ import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User;
@Stateless
@LocalBean
public class RoleFacade extends GenericFacade<Role> {
public class RoleFacade extends EventChildGenericFacade<Role> {
private static final String PUBLIC_ROLE_NAME = "public";
@PersistenceContext
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.RoleRight;
@Stateless
@LocalBean
public class RoleRightFacade extends GenericFacade<RoleRight> {
public class RoleRightFacade extends EventChildGenericFacade<RoleRight> {
@PersistenceContext
private EntityManager em;
......
......@@ -10,7 +10,7 @@ import fi.insomnia.bortal.model.User;
@Stateless
@LocalBean
public class UserFacade extends GenericFacade<User> {
public class UserFacade extends IntegerPkGenericFacade<User> {
public static final String DEFAULT_USER_LOGIN = "default";
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.UserImage;
@Stateless
@LocalBean
public class UserImageFacade extends GenericFacade<UserImage> {
public class UserImageFacade extends EventChildGenericFacade<UserImage> {
@PersistenceContext
private EntityManager em;
......
......@@ -8,7 +8,7 @@ import fi.insomnia.bortal.model.Vote;
@Stateless
@LocalBean
public class VoteFacade extends GenericFacade<Vote> {
public class VoteFacade extends EventChildGenericFacade<Vote> {
@PersistenceContext
private EntityManager em;
......
......@@ -6,7 +6,7 @@ import javax.ejb.Local;
import fi.insomnia.bortal.model.ModelInterface;
@Local
public interface GenericFacadeLocal<T extends ModelInterface> {
public interface GenericFacadeLocal<PK, T extends ModelInterface<PK>> {
void create(T entity);
......@@ -14,7 +14,7 @@ public interface GenericFacadeLocal<T extends ModelInterface> {
T merge(T entity);
T find(Object id);
T find(PK id);
List<T> findAll();
......
......@@ -12,6 +12,6 @@
<attribute name="owner.project.facets" value="jst.java"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/LanBortalUtilities"/>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/LanBortalUtilities"/>
<classpathentry kind="output" path="build/classes"/>
</classpath>
......@@ -24,13 +24,12 @@ import javax.persistence.TemporalType;
import javax.persistence.Version;
/**
*
* Competition to be held at the event.
*/
@Entity
@Table(name = "compos")
@NamedQueries( {
@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.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"),
......@@ -44,13 +43,24 @@ public class Compo implements EventChildInterface{
@EmbeddedId
private EventPk id;
/**
* Name of the competition.
*/
@Column(name = "compo_name", nullable = false)
private String name;
/**
* Start time of the competition
* Submitting entries should be disabled after this time.
*/
@Column(name = "compo_start")
@Temporal(TemporalType.TIMESTAMP)
private Calendar startTime;
/**
* When the voting should start
* @See {@link #holdVoting}
*/
@Column(name = "vote_start")
@Temporal(TemporalType.TIMESTAMP)
private Calendar voteStart;
......@@ -75,12 +85,23 @@ public class Compo implements EventChildInterface{
@Column(name = "max_participant_count")
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")
private List<CompoEntry> compoEntries;
/**
* Which event the compo belongs to
*/
@JoinColumn(name = "events_id", referencedColumnName = "events_id", nullable = false)
@ManyToOne(optional = false)
private Event event;
......
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<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)">
<attributes>
<attribute name="owner.project.facets" value="jst.java"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="output" path="build/classes"/>
</classpath>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!