Commit a2492286 by Tuomas Riihimäki

Whoops... It's a tad too big commit...

1 parent 3b58dba8
Showing with 2233 additions and 116 deletions
...@@ -134,7 +134,7 @@ public class BortalLoginModule extends AppservPasswordLoginModule { ...@@ -134,7 +134,7 @@ public class BortalLoginModule extends AppservPasswordLoginModule {
private void log(String s) { private void log(String s) {
System.out.println((new StringBuilder()) System.out.println((new StringBuilder())
.append("SimpleCustomLoginModule::").append(s).toString()); .append("BortalLoginModule::").append(s).toString());
} }
} }
...@@ -42,7 +42,7 @@ public class AccountEventBean implements AccountEventBeanLocal { ...@@ -42,7 +42,7 @@ public class AccountEventBean implements AccountEventBeanLocal {
@EJB @EJB
private ProductBeanLocal prodbean; private ProductBeanLocal prodbean;
@EJB @EJB
private PlaceBeanLocal placebean; private PlaceBean placebean;
@EJB @EJB
private PermissionBeanLocal permbean; private PermissionBeanLocal permbean;
......
...@@ -10,6 +10,7 @@ import java.util.List; ...@@ -10,6 +10,7 @@ import java.util.List;
import javax.annotation.security.DeclareRoles; import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed; import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
...@@ -35,6 +36,7 @@ import fi.insomnia.bortal.model.User; ...@@ -35,6 +36,7 @@ import fi.insomnia.bortal.model.User;
* Session Bean implementation class BillBean * Session Bean implementation class BillBean
*/ */
@Stateless @Stateless
@LocalBean
@DeclareRoles({ "BILL/READ", "USER_MANAGEMENT/EXECUTE", "USER_MANAGEMENT/READ" }) @DeclareRoles({ "BILL/READ", "USER_MANAGEMENT/EXECUTE", "USER_MANAGEMENT/READ" })
public class BillBean implements BillBeanLocal { public class BillBean implements BillBeanLocal {
...@@ -55,7 +57,7 @@ public class BillBean implements BillBeanLocal { ...@@ -55,7 +57,7 @@ public class BillBean implements BillBeanLocal {
private ProductBeanLocal productBean; private ProductBeanLocal productBean;
@EJB @EJB
private PlaceBeanLocal placebean; private PlaceBean placebean;
@EJB @EJB
private PermissionBeanLocal permissionbean; private PermissionBeanLocal permissionbean;
......
...@@ -71,6 +71,7 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote { ...@@ -71,6 +71,7 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote {
HashSet<RoleRight> mappedRoles = new HashSet<RoleRight>(); HashSet<RoleRight> mappedRoles = new HashSet<RoleRight>();
List<Role> usrroles = userbean.localFindUsersRoles(usr); List<Role> usrroles = userbean.localFindUsersRoles(usr);
for (Role r : usrroles) { for (Role r : usrroles) {
for (RoleRight rr : r.getRoleRights()) { for (RoleRight rr : r.getRoleRights()) {
if (!mappedRoles.contains(rr)) { if (!mappedRoles.contains(rr)) {
...@@ -90,6 +91,7 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote { ...@@ -90,6 +91,7 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote {
} }
} }
} }
if (permbean.isLoggedIn()) { if (permbean.isLoggedIn()) {
roleset.add("USER"); roleset.add("USER");
} }
......
package fi.insomnia.bortal.beans;
import java.util.Calendar;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.transaction.UserTransaction;
import org.slf4j.Logger;
import fi.insomnia.bortal.facade.LogEntryFacade;
import fi.insomnia.bortal.facade.LogEntryTypeFacade;
import fi.insomnia.bortal.model.LogEntry;
import fi.insomnia.bortal.model.LogEntryType;
import fi.insomnia.bortal.model.User;
/**
* Session Bean implementation class SercurityBean
*/
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class LoggingBean implements LoggingBeanLocal {
private static final boolean DEBUG = true;
private final Logger logger = org.slf4j.LoggerFactory.getLogger(LoggingBean.class);
@EJB
private LogEntryTypeFacade typeFacade;
@EJB
private LogEntryFacade entryFacade;
@Resource
UserTransaction utx;
// @Override
// public LogEntry logPermissionDenied(User user, Exception exception) {
// LogEntry entry = null;
//
// entry = logMessage(SecurityLogType.permissionDenied, user,
// exception.getMessage());
// logger.debug(entry.toString(), exception);
//
// return entry;
//
// }
//
// public LogEntry logException(User user, Exception exception) {
//
// LogEntry entry = logMessage(SecurityLogType.unknownException, user,
// exception.getMessage());
// logger.debug(entry.toString(), exception);
// return entry;
// }
//
// public LogEntry logMessage(User user, String... description) {
//
// LogEntry entry = logMessage(SecurityLogType.genericMessage, user,
// toString(description));
//
// return entry;
// }
//
// private static final String toString(String... desc) {
// StringBuilder msg = new StringBuilder();
// for (String msgpart : desc) {
// msg.append(msgpart);
// }
// return msg.toString();
// }
//
// public LogEntry logMessage(String... description) {
// LogEntry entry = logMessage(SecurityLogType.genericMessage,
// toString(description));
// return entry;
//
// }
// public LogEntry logPermissionDenied(User currentuser, String... message)
// {
// return logMessage(SecurityLogType.permissionDenied, currentuser,
// toString(message));
// }
@Override
public LogEntry logMessage(SecurityLogType paramType, User user, String... description) {
LogEntry entry = null;
try {
String desc = toString(description);
utx.begin();
LogEntryType type = typeFacade.findOrCreate(paramType);
entry = new LogEntry(Calendar.getInstance());
entry.setType(type);
entry.setDescription(desc);
entry.setUser(user);
entryFacade.create(entry);
if (DEBUG) {
logger.debug("SECURITY DEBUG: Type: \"{}\" user \"{}\", description \"{}\"", new String[] { paramType.name(), (user == null) ? "null" : user.getLogin(), desc });
}
utx.commit();
} catch (Exception e) {
logger.warn("Exception at SecurityBean", e);
}
return entry;
}
private static final String toString(String... desc) {
StringBuilder msg = new StringBuilder();
for (String msgpart : desc) {
msg.append(msgpart);
}
return msg.toString();
}
}
package fi.insomnia.bortal.beans;
import java.util.List;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import fi.insomnia.bortal.facade.NewsGroupFacade;
import fi.insomnia.bortal.model.EventPk;
import fi.insomnia.bortal.model.NewsGroup;
/**
* Session Bean implementation class NewsBean
*/
@Stateless
@LocalBean
@DeclareRoles({ "ROLE_MANAGEMENT/READ", "ROLE_MANAGEMENT/WRITE" })
public class NewsBean implements NewsBeanLocal {
@EJB
private NewsGroupFacade ngfacade;
@EJB
private EventBeanLocal eventbean;
@Override
public NewsGroup findByName(String groupname) {
return ngfacade.findByName(eventbean.getCurrentEvent(), groupname);
}
@Override
@RolesAllowed("ROLE_MANAGEMENT/READ")
public List<NewsGroup> findAll() {
return ngfacade.findAll(eventbean.getCurrentEvent());
}
@Override
@RolesAllowed("ROLE_MANAGEMENT/READ")
public NewsGroup findById(int newsgroupid) {
return ngfacade.find(eventbean.getCurrentEvent(), newsgroupid);
}
@Override
@RolesAllowed("ROLE_MANAGEMENT/WRITE")
public NewsGroup merge(NewsGroup newsgroup) {
return ngfacade.merge(newsgroup);
}
@Override
@RolesAllowed("ROLE_MANAGEMENT/WRITE")
public void createNewsgroup(NewsGroup newsgroup) {
newsgroup.setId(new EventPk(eventbean.getCurrentEvent()));
ngfacade.create(newsgroup);
}
}
package fi.insomnia.bortal.beans;
import java.security.Principal;
import javax.annotation.Resource;
import javax.annotation.security.DeclareRoles;
import javax.ejb.EJB;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.User;
@Stateless
@DeclareRoles({ "ANONYMOUS", "SUPERADMIN", "USER", "LOGIN/READ", "LOGIN/WRITE",
"LOGIN/EXECUTE", "USER_MANAGEMENT/READ", "USER_MANAGEMENT/WRITE",
"USER_MANAGEMENT/EXECUTE", "ACCOUNT_MANAGEMENT/READ",
"ACCOUNT_MANAGEMENT/WRITE", "ACCOUNT_MANAGEMENT/EXECUTE", "BILL/READ",
"BILL/WRITE", "BILL/EXECUTE", "MAP/READ", "MAP/WRITE", "MAP/EXECUTE",
"ROLE_MANAGEMENT/READ", "ROLE_MANAGEMENT/WRITE", "ROLE_MANAGEMENT/EXECUTE",
"PRODUCT/READ", "PRODUCT/WRITE", "PRODUCT/EXECUTE", "SHOP/READ",
"SHOP/WRITE", "SHOP/EXECUTE", "GAME/READ", "GAME/WRITE", "GAME/EXECUTE",
"POLL/READ", "POLL/WRITE", "POLL/EXECUTE" })
public class PermissionBean implements PermissionBeanLocal {
public static final String DEFAULT_USER_LOGIN = "anonymous";
private static final Logger logger = LoggerFactory.getLogger(PermissionBean.class);
@Resource
private SessionContext context;
@EJB
private LoggingBeanLocal loggingbean;
@EJB
private UserFacade userfacade;
private UserBean userbean;
//
// @Override
// public boolean hasPermission(String perm) {
// return context.isCallerInRole(perm);
// }
@Override
public boolean hasPermission(Permission target, RolePermission permission) {
return getCurrentUser().isSuperadmin()
|| context.isCallerInRole(target.append(permission));
// User user = getCurrentUser();
//
// Boolean ret = BortalLocalContextHolder.hasPermission(target,
// permission);
// // Boolean ret = BortalLocalContextHolder.hasPermission(target,
// // permission);
// if (ret == null) {
// try {
// for (Role role : userbean.findUsersRoles(user)) {
// if (role == null) {
// continue;
// }
//
// for (RoleRight rr : role.getRoleRights()) {
// BortalLocalContextHolder.setPermission(rr);
//
// ret = BortalLocalContextHolder.hasPermission(target, permission);
// if (ret != null) {
// break;
// }
//
// }
// if (ret != null) {
// break;
// }
// }
// } catch (PermissionDeniedException e) {
// logger.warn("Permission denied when it should be allowed!!", e);
// }
// }
//
// // TODO: FIX THIS!! really bad idea....
//
// if (user.isSuperadmin()) {
// return true;
// }
//
// if (ret == null) {
// ret = false;
// BortalLocalContextHolder.setPermission(target, permission, ret);
// }
//
// return ret;
}
@Override
public void fatalPermission(Permission target, RolePermission permission, Object... failmessage) throws PermissionDeniedException {
boolean ret = hasPermission(target, permission);
if (!ret) {
StringBuilder message = new StringBuilder("Target: ").append(target).append(" permission: ").append(permission);
if (failmessage == null || failmessage.length == 0) {
message.append(" MSG: SessionHandler mbean permission exception: Target: ")
.append(target)
.append(", Permission: ")
.append(permission);
} else {
for (Object part : failmessage) {
message.append(part == null ? "NULL" : part.toString());
}
}
// throw new SecurityException("Foobar");
throw new PermissionDeniedException(loggingbean, getCurrentUser(), message.toString());
}
}
@Override
public void fatalNotLoggedIn() throws PermissionDeniedException {
if (!isLoggedIn()) {
throw new PermissionDeniedException(loggingbean, getCurrentUser(), "User is not logged in!");
}
}
@Override
public boolean isCurrentUser(User user) {
return (context.getCallerPrincipal() == null || user == null) ? false : context.getCallerPrincipal().getName().equals(user.getLogin());
}
@Override
public boolean isLoggedIn() {
return !getAnonUser().equals(getCurrentUser()) || getCurrentUser().isSuperadmin();
}
@Override
public User getCurrentUser() {
Principal principal = context.getCallerPrincipal();
User ret = userfacade.findByLogin(principal.getName());
if (ret == null) {
ret = getAnonUser();
}
return ret;
}
/**
* Makes sure default user and public role exist and the user is member of
* the role.
*/
@Override
public User getAnonUser() {
User defaultUser = userfacade.findByLogin(DEFAULT_USER_LOGIN);
if (defaultUser == null) {
defaultUser = new User();
defaultUser.setLogin(DEFAULT_USER_LOGIN);
defaultUser.setNick(DEFAULT_USER_LOGIN);
userfacade.create(defaultUser);
defaultUser.setSuperadmin(true);
}
return defaultUser;
}
}
...@@ -52,7 +52,6 @@ public class RoleBean implements RoleBeanLocal { ...@@ -52,7 +52,6 @@ public class RoleBean implements RoleBeanLocal {
return listRoles(eventBean.getCurrentEvent()); return listRoles(eventBean.getCurrentEvent());
} }
@Override
@RolesAllowed("ROLE_MANAGEMENT/READ") @RolesAllowed("ROLE_MANAGEMENT/READ")
public List<Role> listRoles(LanEvent event) { public List<Role> listRoles(LanEvent event) {
return roleFacade.findAll(event); return roleFacade.findAll(event);
...@@ -139,8 +138,8 @@ public class RoleBean implements RoleBeanLocal { ...@@ -139,8 +138,8 @@ public class RoleBean implements RoleBeanLocal {
@Override @Override
@RolesAllowed("ROLE_MANAGEMENT/READ") @RolesAllowed("ROLE_MANAGEMENT/READ")
public Role find(int id, LanEvent event) { public Role find(int id) {
return roleFacade.find(event.getId(), id); return roleFacade.find(eventBean.getCurrentEvent(), id);
} }
} }
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed; import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.LocalBean; import javax.ejb.LocalBean;
...@@ -23,17 +25,20 @@ import fi.insomnia.bortal.facade.UserFacade; ...@@ -23,17 +25,20 @@ import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.facade.UserImageFacade; import fi.insomnia.bortal.facade.UserImageFacade;
import fi.insomnia.bortal.model.GroupMembership; import fi.insomnia.bortal.model.GroupMembership;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.PlaceGroup;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.model.UserImage; import fi.insomnia.bortal.model.UserImage;
import fi.insomnia.bortal.util.MailMessage; import fi.insomnia.bortal.util.MailMessage;
import fi.insomnia.bortal.utilities.I18n; import fi.insomnia.bortal.utilities.I18n;
import fi.insomnia.bortal.utilities.PasswordFunctions;
/** /**
* Session Bean implementation class UserBean * Session Bean implementation class UserBean
*/ */
@LocalBean @LocalBean
@Stateless @Stateless
@DeclareRoles({ "USER/EXECUTE" })
public class UserBean implements UserBeanLocal { public class UserBean implements UserBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(UserBean.class); private static final Logger logger = LoggerFactory.getLogger(UserBean.class);
...@@ -44,6 +49,7 @@ public class UserBean implements UserBeanLocal { ...@@ -44,6 +49,7 @@ public class UserBean implements UserBeanLocal {
*/ */
@EJB @EJB
private UserFacade userFacade; private UserFacade userFacade;
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
...@@ -66,6 +72,8 @@ public class UserBean implements UserBeanLocal { ...@@ -66,6 +72,8 @@ public class UserBean implements UserBeanLocal {
@EJB @EJB
private PermissionBeanLocal permbean; private PermissionBeanLocal permbean;
private GroupMembershipFacade gmfacade;
@Override @Override
@RolesAllowed("USER_MANAGEMENT/READ") @RolesAllowed("USER_MANAGEMENT/READ")
public List<User> getUsers() { public List<User> getUsers() {
...@@ -259,4 +267,41 @@ public class UserBean implements UserBeanLocal { ...@@ -259,4 +267,41 @@ public class UserBean implements UserBeanLocal {
public long getUsersCount(String search) { public long getUsersCount(String search) {
return userFacade.searchUserCount(search); return userFacade.searchUserCount(search);
} }
@Override
@RolesAllowed("USER/EXECUTE")
public boolean invite(String invitemail) {
List<User> usercheck = userFacade.findByEmail(invitemail.trim());
if (usercheck.size() > 0) {
return false;
}
User creator = permbean.getCurrentUser();
LanEvent ev = eventBean.getCurrentEvent();
PlaceGroup pg = new PlaceGroup(ev, Calendar.getInstance(), Calendar.getInstance(), false);
pg.setCreator(creator);
pg.setName("Invitebean");
String token = PasswordFunctions.generateRandomString(30, PasswordFunctions.ALL_CHARS);
pg.getMembers().add(new GroupMembership(ev, pg, null, token));
creator.getPlaceGroups().add(pg);
return true;
}
@Override
public GroupMembership findToken(String token) {
return gmfacade.findToken(token);
}
@Override
public void createFromToken(User user, GroupMembership gm) {
gm = gmfacade.merge(gm);
gm.setUser(user);
gm.setInviteAccepted(Calendar.getInstance());
userFacade.create(user);
}
} }
...@@ -12,7 +12,7 @@ import java.util.Date; ...@@ -12,7 +12,7 @@ import java.util.Date;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.Local; import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.jms.JMSException; import javax.jms.JMSException;
...@@ -33,7 +33,7 @@ import fi.insomnia.bortal.util.MailMessage; ...@@ -33,7 +33,7 @@ import fi.insomnia.bortal.util.MailMessage;
* Session Bean implementation class UtilBean * Session Bean implementation class UtilBean
*/ */
@Stateless @Stateless
@Local @LocalBean
public class UtilBean implements UtilBeanLocal { public class UtilBean implements UtilBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(UtilBean.class); private static final Logger logger = LoggerFactory.getLogger(UtilBean.class);
......
...@@ -23,10 +23,12 @@ public abstract class EventChildGenericFacade<T extends EventChildInterface> { ...@@ -23,10 +23,12 @@ public abstract class EventChildGenericFacade<T extends EventChildInterface> {
private static final Logger logger = LoggerFactory.getLogger(EventChildGenericFacade.class); private static final Logger logger = LoggerFactory.getLogger(EventChildGenericFacade.class);
public T find(Integer eventId, Integer id) { public T find(LanEvent e, Integer id) {
return find(e.getId(), id);
}
public T find(Integer eventId, Integer id) {
EventPk pk = new EventPk(eventId, id); EventPk pk = new EventPk(eventId, id);
return find(pk); return find(pk);
} }
...@@ -42,7 +44,7 @@ public abstract class EventChildGenericFacade<T extends EventChildInterface> { ...@@ -42,7 +44,7 @@ public abstract class EventChildGenericFacade<T extends EventChildInterface> {
return q.getSingleResult(); return q.getSingleResult();
} }
private Class<T> entClass; private final Class<T> entClass;
public EventChildGenericFacade(Class<T> entityClass) { public EventChildGenericFacade(Class<T> entityClass) {
this.entClass = entityClass; this.entClass = entityClass;
......
...@@ -121,6 +121,7 @@ public abstract class GenericFacade<PK, T extends ModelInterface> { ...@@ -121,6 +121,7 @@ public abstract class GenericFacade<PK, T extends ModelInterface> {
cq.select(root); cq.select(root);
TypedQuery<T> q = getEm().createQuery(cq); TypedQuery<T> q = getEm().createQuery(cq);
if (pagesize > 0) { if (pagesize > 0) {
logger.debug("Setting pagesize {} at facade", pagesize);
q.setFirstResult(page * pagesize); q.setFirstResult(page * pagesize);
q.setMaxResults(pagesize); q.setMaxResults(pagesize);
......
...@@ -28,6 +28,7 @@ public class GroupMembershipFacade extends EventChildGenericFacade<GroupMembersh ...@@ -28,6 +28,7 @@ public class GroupMembershipFacade extends EventChildGenericFacade<GroupMembersh
super(GroupMembership.class); super(GroupMembership.class);
} }
@Override
protected EntityManager getEm() { protected EntityManager getEm() {
return em; return em;
} }
...@@ -53,16 +54,24 @@ public class GroupMembershipFacade extends EventChildGenericFacade<GroupMembersh ...@@ -53,16 +54,24 @@ public class GroupMembershipFacade extends EventChildGenericFacade<GroupMembersh
} }
public List<GroupMembership> findMemberOrCreator(LanEvent event, User user) { public List<GroupMembership> findMemberOrCreator(LanEvent event, User user) {
TypedQuery<GroupMembership> p = em.createQuery("select gm from GroupMembership gm where gm.id.eventId = :eventid and (gm.placeGroup.creator = :user or gm.user = :user) order by gm.placeReservation.name",GroupMembership.class); TypedQuery<GroupMembership> p = em.createQuery("select gm from GroupMembership gm where gm.id.eventId = :eventid and (gm.placeGroup.creator = :user or gm.user = :user) order by gm.placeReservation.name", GroupMembership.class);
p.setParameter("eventid", event.getId()); p.setParameter("eventid", event.getId());
p.setParameter("user", user); p.setParameter("user", user);
return p.getResultList(); return p.getResultList();
} }
public List<GroupMembership> findMemberships(LanEvent event, User user) { public List<GroupMembership> findMemberships(LanEvent event, User user) {
TypedQuery<GroupMembership> p = em.createQuery("select gm from GroupMembership gm where gm.id.eventId = :eventid and gm.user = :user",GroupMembership.class); TypedQuery<GroupMembership> p = em.createQuery("select gm from GroupMembership gm where gm.id.eventId = :eventid and gm.user = :user", GroupMembership.class);
p.setParameter("eventid", event.getId()); p.setParameter("eventid", event.getId());
p.setParameter("user", user); p.setParameter("user", user);
return p.getResultList(); return p.getResultList();
} }
public GroupMembership findToken(String token) {
TypedQuery<GroupMembership> q = em.createQuery("select gm from GroupMembership gm where gm.inviteEmail = :mail", GroupMembership.class);
q.setParameter("mail", token);
return getSingleNullableResult(q);
}
} }
package fi.insomnia.bortal.facade; package fi.insomnia.bortal.facade;
import java.math.BigDecimal; import java.util.Calendar;
import java.util.List; import java.util.List;
import javax.ejb.LocalBean; import javax.ejb.LocalBean;
...@@ -9,13 +9,17 @@ import javax.persistence.EntityManager; ...@@ -9,13 +9,17 @@ import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query; import javax.persistence.Query;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Place; import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Place_;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
@Stateless @Stateless
...@@ -30,15 +34,17 @@ public class PlaceFacade extends EventChildGenericFacade<Place> { ...@@ -30,15 +34,17 @@ public class PlaceFacade extends EventChildGenericFacade<Place> {
super(Place.class); super(Place.class);
} }
@Override
protected EntityManager getEm() { protected EntityManager getEm() {
return em; return em;
} }
public boolean reservePlace(Place p, User reserver) { //
boolean ret = p.reserve(reserver); // public boolean reservePlace(Place p, User reserver) {
merge(p); // boolean ret = p.reserve(reserver);
return ret; // merge(p);
} // return ret;
// }
// //
// public List<Place> find(LanEvent event, List<Integer> placeIds) { // public List<Place> find(LanEvent event, List<Integer> placeIds) {
...@@ -55,7 +61,16 @@ public class PlaceFacade extends EventChildGenericFacade<Place> { ...@@ -55,7 +61,16 @@ public class PlaceFacade extends EventChildGenericFacade<Place> {
// } // }
public void timeoutPlaces() { public void timeoutPlaces() {
TypedQuery<Place> q = em.createQuery("SELECT p from Place p where p.releaseTime < CURRENT_TIMESTAMP", Place.class); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class);
Root<Place> root = cq.from(Place.class);
cq.select(root);
cq.where(cb.lessThan(root.get(Place_.releaseTime), Calendar.getInstance()));
TypedQuery<Place> q = getEm().createQuery(cq);
int updated = timeoutPlaces(q.getResultList(), true); int updated = timeoutPlaces(q.getResultList(), true);
if (updated > 0) { if (updated > 0) {
...@@ -77,14 +92,25 @@ public class PlaceFacade extends EventChildGenericFacade<Place> { ...@@ -77,14 +92,25 @@ public class PlaceFacade extends EventChildGenericFacade<Place> {
return updated; return updated;
} }
public Long countSelectable(EventMap map) { public Long countSelectable(EventMap map) {
if (map == null) { if (map == null) {
return null; return null;
} }
TypedQuery<Place> q = em.createQuery("SELECT p from Place p where p.map = :map and p.releaseTime is null", Place.class);
q.setParameter("map", map); CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class);
Root<Place> root = cq.from(Place.class);
cq.select(root);
cq.where(
cb.and(
cb.equal(root.get(Place_.map), map),
cb.isNull(root.get(Place_.releaseTime))
));
TypedQuery<Place> q = getEm().createQuery(cq);
long count = 0; long count = 0;
for (Place p : q.getResultList()) { for (Place p : q.getResultList()) {
if (p.getGroup() == null) { if (p.getGroup() == null) {
...@@ -94,27 +120,43 @@ public class PlaceFacade extends EventChildGenericFacade<Place> { ...@@ -94,27 +120,43 @@ public class PlaceFacade extends EventChildGenericFacade<Place> {
return count; return count;
} }
public boolean releasePlace(User user, Place place) { public List<Place> findUsersReservations(LanEvent event, User user) {
boolean ret = place.release(user); CriteriaBuilder cb = getEm().getCriteriaBuilder();
merge(place); CriteriaQuery<Place> cq = cb.createQuery(Place.class);
return ret;
} Root<Place> root = cq.from(Place.class);
cq.select(root);
cq.where(
cb.and(
cb.equal(root.get(Place_.event), event),
cb.equal(root.get(Place_.currentUser), user)
));
TypedQuery<Place> q = getEm().createQuery(cq);
public List<Place> findUsersReservations(EventMap map, User user) {
TypedQuery<Place> q = em.createQuery("select p from Place p where p.map = :map and p.currentUser = :user and p.releaseTime is not null", Place.class);
q.setParameter("map", map);
q.setParameter("user", user);
return q.getResultList(); return q.getResultList();
} }
public void releasePlaces(User user) { public void releasePlaces(User user) {
TypedQuery<Place> q = em.createQuery("SELECT p from Place p where p.releaseTime < CURRENT_TIMESTAMP and currentUser = :user", Place.class); CriteriaBuilder cb = getEm().getCriteriaBuilder();
q.setParameter("user", user); CriteriaQuery<Place> cq = cb.createQuery(Place.class);
Root<Place> root = cq.from(Place.class);
cq.select(root);
cq.where(
cb.and(
cb.lessThan(root.get(Place_.releaseTime), Calendar.getInstance()),
cb.equal(root.get(Place_.currentUser), user)
));
TypedQuery<Place> q = getEm().createQuery(cq);
int updated = timeoutPlaces(q.getResultList(), false); int updated = timeoutPlaces(q.getResultList(), false);
logger.debug("Released {} places from user {}", updated, user); logger.debug("Released {} places from user {}", updated, user);
} }
public int setBuyable(EventMap map, String like, boolean b) { public int setBuyable(EventMap map, String like, boolean b) {
Query q = em.createQuery("UPDATE Place p set p.buyable = :b where p.name like :like"); Query q = em.createQuery("UPDATE Place p set p.buyable = :b where p.name like :like");
q.setParameter("b", b); q.setParameter("b", b);
q.setParameter("like", like); q.setParameter("like", like);
...@@ -122,6 +164,4 @@ public class PlaceFacade extends EventChildGenericFacade<Place> { ...@@ -122,6 +164,4 @@ public class PlaceFacade extends EventChildGenericFacade<Place> {
} }
} }
...@@ -5,9 +5,13 @@ import javax.ejb.Stateless; ...@@ -5,9 +5,13 @@ import javax.ejb.Stateless;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Reader; import fi.insomnia.bortal.model.Reader;
import fi.insomnia.bortal.model.Reader_;
@Stateless @Stateless
@LocalBean @LocalBean
...@@ -20,14 +24,23 @@ public class ReaderFacade extends EventChildGenericFacade<Reader> { ...@@ -20,14 +24,23 @@ public class ReaderFacade extends EventChildGenericFacade<Reader> {
super(Reader.class); super(Reader.class);
} }
@Override
protected EntityManager getEm() { protected EntityManager getEm() {
return em; return em;
} }
public Reader findByIdent(LanEvent event, String reader) { public Reader findByIdent(LanEvent event, String reader) {
TypedQuery<Reader> q = em.createQuery("select r from Reader r where r.id.eventId = :eventid and r.identification = :ident", Reader.class); CriteriaBuilder cb = getEm().getCriteriaBuilder();
q.setParameter("eventid", event.getId()); CriteriaQuery<Reader> cq = cb.createQuery(Reader.class);
q.setParameter("ident", reader); Root<Reader> root = cq.from(Reader.class);
cq.select(root);
TypedQuery<Reader> q = getEm().createQuery(cq);
cq.where(
cb.and(
cb.equal(root.get(Reader_.event), event),
cb.equal(root.get(Reader_.identification), reader)));
return getSingleNullableResult(q); return getSingleNullableResult(q);
} }
......
...@@ -12,6 +12,9 @@ import javax.persistence.EntityManager; ...@@ -12,6 +12,9 @@ import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.Permission; import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.RoleRight; import fi.insomnia.bortal.model.RoleRight;
...@@ -22,16 +25,21 @@ public class RoleRightFacade extends EventChildGenericFacade<RoleRight> { ...@@ -22,16 +25,21 @@ public class RoleRightFacade extends EventChildGenericFacade<RoleRight> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
private static final Logger logger = LoggerFactory.getLogger(RoleRightFacade.class);
public RoleRightFacade() { public RoleRightFacade() {
super(RoleRight.class); super(RoleRight.class);
} }
@Override
protected EntityManager getEm() { protected EntityManager getEm() {
return em; return em;
} }
public RoleRight find(Permission permission, Role role) { public RoleRight find(Permission permission, Role role) {
if (permission == null || role == null) {
return null;
}
TypedQuery<RoleRight> q = this.getEm().createNamedQuery("RoleRight.findByRightAndRole", RoleRight.class); TypedQuery<RoleRight> q = this.getEm().createNamedQuery("RoleRight.findByRightAndRole", RoleRight.class);
q.setParameter("permission", permission); q.setParameter("permission", permission);
q.setParameter("role", role); q.setParameter("role", role);
...@@ -39,15 +47,13 @@ public class RoleRightFacade extends EventChildGenericFacade<RoleRight> { ...@@ -39,15 +47,13 @@ public class RoleRightFacade extends EventChildGenericFacade<RoleRight> {
} }
public List<RoleRight> find(Collection<Role> roles, Permission permission) { public List<RoleRight> find(Collection<Role> roles, Permission permission) {
if(roles.size() == 0) if (roles.size() == 0) {
{
return new ArrayList<RoleRight>(); return new ArrayList<RoleRight>();
} }
TypedQuery<RoleRight> q = getEm().createNamedQuery("RoleRight.findByRolesForPermission", RoleRight.class); TypedQuery<RoleRight> q = getEm().createNamedQuery("RoleRight.findByRolesForPermission", RoleRight.class);
Set<Integer> roleids = new HashSet<Integer>(); Set<Integer> roleids = new HashSet<Integer>();
for(Role r: roles) for (Role r : roles) {
{
roleids.add(r.getId().getId()); roleids.add(r.getId().getId());
} }
Integer eventId = roles.iterator().next().getEvent().getId(); Integer eventId = roles.iterator().next().getEvent().getId();
......
...@@ -85,4 +85,10 @@ public class UserFacade extends GenericFacade<Integer, User> { ...@@ -85,4 +85,10 @@ public class UserFacade extends GenericFacade<Integer, User> {
return this.searchCount(query, NAMEFIELDS); return this.searchCount(query, NAMEFIELDS);
} }
public List<User> findByEmail(String email) {
TypedQuery<User> q = em.createQuery("SELECT u from User u where u.email = :usr", User.class);
q.setParameter("usr", email);
return q.getResultList();
}
} }
...@@ -23,6 +23,6 @@ public interface AccountEventBeanLocal { ...@@ -23,6 +23,6 @@ public interface AccountEventBeanLocal {
List<Role> getRolesFromAccountEvents(User u); List<Role> getRolesFromAccountEvents(User u);
List<AccountEvent> shopCash(User shoppingUser, Map<Product, BigDecimal> shopMap, boolean buyInstant); List<AccountEvent> shopCash(User shoppingUser, Map<Product, BigDecimal> shopMap, boolean buyInstant) throws PermissionDeniedException;
} }
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Calendar; import java.util.Calendar;
...@@ -17,22 +17,18 @@ import fi.insomnia.bortal.model.User; ...@@ -17,22 +17,18 @@ import fi.insomnia.bortal.model.User;
@Local @Local
public interface BillBeanLocal { public interface BillBeanLocal {
Bill findById( int id); Bill findById(int id) throws PermissionDeniedException;
Bill createEmptyBill(User shoppingUser); Bill createEmptyBill(User shoppingUser) throws PermissionDeniedException;
BillLine addProductToBill(Bill bill, Product product, BigDecimal count); BillLine addProductToBill(Bill bill, Product product, BigDecimal count) throws PermissionDeniedException;
List<Bill> findAll(); List<Bill> findAll();
Collection<BillSummary> getBillLineSummary(); Collection<BillSummary> getBillLineSummary();
void markPaid(Bill bill, Calendar when); void markPaid(Bill bill, Calendar when);
void getPdfBillStream(Bill bill, OutputStream ostream); void getPdfBillStream(Bill bill, OutputStream ostream);
} }
...@@ -17,11 +17,11 @@ public interface CardTemplateBeanLocal { ...@@ -17,11 +17,11 @@ public interface CardTemplateBeanLocal {
CardTemplate findById(Integer id); CardTemplate findById(Integer id);
PrintedCard checkPrintedCard(User user); PrintedCard checkPrintedCard(User user) throws PermissionDeniedException;
void checkAllUsersCardRights(); void checkAllUsersCardRights() throws PermissionDeniedException;
PrintedCard setRfidUid(String tag, User user); PrintedCard setRfidUid(String tag, User user) throws PermissionDeniedException;
PrintedCard setRfidUid(String tag, PrintedCard card); PrintedCard setRfidUid(String tag, PrintedCard card);
......
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import java.math.BigDecimal;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.model.Discount; import fi.insomnia.bortal.model.Discount;
import fi.insomnia.bortal.model.Product;
@Local @Local
public interface DiscountBeanLocal { public interface DiscountBeanLocal {
Discount save(Discount discount); Discount save(Discount discount);
Discount create(String discountdesc); Discount create(String discountdesc);
} }
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
...@@ -11,9 +12,9 @@ public interface EventBeanLocal { ...@@ -11,9 +12,9 @@ public interface EventBeanLocal {
LanEvent getCurrentEvent(); LanEvent getCurrentEvent();
LanEvent mergeChanges(LanEvent event); LanEvent mergeChanges(LanEvent event) throws PermissionDeniedException;
void create(LanEvent event); void create(LanEvent event) throws PermissionDeniedException;
String flushCache(); String flushCache();
} }
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.LanEvent;
@Local @Local
public interface EventMapBeanLocal { public interface EventMapBeanLocal {
EventMap saveMap(EventMap eventmap); EventMap saveMap(EventMap eventmap);
EventMap create(String mapname); EventMap create(String mapname) throws PermissionDeniedException;
void sendImage(int destId, byte[] imagedata); void sendImage(int destId, byte[] imagedata);
......
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import java.util.List; import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
...@@ -8,11 +9,11 @@ import fi.insomnia.bortal.model.EventOrganiser; ...@@ -8,11 +9,11 @@ import fi.insomnia.bortal.model.EventOrganiser;
@Local @Local
public interface EventOrganiserBeanLocal { public interface EventOrganiserBeanLocal {
void save(EventOrganiser eventorg); void save(EventOrganiser eventorg) throws PermissionDeniedException;
void fatalPermission(EventOrganiser eventorg); void fatalPermission(EventOrganiser eventorg) throws PermissionDeniedException;
List<EventOrganiser> getEventOrganisers(); List<EventOrganiser> getEventOrganisers() throws PermissionDeniedException;
EventOrganiser create(String createorgname); EventOrganiser create(String createorgname);
......
package fi.insomnia.bortal.beans;
import javax.ejb.Local;
import fi.insomnia.bortal.model.LogEntry;
import fi.insomnia.bortal.model.User;
@Local
public interface LoggingBeanLocal {
LogEntry logMessage(SecurityLogType paramType, User user, String... description);
}
package fi.insomnia.bortal.beans;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.NewsGroup;
@Local
public interface NewsBeanLocal {
NewsGroup findByName(String groupname);
List<NewsGroup> findAll();
NewsGroup findById(int newsgroupid);
NewsGroup merge(NewsGroup newsgroup);
void createNewsgroup(NewsGroup newsgroup);
}
package fi.insomnia.bortal.beans;
import javax.ejb.Local;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.model.User;
@Local
public interface PermissionBeanLocal {
boolean hasPermission(Permission target, RolePermission permission);
User getCurrentUser();
boolean isLoggedIn();
boolean isCurrentUser(User thisuser);
void fatalPermission(Permission target, RolePermission permission, Object... failmessage) throws PermissionDeniedException;
void fatalNotLoggedIn() throws PermissionDeniedException;
User getAnonUser();
// boolean hasPermission(String perm);
}
package fi.insomnia.bortal.beans;
import fi.insomnia.bortal.model.User;
public class PermissionDeniedException extends Exception {
public PermissionDeniedException(LoggingBeanLocal bean, User user, String message) {
super(message);
bean.logMessage(SecurityLogType.permissionDenied, user, this.getMessage());
}
/**
*
*/
private static final long serialVersionUID = -5845504817243929548L;
}
...@@ -13,7 +13,6 @@ import fi.insomnia.bortal.exceptions.BortalCatchableException; ...@@ -13,7 +13,6 @@ import fi.insomnia.bortal.exceptions.BortalCatchableException;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.EventPk; import fi.insomnia.bortal.model.EventPk;
import fi.insomnia.bortal.model.Place; import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
/** /**
...@@ -24,28 +23,22 @@ import fi.insomnia.bortal.model.User; ...@@ -24,28 +23,22 @@ import fi.insomnia.bortal.model.User;
// @RemoteDestination // @RemoteDestination
public interface PlaceBeanLocal { public interface PlaceBeanLocal {
Place mergeChanges(Place place);
Place findPlace(EventMap e, int x, int y); Place findPlace(EventMap e, int x, int y);
void releaseUsersPlaces();
boolean reservePlace(Place place, User user); boolean reservePlace(Place place, User user);
boolean releasePlace(Place place, User user);
BigDecimal totalReservationPrice(EventMap e, Place newPlace);
boolean buySelectedPlaces(EventMap e) throws BortalCatchableException;
int setBuyable(EventMap map, String buyableLike, boolean b); int setBuyable(EventMap map, String buyableLike, boolean b);
Place find(EventPk id); Place find(EventPk id);
void checkMemberships(); boolean releasePlace(Place place);
Place mergeChanges(Place place);
boolean buySelectedPlaces(User user) throws BortalCatchableException, PermissionDeniedException;
Place lockPlaces(User rowData, Place place); BigDecimal totalReservationPrice(User user, Place newPlace) throws PermissionDeniedException;
void lockPlaceProduct(User user, Product prod, BigDecimal quantity); void releaseUsersPlaces(User user) throws PermissionDeniedException;
} }
...@@ -13,13 +13,13 @@ public interface PlaceGroupBeanLocal { ...@@ -13,13 +13,13 @@ public interface PlaceGroupBeanLocal {
// PlaceGroup createPlaceGroup(User currentUser); // PlaceGroup createPlaceGroup(User currentUser);
// GroupMembership createGroupMembership(PlaceGroup pg, Place p); // GroupMembership createGroupMembership(PlaceGroup pg, Place p);
// List<GroupMembership> getMemberships(User user); // List<GroupMembership> getMemberships(User user);
boolean associateToToken(User user, String token); boolean associateToToken(User user, String token);
void releaseAndGenerateToken(GroupMembership gmem); void releaseAndGenerateToken(GroupMembership gmem) throws PermissionDeniedException;
void getGroupMembershipPdf(List<GroupMembership> memberships, OutputStream ostream); void getGroupMembershipPdf(List<GroupMembership> memberships, OutputStream ostream);
......
...@@ -8,7 +8,6 @@ import javax.ejb.Local; ...@@ -8,7 +8,6 @@ import javax.ejb.Local;
import fi.insomnia.bortal.model.AccountEvent; import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.Discount; import fi.insomnia.bortal.model.Discount;
import fi.insomnia.bortal.model.Product; import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
@Local @Local
......
...@@ -11,15 +11,10 @@ public interface ReaderBeanLocal { ...@@ -11,15 +11,10 @@ public interface ReaderBeanLocal {
ReaderEvent checkTag(String reader, String tag, String hash); ReaderEvent checkTag(String reader, String tag, String hash);
ReaderEvent assocTagToPlacecode(String tag, String readerIdent, String placecode) throws BortalCatchableException, PermissionDeniedException;
ReaderEvent assocTagToPlacecode(String tag, String readerIdent, String placecode) throws BortalCatchableException;
ReaderEvent assocTagToCard(String tag, String readerIdent, PrintedCard card); ReaderEvent assocTagToCard(String tag, String readerIdent, PrintedCard card);
ReaderEvent merge(ReaderEvent e); ReaderEvent merge(ReaderEvent e);
} }
...@@ -9,7 +9,6 @@ import java.util.List; ...@@ -9,7 +9,6 @@ import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.RoleRight; import fi.insomnia.bortal.model.RoleRight;
...@@ -32,9 +31,6 @@ public interface RoleBeanLocal { ...@@ -32,9 +31,6 @@ public interface RoleBeanLocal {
public List<Role> getPossibleParents(Role role); public List<Role> getPossibleParents(Role role);
public List<Role> listRoles(LanEvent event); public Role find(int val);
public Role find(int val, LanEvent event);
} }
...@@ -4,8 +4,7 @@ import java.util.List; ...@@ -4,8 +4,7 @@ import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.enums.Permission; import fi.insomnia.bortal.model.GroupMembership;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.model.UserImage; import fi.insomnia.bortal.model.UserImage;
...@@ -19,28 +18,19 @@ public interface UserBeanLocal { ...@@ -19,28 +18,19 @@ public interface UserBeanLocal {
User getUser(String nick); User getUser(String nick);
User mergeChanges(User currentUser); User mergeChanges(User currentUser) throws PermissionDeniedException;
User getCurrentUser();
User getAnonUser();
boolean hasPermission(Permission target, RolePermission permission);
boolean isCurrentUser(User thisuser);
// boolean hasCurrentUserPermission(Permission userManagement, // boolean hasCurrentUserPermission(Permission userManagement,
// RolePermission execute); // RolePermission execute);
boolean isLoggedIn(); // void fatalPermission(Permission target, RolePermission permission,
// Object... failmessage);
void fatalPermission(Permission target, RolePermission permission, Object... failmessage); // void fatalNotLoggedIn();
void fatalNotLoggedIn(); UserImage uploadImage(Integer userid, String contentType, byte[] image, String filename, String description) throws PermissionDeniedException;
UserImage uploadImage(Integer userid, String contentType, byte[] image, String filename, String description); UserImage findUserImage(int id) throws PermissionDeniedException;
UserImage findUserImage(int id);
List<User> searchName(String name); List<User> searchName(String name);
...@@ -52,10 +42,16 @@ public interface UserBeanLocal { ...@@ -52,10 +42,16 @@ public interface UserBeanLocal {
boolean initPasswordReset(User user, String hash, String mailpath); boolean initPasswordReset(User user, String hash, String mailpath);
List<Role> findUsersRoles(User u); List<Role> findUsersRoles(User u) throws PermissionDeniedException;
User findById(Integer integer); User findById(Integer integer);
long getUsersCount(String search); long getUsersCount(String search);
boolean invite(String invitemail);
GroupMembership findToken(String token);
void createFromToken(User user, GroupMembership gm);
} }
...@@ -9,9 +9,8 @@ public interface UtilBeanLocal { ...@@ -9,9 +9,8 @@ public interface UtilBeanLocal {
boolean sendMail(MailMessage message); boolean sendMail(MailMessage message);
boolean convertImage(User user); boolean convertImage(User user) throws PermissionDeniedException;
void checkAllUsersImages();
void checkAllUsersImages() throws PermissionDeniedException;
} }
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="ejbModule"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry combineaccessrules="false" kind="src" path="/LanBortalAuthModuleClient"/>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.sun.enterprise.jst.server.runtimeTarget/GlassFish Server Open Source Edition 3 (Java EE 6)"/>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.sun.enterprise.jst.server.runtimeTarget/GlassFish 3.1">
<attributes>
<attribute name="owner.project.facets" value="jst.utility"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/JVM 1.6">
<attributes>
<attribute name="owner.project.facets" value="java"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="/LanBortalUtilities"/>
<classpathentry kind="output" path="ejbModule"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<graniteProperties version="2.0">
<gas3 uid="uid" as3TypeFactory="org.granite.generator.as3.DefaultAs3TypeFactory" entityFactory="org.granite.generator.as3.DefaultEntityFactory" remoteDestinationFactory="org.granite.generator.as3.DefaultRemoteDestinationFactory" debugEnabled="false" flexConfig="false" externalizeLong="false" externalizeBigInteger="false" externalizeBigDecimal="false">
<source path="ejbModule" includes="fi/insomnia/bortal/beans/flash/**" excludes="" output="as3;"/>
<project path="LanBortalAuthModuleClient"/>
<project path="LanBortalDatabase"/>
<classpath path="/Users/tuomari/Documents/git/bortal/code/LanBortalWeb"/>
<template kind="ENTITY" uris="class:org/granite/generator/template/entity.gsp;class:org/granite/generator/template/entityBase.gsp"/>
<template kind="BEAN" uris="class:org/granite/generator/template/bean.gsp;class:org/granite/generator/template/beanBase.gsp"/>
<template kind="ENUM" uris="class:org/granite/generator/template/enum.gsp"/>
<template kind="REMOTE_DESTINATION" uris="class:org/granite/generator/template/remote.gsp;class:org/granite/generator/template/remoteBase.gsp"/>
<template kind="INTERFACE" uris="class:org/granite/generator/template/interface.gsp"/>
<transformer type="org.granite.generator.as3.JavaAs3GroovyTransformer"/>
</gas3>
</graniteProperties>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>LanBortalBeansClient</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
#Wed Oct 27 00:25:47 EEST 2010
eclipse.preferences.version=1
encoding/<project>=UTF-8
#Sun Mar 07 12:30:50 EET 2010
eclipse.preferences.version=1
formatter_profile=_InsomniaConventions
formatter_settings_version=11
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="LanBortalBeansClient">
<wb-resource deploy-path="/" source-path="/ejbModule"/>
</wb-module>
</project-modules>
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<runtime name="GlassFish 3.1"/>
<fixed facet="jst.utility"/>
<fixed facet="jst.java"/>
<installed facet="jst.utility" version="1.0"/>
<installed facet="jst.java" version="1.6"/>
</faceted-project>
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
public interface AccessRightBeanLocal {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
public interface BillBeanLocal {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
import fi.insomnia.bortal.model.LanEvent;
public interface EventBeanLocal {
function get currentEvent():LanEvent;
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (EventBeanLocal.as).
*/
package fi.insomnia.bortal.beans {
import mx.messaging.ChannelSet;
import mx.messaging.config.ServerConfig;
import mx.rpc.remoting.mxml.RemoteObject;
public class EventBeanLocalBase extends RemoteObject {
private var _initRemote:Boolean = false;
private function initRemote():void {
destination = "";
channelSet = new ChannelSet();
channelSet.addChannel(ServerConfig.getChannel(""));
_initRemote = true;
}
public function getEvent(arg0:Number):void {
if (!_initRemote)
initRemote();
getOperation("getEvent").send(arg0);
}
public function getEventByHostname(arg0:String):void {
if (!_initRemote)
initRemote();
getOperation("getEventByHostname").send(arg0);
}
public function addOperationListener(op:Function, type:String, handler:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
if (op == this.getEvent)
this.getOperation("getEvent").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.getEventByHostname)
this.getOperation("getEventByHostname").addEventListener(type, handler, useCapture, priority, useWeakReference);
}
public function removeOperationListener(op:Function, event:String, handler:Function):void {
if (op == this.getEvent)
this.getOperation("getEvent").removeEventListener(event, handler);
if (op == this.getEventByHostname)
this.getOperation("getEventByHostname").removeEventListener(event, handler);
}
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
public interface EventStatusBeanLocal {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
public interface JaasBeanLocal {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
import fi.insomnia.bortal.RealmBeanRemote;
public interface JaasBeanRemote extends RealmBeanRemote {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
public interface PlaceBeanLocal {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (PlaceBeanLocal.as).
*/
package fi.insomnia.bortal.beans {
import fi.insomnia.bortal.model.Place;
import mx.messaging.ChannelSet;
import mx.messaging.config.ServerConfig;
import mx.rpc.remoting.mxml.RemoteObject;
public class PlaceBeanLocalBase extends RemoteObject {
private var _initRemote:Boolean = false;
private function initRemote():void {
destination = "";
channelSet = new ChannelSet();
channelSet.addChannel(ServerConfig.getChannel("graniteamf"));
_initRemote = true;
}
public function mergeChanges(arg0:Place):void {
if (!_initRemote)
initRemote();
getOperation("mergeChanges").send(arg0);
}
public function addOperationListener(op:Function, type:String, handler:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
if (op == this.mergeChanges)
this.getOperation("mergeChanges").addEventListener(type, handler, useCapture, priority, useWeakReference);
}
public function removeOperationListener(op:Function, event:String, handler:Function):void {
if (op == this.mergeChanges)
this.getOperation("mergeChanges").removeEventListener(event, handler);
}
}
}
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
public interface PlaceMapBeanLocal {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (PlaceMapBeanLocal.as).
*/
package fi.insomnia.bortal.beans {
import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.User;
import java.io.OutputStream;
import mx.collections.ListCollectionView;
import mx.messaging.ChannelSet;
import mx.messaging.config.ServerConfig;
import mx.rpc.remoting.mxml.RemoteObject;
public class PlaceMapBeanLocalBase extends RemoteObject {
private var _initRemote:Boolean = false;
private function initRemote():void {
destination = "";
channelSet = new ChannelSet();
channelSet.addChannel(ServerConfig.getChannel("graniteamf"));
_initRemote = true;
}
public function printPlaceMapToStream(arg0:OutputStream, arg1:String, arg2:Number, arg3:ListCollectionView):void {
if (!_initRemote)
initRemote();
getOperation("printPlaceMapToStream").send(arg0, arg1, arg2, arg3);
}
public function getSelectPlaceMapUrl(arg0:EventMap, arg1:ListCollectionView, arg2:User):void {
if (!_initRemote)
initRemote();
getOperation("getSelectPlaceMapUrl").send(arg0, arg1, arg2);
}
public function selectablePlaceCount(arg0:User):void {
if (!_initRemote)
initRemote();
getOperation("selectablePlaceCount").send(arg0);
}
public function addOperationListener(op:Function, type:String, handler:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
if (op == this.printPlaceMapToStream)
this.getOperation("printPlaceMapToStream").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.getSelectPlaceMapUrl)
this.getOperation("getSelectPlaceMapUrl").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.selectablePlaceCount)
this.getOperation("selectablePlaceCount").addEventListener(type, handler, useCapture, priority, useWeakReference);
}
public function removeOperationListener(op:Function, event:String, handler:Function):void {
if (op == this.printPlaceMapToStream)
this.getOperation("printPlaceMapToStream").removeEventListener(event, handler);
if (op == this.getSelectPlaceMapUrl)
this.getOperation("getSelectPlaceMapUrl").removeEventListener(event, handler);
if (op == this.selectablePlaceCount)
this.getOperation("selectablePlaceCount").removeEventListener(event, handler);
}
}
}
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
public interface ProductBeanLocal {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
public interface RoleBeanLocal {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
public interface SecurityBeanLocal {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
import org.granite.util.Enum;
[Bindable]
[RemoteClass(alias="fi.insomnia.bortal.beans.SecurityLogType")]
public class SecurityLogType extends Enum {
public static const permissionDenied:SecurityLogType = new SecurityLogType("permissionDenied", _);
public static const unknownException:SecurityLogType = new SecurityLogType("unknownException", _);
public static const genericMessage:SecurityLogType = new SecurityLogType("genericMessage", _);
function SecurityLogType(value:String = null, restrictor:* = null) {
super((value || permissionDenied.name), restrictor);
}
override protected function getConstants():Array {
return constants;
}
public static function get constants():Array {
return [permissionDenied, unknownException, genericMessage];
}
public static function valueOf(name:String):SecurityLogType {
return SecurityLogType(permissionDenied.constantOf(name));
}
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
public interface TestDataBeanLocal {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.beans {
import fi.insomnia.bortal.model.User;
import mx.collections.ListCollectionView;
public interface UserBeanLocal {
function get currentUser():User;
function get defaultUser():User;
function get users():ListCollectionView;
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (UserBeanLocal.as).
*/
package fi.insomnia.bortal.beans {
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.User;
import mx.messaging.ChannelSet;
import mx.messaging.config.ServerConfig;
import mx.rpc.remoting.mxml.RemoteObject;
public class UserBeanLocalBase extends RemoteObject {
private var _initRemote:Boolean = false;
private function initRemote():void {
destination = "";
channelSet = new ChannelSet();
channelSet.addChannel(ServerConfig.getChannel(""));
_initRemote = true;
}
public function hasPermission(arg0:Permission, arg1:User, arg2:RolePermission):void {
if (!_initRemote)
initRemote();
getOperation("hasPermission").send(arg0, arg1, arg2);
}
public function getUsers():void {
if (!_initRemote)
initRemote();
getOperation("getUsers").send();
}
public function mergeChanges(arg0:User):void {
if (!_initRemote)
initRemote();
getOperation("mergeChanges").send(arg0);
}
public function getUser(arg0:String):void {
if (!_initRemote)
initRemote();
getOperation("getUser").send(arg0);
}
public function getDefaultUser(arg0:Event):void {
if (!_initRemote)
initRemote();
getOperation("getDefaultUser").send(arg0);
}
public function createNewUser(arg0:String, arg1:String):void {
if (!_initRemote)
initRemote();
getOperation("createNewUser").send(arg0, arg1);
}
public function getCurrentUser(arg0:Event):void {
if (!_initRemote)
initRemote();
getOperation("getCurrentUser").send(arg0);
}
public function isCurrentUser(arg0:User):void {
if (!_initRemote)
initRemote();
getOperation("isCurrentUser").send(arg0);
}
public function addOperationListener(op:Function, type:String, handler:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
if (op == this.hasPermission)
this.getOperation("hasPermission").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.getUsers)
this.getOperation("getUsers").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.mergeChanges)
this.getOperation("mergeChanges").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.getUser)
this.getOperation("getUser").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.getDefaultUser)
this.getOperation("getDefaultUser").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.createNewUser)
this.getOperation("createNewUser").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.getCurrentUser)
this.getOperation("getCurrentUser").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.isCurrentUser)
this.getOperation("isCurrentUser").addEventListener(type, handler, useCapture, priority, useWeakReference);
}
public function removeOperationListener(op:Function, event:String, handler:Function):void {
if (op == this.hasPermission)
this.getOperation("hasPermission").removeEventListener(event, handler);
if (op == this.getUsers)
this.getOperation("getUsers").removeEventListener(event, handler);
if (op == this.mergeChanges)
this.getOperation("mergeChanges").removeEventListener(event, handler);
if (op == this.getUser)
this.getOperation("getUser").removeEventListener(event, handler);
if (op == this.getDefaultUser)
this.getOperation("getDefaultUser").removeEventListener(event, handler);
if (op == this.createNewUser)
this.getOperation("createNewUser").removeEventListener(event, handler);
if (op == this.getCurrentUser)
this.getOperation("getCurrentUser").removeEventListener(event, handler);
if (op == this.isCurrentUser)
this.getOperation("isCurrentUser").removeEventListener(event, handler);
}
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* NOTE: this file is only generated if it does not exist. You may safely put
* your custom code here.
*/
package fi.insomnia.bortal.beans.flash {
[RemoteClass(alias="fi.insomnia.bortal.beans.flash.FlashMapBeanLocal")]
public class FlashMapBeanLocal extends FlashMapBeanLocalBase {
}
}
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (FlashMapBeanLocal.as).
*/
package fi.insomnia.bortal.beans.flash {
import mx.messaging.ChannelSet;
import mx.messaging.config.ServerConfig;
import mx.rpc.remoting.mxml.RemoteObject;
public class FlashMapBeanLocalBase extends RemoteObject {
private var _initRemote:Boolean = false;
private function initRemote():void {
destination = "";
channelSet = new ChannelSet();
channelSet.addChannel(ServerConfig.getChannel("graniteamf"));
_initRemote = true;
}
public function log(arg0:Object):void {
if (!_initRemote)
initRemote();
getOperation("log").send(arg0);
}
public function testString(arg0:String):void {
if (!_initRemote)
initRemote();
getOperation("testString").send(arg0);
}
public function getMapBackground(arg0:Number):void {
if (!_initRemote)
initRemote();
getOperation("getMapBackground").send(arg0);
}
public function getMapPlaces(arg0:Number):void {
if (!_initRemote)
initRemote();
getOperation("getMapPlaces").send(arg0);
}
public function addOperationListener(op:Function, type:String, handler:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
if (op == this.log)
this.getOperation("log").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.testString)
this.getOperation("testString").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.getMapBackground)
this.getOperation("getMapBackground").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.getMapPlaces)
this.getOperation("getMapPlaces").addEventListener(type, handler, useCapture, priority, useWeakReference);
}
public function removeOperationListener(op:Function, event:String, handler:Function):void {
if (op == this.log)
this.getOperation("log").removeEventListener(event, handler);
if (op == this.testString)
this.getOperation("testString").removeEventListener(event, handler);
if (op == this.getMapBackground)
this.getOperation("getMapBackground").removeEventListener(event, handler);
if (op == this.getMapPlaces)
this.getOperation("getMapPlaces").removeEventListener(event, handler);
}
}
}
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* NOTE: this file is only generated if it does not exist. You may safely put
* your custom code here.
*/
package fi.insomnia.bortal.beans.flash {
[RemoteClass(alias="fi.insomnia.bortal.beans.flash.HelloWorldBeanLocal")]
public class HelloWorldBeanLocal extends HelloWorldBeanLocalBase {
}
}
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (HelloWorldBeanLocal.as).
*/
package fi.insomnia.bortal.beans.flash {
import mx.messaging.ChannelSet;
import mx.messaging.config.ServerConfig;
import mx.rpc.remoting.mxml.RemoteObject;
public class HelloWorldBeanLocalBase extends RemoteObject {
private var _initRemote:Boolean = false;
private function initRemote():void {
destination = "";
channelSet = new ChannelSet();
channelSet.addChannel(ServerConfig.getChannel("graniteamf"));
_initRemote = true;
}
public function hello(arg0:String):void {
if (!_initRemote)
initRemote();
getOperation("hello").send(arg0);
}
public function addOperationListener(op:Function, type:String, handler:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
if (op == this.hello)
this.getOperation("hello").addEventListener(type, handler, useCapture, priority, useWeakReference);
}
public function removeOperationListener(op:Function, event:String, handler:Function):void {
if (op == this.hello)
this.getOperation("hello").removeEventListener(event, handler);
}
}
}
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* NOTE: this file is only generated if it does not exist. You may safely put
* your custom code here.
*/
package fi.insomnia.bortal.beans.flash {
[Bindable]
[RemoteClass(alias="fi.insomnia.bortal.beans.flash.ObserveAllPublishAll")]
public class ObserveAllPublishAll extends ObserveAllPublishAllBase {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (ObserveAllPublishAll.as).
*/
package fi.insomnia.bortal.beans.flash {
import flash.utils.IDataInput;
import flash.utils.IDataOutput;
import flash.utils.IExternalizable;
[Bindable]
public class ObserveAllPublishAllBase implements IExternalizable {
public function readExternal(input:IDataInput):void {
}
public function writeExternal(output:IDataOutput):void {
}
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* NOTE: this file is only generated if it does not exist. You may safely put
* your custom code here.
*/
package fi.insomnia.bortal.beans.flash {
[RemoteClass(alias="fi.insomnia.bortal.beans.flash.RemoteLoggerLocal")]
public class RemoteLoggerLocal extends RemoteLoggerLocalBase {
}
}
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (RemoteLoggerLocal.as).
*/
package fi.insomnia.bortal.beans.flash {
import mx.messaging.ChannelSet;
import mx.messaging.config.ServerConfig;
import mx.rpc.remoting.mxml.RemoteObject;
public class RemoteLoggerLocalBase extends RemoteObject {
private var _initRemote:Boolean = false;
private function initRemote():void {
destination = "";
channelSet = new ChannelSet();
channelSet.addChannel(ServerConfig.getChannel("graniteamf"));
_initRemote = true;
}
public function debug(arg0:String):void {
if (!_initRemote)
initRemote();
getOperation("debug").send(arg0);
}
public function error(arg0:String):void {
if (!_initRemote)
initRemote();
getOperation("error").send(arg0);
}
public function info(arg0:String):void {
if (!_initRemote)
initRemote();
getOperation("info").send(arg0);
}
public function warn(arg0:String):void {
if (!_initRemote)
initRemote();
getOperation("warn").send(arg0);
}
public function addOperationListener(op:Function, type:String, handler:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void {
if (op == this.debug)
this.getOperation("debug").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.error)
this.getOperation("error").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.info)
this.getOperation("info").addEventListener(type, handler, useCapture, priority, useWeakReference);
if (op == this.warn)
this.getOperation("warn").addEventListener(type, handler, useCapture, priority, useWeakReference);
}
public function removeOperationListener(op:Function, event:String, handler:Function):void {
if (op == this.debug)
this.getOperation("debug").removeEventListener(event, handler);
if (op == this.error)
this.getOperation("error").removeEventListener(event, handler);
if (op == this.info)
this.getOperation("info").removeEventListener(event, handler);
if (op == this.warn)
this.getOperation("warn").removeEventListener(event, handler);
}
}
}
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.enums {
import org.granite.util.Enum;
[Bindable]
[RemoteClass(alias="fi.insomnia.bortal.enums.BeanRole")]
public class BeanRole extends Enum {
public static const ANONYMOUS:BeanRole = new BeanRole("ANONYMOUS", _);
public static const USER_BASE:BeanRole = new BeanRole("USER_BASE", _);
public static const ADMIN_BASE:BeanRole = new BeanRole("ADMIN_BASE", _);
public static const SUPERADMIN:BeanRole = new BeanRole("SUPERADMIN", _);
public static const ORGANIZATION_ROOT:BeanRole = new BeanRole("ORGANIZATION_ROOT", _);
function BeanRole(value:String = null, restrictor:* = null) {
super((value || ANONYMOUS.name), restrictor);
}
override protected function getConstants():Array {
return constants;
}
public static function get constants():Array {
return [ANONYMOUS, USER_BASE, ADMIN_BASE, SUPERADMIN, ORGANIZATION_ROOT];
}
public static function valueOf(name:String):BeanRole {
return BeanRole(ANONYMOUS.constantOf(name));
}
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.enums {
import org.granite.util.Enum;
[Bindable]
[RemoteClass(alias="fi.insomnia.bortal.enums.EventStatusEnum")]
public class EventStatusEnum extends Enum {
public static const INACTIVE:EventStatusEnum = new EventStatusEnum("INACTIVE", _);
public static const TICKET_SALES:EventStatusEnum = new EventStatusEnum("TICKET_SALES", _);
public static const PRE_EVENT:EventStatusEnum = new EventStatusEnum("PRE_EVENT", _);
public static const RUNNING:EventStatusEnum = new EventStatusEnum("RUNNING", _);
public static const SPLITTED:EventStatusEnum = new EventStatusEnum("SPLITTED", _);
public static const ARCHIVED:EventStatusEnum = new EventStatusEnum("ARCHIVED", _);
function EventStatusEnum(value:String = null, restrictor:* = null) {
super((value || INACTIVE.name), restrictor);
}
override protected function getConstants():Array {
return constants;
}
public static function get constants():Array {
return [INACTIVE, TICKET_SALES, PRE_EVENT, RUNNING, SPLITTED, ARCHIVED];
}
public static function valueOf(name:String):EventStatusEnum {
return EventStatusEnum(INACTIVE.constantOf(name));
}
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.enums {
import org.granite.util.Enum;
[Bindable]
[RemoteClass(alias="fi.insomnia.bortal.enums.Permission")]
public class Permission extends Enum {
public static const PERMISSION:Permission = new Permission("PERMISSION", _);
public static const LOGIN:Permission = new Permission("LOGIN", _);
public static const USER_MANAGEMENT:Permission = new Permission("USER_MANAGEMENT", _);
public static const TICKET_SALES:Permission = new Permission("TICKET_SALES", _);
public static const ROLE_MANAGEMENT:Permission = new Permission("ROLE_MANAGEMENT", _);
function Permission(value:String = null, restrictor:* = null) {
super((value || PERMISSION.name), restrictor);
}
override protected function getConstants():Array {
return constants;
}
public static function get constants():Array {
return [PERMISSION, LOGIN, USER_MANAGEMENT, TICKET_SALES, ROLE_MANAGEMENT];
}
public static function valueOf(name:String):Permission {
return Permission(PERMISSION.constantOf(name));
}
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR.
*/
package fi.insomnia.bortal.enums {
import org.granite.util.Enum;
[Bindable]
[RemoteClass(alias="fi.insomnia.bortal.enums.RolePermission")]
public class RolePermission extends Enum {
public static const READ:RolePermission = new RolePermission("READ", _);
public static const WRITE:RolePermission = new RolePermission("WRITE", _);
public static const EXECUTE:RolePermission = new RolePermission("EXECUTE", _);
function RolePermission(value:String = null, restrictor:* = null) {
super((value || READ.name), restrictor);
}
override protected function getConstants():Array {
return constants;
}
public static function get constants():Array {
return [READ, WRITE, EXECUTE];
}
public static function valueOf(name:String):RolePermission {
return RolePermission(READ.constantOf(name));
}
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.1.0 (Granite Data Services).
*
* NOTE: this file is only generated if it does not exist. You may safely put
* your custom code here.
*/
package fi.insomnia.bortal.exceptions {
[Bindable]
[RemoteClass(alias="fi.insomnia.bortal.exceptions.EjbPermissionDeniedException")]
public class EjbPermissionDeniedException extends EjbPermissionDeniedExceptionBase {
}
}
\ No newline at end of file
/**
* Generated by Gas3 v2.2.0 (Granite Data Services).
*
* WARNING: DO NOT CHANGE THIS FILE. IT MAY BE OVERWRITTEN EACH TIME YOU USE
* THE GENERATOR. INSTEAD, EDIT THE INHERITED CLASS (EjbPermissionDeniedException.as).
*/
package fi.insomnia.bortal.exceptions {
import flash.utils.IDataInput;
import flash.utils.IDataOutput;
import flash.utils.IExternalizable;
[Bindable]
public class EjbPermissionDeniedExceptionBase implements IExternalizable {
public function readExternal(input:IDataInput):void {
}
public function writeExternal(output:IDataOutput):void {
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="LanBortalBeansClient" default="default" basedir=".">
<description>Builds, tests, and runs the project LanBortalBeansClient.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="LanBortalBeansClient-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>
Manifest-Version: 1.0
Class-Path: lib/LanBortalDatabase.jar
# Do not delete: this file is used by automated destinations discovery.
\ No newline at end of file
package fi.insomnia.bortal.beans;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import javax.ejb.Local;
import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.EventPk;
import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User;
@Local
public interface AccountEventBeanLocal {
AccountEvent merge(AccountEvent account);
void delete(AccountEvent account);
AccountEvent find(EventPk id);
List<Role> getRolesFromAccountEvents(User u);
List<AccountEvent> shopCash(User shoppingUser, Map<Product, BigDecimal> shopMap, boolean buyInstant);
}
package fi.insomnia.bortal.beans;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Collection;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.bortal.views.BillSummary;
import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.BillLine;
import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.User;
@Local
public interface BillBeanLocal {
Bill findById( int id);
Bill createEmptyBill(User shoppingUser);
BillLine addProductToBill(Bill bill, Product product, BigDecimal count);
List<Bill> findAll();
Collection<BillSummary> getBillLineSummary();
void markPaid(Bill bill, Calendar when);
void getPdfBillStream(Bill bill, OutputStream ostream);
}
package fi.insomnia.bortal.beans;
import javax.ejb.Local;
@Local
public interface BillLineBeanLocal {
}
package fi.insomnia.bortal.beans;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.CardTemplate;
import fi.insomnia.bortal.model.PrintedCard;
import fi.insomnia.bortal.model.User;
@Local
public interface CardTemplateBeanLocal {
List<CardTemplate> findAll();
void create(CardTemplate card);
CardTemplate findById(Integer id);
PrintedCard checkPrintedCard(User user);
void checkAllUsersCardRights();
PrintedCard setRfidUid(String tag, User user);
PrintedCard setRfidUid(String tag, PrintedCard card);
List<PrintedCard> findActiveCards();
}
package fi.insomnia.bortal.beans;
import java.math.BigDecimal;
import javax.ejb.Local;
import fi.insomnia.bortal.model.Discount;
import fi.insomnia.bortal.model.Product;
@Local
public interface DiscountBeanLocal {
Discount save(Discount discount);
Discount create(String discountdesc);
}
package fi.insomnia.bortal.beans;
import javax.ejb.Local;
import fi.insomnia.bortal.model.LanEvent;
@Local
public interface EventBeanLocal {
static final String HTTP_URL_HOSTNAME = "HTTP_URL_HOSTNAME";
LanEvent getEventByHostname(String hostname);
LanEvent getCurrentEvent();
LanEvent mergeChanges(LanEvent event);
void create(LanEvent event);
String flushCache();
}
package fi.insomnia.bortal.beans;
import javax.ejb.Local;
import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.LanEvent;
@Local
public interface EventMapBeanLocal {
EventMap saveMap(EventMap eventmap);
EventMap create(String mapname);
void sendImage(int destId, byte[] imagedata);
}
package fi.insomnia.bortal.beans;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.EventOrganiser;
@Local
public interface EventOrganiserBeanLocal {
void save(EventOrganiser eventorg);
void fatalPermission(EventOrganiser eventorg);
List<EventOrganiser> getEventOrganisers();
EventOrganiser create(String createorgname);
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package fi.insomnia.bortal.beans;
import fi.insomnia.bortal.model.EventStatus;
import javax.ejb.Local;
/**
*
* @author tuukka
*/
@Local
public interface EventStatusBeanLocal {
public EventStatus findOrCreateDefaultEventStatus();
}
package fi.insomnia.bortal.beans;
import javax.ejb.Local;
import fi.insomnia.bortal.model.FoodWaveTemplate;
@Local
public interface FoodWaveBeanLocal {
void createTemplate(FoodWaveTemplate waveTemplate);
FoodWaveTemplate saveTemplate(FoodWaveTemplate waveTemplate);
}
package fi.insomnia.bortal.beans;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.News;
@Local
public interface GameBeanLocal {
List<News> getNews();
}
package fi.insomnia.bortal.beans;
import javax.ejb.Local;
@Local
public interface JaasBeanLocal {
}
package fi.insomnia.bortal.beans;
import javax.ejb.Remote;
import fi.insomnia.bortal.RealmBeanRemote;
@Remote
public interface JaasBeanRemote extends RealmBeanRemote{
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package fi.insomnia.bortal.beans;
import java.math.BigDecimal;
import javax.ejb.Local;
import fi.insomnia.bortal.exceptions.BortalCatchableException;
import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.EventPk;
import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.User;
/**
*
* @author tuukka
*/
@Local
// @RemoteDestination
public interface PlaceBeanLocal {
Place mergeChanges(Place place);
Place findPlace(EventMap e, int x, int y);
void releaseUsersPlaces();
boolean reservePlace(Place place, User user);
boolean releasePlace(Place place, User user);
BigDecimal totalReservationPrice(EventMap e, Place newPlace);
boolean buySelectedPlaces(EventMap e) throws BortalCatchableException;
int setBuyable(EventMap map, String buyableLike, boolean b);
Place find(EventPk id);
void checkMemberships();
Place lockPlaces(User rowData, Place place);
void lockPlaceProduct(User user, Product prod, BigDecimal quantity);
}
package fi.insomnia.bortal.beans;
import java.io.OutputStream;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.GroupMembership;
import fi.insomnia.bortal.model.User;
@Local
public interface PlaceGroupBeanLocal {
// PlaceGroup createPlaceGroup(User currentUser);
// GroupMembership createGroupMembership(PlaceGroup pg, Place p);
// List<GroupMembership> getMemberships(User user);
boolean associateToToken(User user, String token);
void releaseAndGenerateToken(GroupMembership gmem);
void getGroupMembershipPdf(List<GroupMembership> memberships, OutputStream ostream);
List<GroupMembership> getMembershipsAndCreations(User user);
List<GroupMembership> getMemberships(User user);
}
package fi.insomnia.bortal.beans;
import javax.ejb.Local;
import fi.insomnia.bortal.model.EventMap;
@Local
public interface PlaceMapBeanLocal {
// public String getSelectPlaceMapUrl(EventMap activeMap, List<Place> selectedPlaces, User user);
public Long selectablePlaceCount(EventMap activeMap);
public EventMap findMap(Integer mapId);
// public List<Place> findSelectedPlaces(EventMap map);
// public EventMap findMap(int i);
}
package fi.insomnia.bortal.beans;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.Poll;
import fi.insomnia.bortal.model.PollAnswer;
import fi.insomnia.bortal.model.PollQuestion;
import fi.insomnia.bortal.model.PossibleAnswer;
@Local
public interface PollBeanLocal {
List<Poll> findPolls();
boolean createAnswers(List<PollAnswer> answers);
PossibleAnswer findPossibleAnwerById(int id);
void createPoll(Poll poll);
void createAnswers(PollQuestion q1);
}
package fi.insomnia.bortal.beans;
import java.math.BigDecimal;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.Discount;
import fi.insomnia.bortal.model.Product;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.User;
@Local
public interface ProductBeanLocal {
List<Product> listUserShoppableProducts();
Product createProduct(String name, BigDecimal price);
List<Product> getProducts();
Product mergeChanges(Product product);
Product findCreditProduct();
BigDecimal calculateTotal(Product key, BigDecimal value);
AccountEvent createAccountEvent(Product product, BigDecimal quantity, User user);
List<Discount> getActiveDiscounts(Product product, BigDecimal quantity);
Product findById(int parseInt);
List<Product> findForStaffshop();
}
package fi.insomnia.bortal.beans;
import javax.ejb.Local;
import fi.insomnia.bortal.exceptions.BortalCatchableException;
import fi.insomnia.bortal.model.PrintedCard;
import fi.insomnia.bortal.model.ReaderEvent;
@Local
public interface ReaderBeanLocal {
ReaderEvent checkTag(String reader, String tag, String hash);
ReaderEvent assocTagToPlacecode(String tag, String readerIdent, String placecode) throws BortalCatchableException;
ReaderEvent assocTagToCard(String tag, String readerIdent, PrintedCard card);
ReaderEvent merge(ReaderEvent e);
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package fi.insomnia.bortal.beans;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.RoleRight;
/**
*
* @author tuukka
*/
@Local
public interface RoleBeanLocal {
public List<Role> listRoles();
public Role mergeChanges(Role role);
public Role create(Role role);
public RoleRight mergeChanges(RoleRight row);
public List<RoleRight> getRoleRights(Role role);
public List<Role> getPossibleParents(Role role);
public List<Role> listRoles(LanEvent event);
public Role find(int val, LanEvent event);
}
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!