diff --git a/hsarback/src/de/hsadmin/cliClientConnector/ArgumentParser.java b/hsarback/src/de/hsadmin/cliClientConnector/ArgumentParser.java index 8f69ffb..1f88492 100644 --- a/hsarback/src/de/hsadmin/cliClientConnector/ArgumentParser.java +++ b/hsarback/src/de/hsadmin/cliClientConnector/ArgumentParser.java @@ -13,7 +13,7 @@ import java.util.Map; import de.hsadmin.cliClientConnector.CLIClientConnectorServlet.FunctionNotKnownException; import de.hsadmin.cliClientConnector.CLIClientConnectorServlet.UnknownModuleException; -import de.hsadmin.core.model.Entity; +import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.core.model.ModuleInterface; /** @@ -98,7 +98,7 @@ public class ArgumentParser { } else if( type.equals("java.util.Set") ) { val = ""; } else try { - Entity v = (Entity)value; + AbstractEntity v = (AbstractEntity)value; val = v.createStringKey(); if( deep && !foundObjects.contains(v) ) { foundObjects.add(v); diff --git a/hsarback/src/de/hsadmin/cliClientConnector/CLIClientConnectorServlet.java b/hsarback/src/de/hsadmin/cliClientConnector/CLIClientConnectorServlet.java index e154023..43c7b30 100644 --- a/hsarback/src/de/hsadmin/cliClientConnector/CLIClientConnectorServlet.java +++ b/hsarback/src/de/hsadmin/cliClientConnector/CLIClientConnectorServlet.java @@ -16,7 +16,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import de.hsadmin.core.model.Entity; +import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.core.model.GenericModuleImpl; import de.hsadmin.core.model.ModuleInterface; import de.hsadmin.core.model.TicketAuthentication; @@ -210,7 +210,7 @@ public class CLIClientConnectorServlet extends HttpServlet { String kname = hasGetter(eType, k); if (kname != null) { rval += (first ? "" : " and ") - + "(obj." + Entity.escapeString(kname) + " = '" + Entity.escapeString(where.get(k)) + "')"; + + "(obj." + AbstractEntity.escapeString(kname) + " = '" + AbstractEntity.escapeString(where.get(k)) + "')"; first = false; } } @@ -250,7 +250,7 @@ public class CLIClientConnectorServlet extends HttpServlet { Transaction transaction = module.getTransaction(); transaction.beginTransaction(); try { - Method m = module.getClass().getMethod("add", Entity.class); + Method m = module.getClass().getMethod("add", AbstractEntity.class); Object o = cls.newInstance(); setValues(o, set, module); m.invoke(module, o); @@ -278,11 +278,11 @@ public class CLIClientConnectorServlet extends HttpServlet { } // / checks wheather all 'oids' are in 'list' - private void checkOids(List list, List oids) { + private void checkOids(List list, List oids) { List oidsNotFound = new ArrayList(); for (String id : oids) { boolean found = false; - for (Entity e : list) { + for (AbstractEntity e : list) { String foundKey = e.createStringKey(); if (foundKey.equals(id)) { found = true; @@ -310,12 +310,12 @@ public class CLIClientConnectorServlet extends HttpServlet { try { Method m = module.getClass().getMethod("search", Class.class, String.class, String.class); - List list = (List) m.invoke(module, cls, + List list = (List) m.invoke(module, cls, buildQuery(cls, where, oids), null); checkOids(list, oids); - Method m2 = module.getClass().getMethod("update", Entity.class); + Method m2 = module.getClass().getMethod("update", AbstractEntity.class); for (int i = 0; i < list.size(); i++) { - Entity entity = list.get(i); + AbstractEntity entity = list.get(i); tx.detach(entity); setValues(entity, set, module); m2.invoke(module, entity); @@ -341,10 +341,10 @@ public class CLIClientConnectorServlet extends HttpServlet { try { Method m = module.getClass().getMethod("search", Class.class, String.class, String.class); - List list = - (List) m.invoke(module, cls, buildQuery(cls, where, oids), null); + List list = + (List) m.invoke(module, cls, buildQuery(cls, where, oids), null); checkOids(list, oids); - Method m2 = module.getClass().getMethod("delete", Entity.class); + Method m2 = module.getClass().getMethod("delete", AbstractEntity.class); for (int i = 0; i < list.size(); i++) { Object o = list.get(i); m2.invoke(module, o); diff --git a/hsarback/src/de/hsadmin/core/model/Entity.java b/hsarback/src/de/hsadmin/core/model/AbstractEntity.java similarity index 96% rename from hsarback/src/de/hsadmin/core/model/Entity.java rename to hsarback/src/de/hsadmin/core/model/AbstractEntity.java index 10d9d37..08fadbe 100644 --- a/hsarback/src/de/hsadmin/core/model/Entity.java +++ b/hsarback/src/de/hsadmin/core/model/AbstractEntity.java @@ -9,7 +9,7 @@ import javax.persistence.EntityManager; import de.hsadmin.mods.user.UnixUser; -public abstract class Entity { +public abstract class AbstractEntity { /** * trims whitespace from both ends, but a null remains null. @@ -137,7 +137,7 @@ public abstract class Entity { * @param entity * @return */ - public boolean sameIdAs(Entity entity) { + public boolean sameIdAs(AbstractEntity entity) { if (entity == null) return false; if (getClass() != entity.getClass()) @@ -183,7 +183,7 @@ public abstract class Entity { * @param em * @param loginUser */ - public Entity merge(EntityManager em, UnixUser loginUser) { + public AbstractEntity merge(EntityManager em, UnixUser loginUser) { return em.merge(this); } @@ -228,7 +228,7 @@ public abstract class Entity { * JBoss 5.1. * This is just for testing, it does not use the proper class loader! */ - public T replicate() { + public T replicate() { try { ByteArrayOutputStream baOut = new ByteArrayOutputStream(); ObjectOutputStream oOut = new ObjectOutputStream(baOut); diff --git a/hsarback/src/de/hsadmin/core/model/AbstractModuleImpl.java b/hsarback/src/de/hsadmin/core/model/AbstractModuleImpl.java index 8ca6da3..f986b5a 100644 --- a/hsarback/src/de/hsadmin/core/model/AbstractModuleImpl.java +++ b/hsarback/src/de/hsadmin/core/model/AbstractModuleImpl.java @@ -39,7 +39,7 @@ public abstract class AbstractModuleImpl implements ModuleInterface { * @return */ private String restrict(Class entityClass, UnixUser loginUser, String condition) { - String restriction = Entity.restriction(entityClass, loginUser); + String restriction = AbstractEntity.restriction(entityClass, loginUser); if (restriction == null) return condition; if (condition != null && condition.length() > 0) @@ -53,13 +53,13 @@ public abstract class AbstractModuleImpl implements ModuleInterface { return transaction; } - public Entity initialize(Entity newEntity) + public AbstractEntity initialize(AbstractEntity newEntity) throws AuthorisationException { newEntity.initialize(transaction.getEntityManager(), getLoginUser()); return newEntity; } - public Entity add(Entity newEntity) throws HSAdminException { + public AbstractEntity add(AbstractEntity newEntity) throws HSAdminException { // get the user who is logged in UnixUser loginUser = getLoginUser(); @@ -95,8 +95,8 @@ public abstract class AbstractModuleImpl implements ModuleInterface { return newEntity; } - public Entity find(Class entityClass, Object key) throws HSAdminException { - Entity entity = transaction.getEntityManager().find(entityClass, key); + public AbstractEntity find(Class entityClass, Object key) throws HSAdminException { + AbstractEntity entity = transaction.getEntityManager().find(entityClass, key); // check rights UnixUser loginUser = getLoginUser(); @@ -106,7 +106,7 @@ public abstract class AbstractModuleImpl implements ModuleInterface { return entity; } - public Entity findByString(Class entityClass, String key) throws HSAdminException { + public AbstractEntity findByString(Class entityClass, String key) throws HSAdminException { // find a static method which creates the query java.lang.reflect.Method method = null; try { @@ -117,7 +117,7 @@ public abstract class AbstractModuleImpl implements ModuleInterface { method = null; } - Entity entity; + AbstractEntity entity; if (method == null) entity = transaction.getEntityManager().find(entityClass, key); else { @@ -131,7 +131,7 @@ public abstract class AbstractModuleImpl implements ModuleInterface { } // perform the query - List result = search(entityClass, query, null); + List result = search(entityClass, query, null); if (result.size() > 1) throw new javax.persistence.NonUniqueResultException(); if (result.size() == 0) @@ -147,7 +147,7 @@ public abstract class AbstractModuleImpl implements ModuleInterface { return entity; } - public List search(Class entityClass, String condition, String orderBy) throws HSAdminException { + public List search(Class entityClass, String condition, String orderBy) throws HSAdminException { // restrict query UnixUser loginUser = getLoginUser(); condition = restrict(entityClass, loginUser, condition); @@ -161,7 +161,7 @@ public abstract class AbstractModuleImpl implements ModuleInterface { // Fix problem with queries WHERE .. AND (FALSE) -- pe if (condition != null && condition.contains("AND (FALSE)")) { - return new LinkedList(); + return new LinkedList(); } if (orderBy != null) { @@ -181,12 +181,12 @@ public abstract class AbstractModuleImpl implements ModuleInterface { // do query try { List res = query.getResultList(); - List ret = new LinkedList(); + List ret = new LinkedList(); // remove entities where login user has no access rights for (Object entity : res) { - if (entity instanceof Entity) { - Entity returnedEntity = (Entity) entity; + if (entity instanceof AbstractEntity) { + AbstractEntity returnedEntity = (AbstractEntity) entity; if (returnedEntity.isReadAllowedFor(getLoginUser())) { ret.add(returnedEntity); } @@ -196,11 +196,11 @@ public abstract class AbstractModuleImpl implements ModuleInterface { // return clean result return ret; } catch (Exception ex) { - return null; + throw new HSAdminException(ex); } } - public Entity update(Entity existingEntity) throws HSAdminException { + public AbstractEntity update(AbstractEntity existingEntity) throws HSAdminException { // get the user who is logged in UnixUser loginUser = getLoginUser(); @@ -236,7 +236,7 @@ public abstract class AbstractModuleImpl implements ModuleInterface { return existingEntity; } - public void delete(Entity existingEntity) throws HSAdminException { + public void delete(AbstractEntity existingEntity) throws HSAdminException { // get the user who is logged in UnixUser user = getLoginUser(); @@ -280,7 +280,7 @@ public abstract class AbstractModuleImpl implements ModuleInterface { queueProcessor(proc, user, existingEntity, "geloescht"); } - public EntityProcessorFactory createProcessorFactory(Class entityClass) { + public EntityProcessorFactory createProcessorFactory(Class entityClass) { try { String procFactName = entityClass.getCanonicalName() + "ProcessorFactory"; @@ -310,7 +310,7 @@ public abstract class AbstractModuleImpl implements ModuleInterface { return loginUser; } - public void queueProcessor(Processor proc, UnixUser user, Entity entity, String action) { + public void queueProcessor(Processor proc, UnixUser user, AbstractEntity entity, String action) { log.debug("queueing processor for user " + user.getId() + "/" + user.getUserId() + "/" + user.getName()); EntityInfo entityInfo = diff --git a/hsarback/src/de/hsadmin/core/model/AuthorisationException.java b/hsarback/src/de/hsadmin/core/model/AuthorisationException.java index 33b2dc5..7fa5370 100644 --- a/hsarback/src/de/hsadmin/core/model/AuthorisationException.java +++ b/hsarback/src/de/hsadmin/core/model/AuthorisationException.java @@ -8,7 +8,7 @@ public class AuthorisationException extends HSAdminException { private UnixUser user; private String method; - private Entity entity; + private AbstractEntity entity; private String field; public UnixUser getUser() { @@ -19,7 +19,7 @@ public class AuthorisationException extends HSAdminException { return method; } - public Entity getEntity() { + public AbstractEntity getEntity() { return entity; } @@ -34,7 +34,7 @@ public class AuthorisationException extends HSAdminException { this.method = method; } - public AuthorisationException(UnixUser user, String method, Entity entity) { + public AuthorisationException(UnixUser user, String method, AbstractEntity entity) { super("nicht authorisiert fuer " + method + "(" + entity.createStringKey() + ")"); @@ -43,7 +43,7 @@ public class AuthorisationException extends HSAdminException { this.entity = entity; } - public AuthorisationException(UnixUser user, String method, Entity entity, + public AuthorisationException(UnixUser user, String method, AbstractEntity entity, String field) { super("nicht authorisiert fuer " + method + "(" + entity.createStringKey() + "." + field + ")"); diff --git a/hsarback/src/de/hsadmin/core/model/EntitySessionHelper.java b/hsarback/src/de/hsadmin/core/model/EntitySessionHelper.java index 036dba5..f1e2c3a 100644 --- a/hsarback/src/de/hsadmin/core/model/EntitySessionHelper.java +++ b/hsarback/src/de/hsadmin/core/model/EntitySessionHelper.java @@ -13,7 +13,7 @@ public class EntitySessionHelper { * @param entityClass * @return */ - public static AbstractModuleImpl createEntitySessionWrapper(Class entityClass) { + public static AbstractModuleImpl createEntitySessionWrapper(Class entityClass) { // get in instance AbstractModuleImpl impl = null; try { diff --git a/hsarback/src/de/hsadmin/core/model/GenericModuleImpl.java b/hsarback/src/de/hsadmin/core/model/GenericModuleImpl.java index c76a08b..c985a28 100644 --- a/hsarback/src/de/hsadmin/core/model/GenericModuleImpl.java +++ b/hsarback/src/de/hsadmin/core/model/GenericModuleImpl.java @@ -20,7 +20,7 @@ public class GenericModuleImpl implements ModuleInterface { } @Override - public Entity initialize(Entity newEntity) throws HSAdminException { + public AbstractEntity initialize(AbstractEntity newEntity) throws HSAdminException { log.trace("initialize(" + newEntity + ")"); AbstractModuleImpl wrapper = EntitySessionHelper.createEntitySessionWrapper(newEntity.getClass()); @@ -29,14 +29,14 @@ public class GenericModuleImpl implements ModuleInterface { } @Override - public Entity add(Entity newEntity) throws HSAdminException { + public AbstractEntity add(AbstractEntity newEntity) throws HSAdminException { if (!newEntity.isNew()) throw new HSAdminException("cannot add an already persistent entity"); log.trace("add(" + newEntity + ")"); AbstractModuleImpl wrapper = EntitySessionHelper.createEntitySessionWrapper(newEntity.getClass()); wrapper.construct(tx); - Entity result = null; + AbstractEntity result = null; try { result = wrapper.add(newEntity); return result; @@ -46,7 +46,7 @@ public class GenericModuleImpl implements ModuleInterface { } @Override - public Entity find(Class entityClass, Object key) throws HSAdminException { + public AbstractEntity find(Class entityClass, Object key) throws HSAdminException { log.trace("find(" + entityClass + ", " + key + ")"); AbstractModuleImpl wrapper = EntitySessionHelper.createEntitySessionWrapper(entityClass); wrapper.construct(tx); @@ -54,7 +54,7 @@ public class GenericModuleImpl implements ModuleInterface { } @Override - public Entity findByString(Class entityClass, String key) throws HSAdminException { + public AbstractEntity findByString(Class entityClass, String key) throws HSAdminException { log.trace("find(" + entityClass + ", " + key + ")"); AbstractModuleImpl wrapper = EntitySessionHelper.createEntitySessionWrapper(entityClass); wrapper.construct(tx); @@ -62,7 +62,7 @@ public class GenericModuleImpl implements ModuleInterface { } @Override - public List search(Class entityClass, String condition, String orderBy) throws HSAdminException { + public List search(Class entityClass, String condition, String orderBy) throws HSAdminException { log.trace("search(" + entityClass + ", " + condition + ")"); AbstractModuleImpl wrapper = EntitySessionHelper.createEntitySessionWrapper(entityClass); wrapper.construct(tx); @@ -70,7 +70,7 @@ public class GenericModuleImpl implements ModuleInterface { } @Override - public Entity update(Entity existingEntity) throws HSAdminException { + public AbstractEntity update(AbstractEntity existingEntity) throws HSAdminException { if (existingEntity.isNew()) return add(existingEntity); log.debug("update(" + existingEntity + ")"); @@ -84,7 +84,7 @@ public class GenericModuleImpl implements ModuleInterface { } @Override - public void delete(Entity existingEntity) throws HSAdminException { + public void delete(AbstractEntity existingEntity) throws HSAdminException { log.trace("delete(" + existingEntity + ")"); AbstractModuleImpl wrapper = EntitySessionHelper.createEntitySessionWrapper(existingEntity.getClass()); diff --git a/hsarback/src/de/hsadmin/core/model/ModuleInterface.java b/hsarback/src/de/hsadmin/core/model/ModuleInterface.java index ff7ce74..0fe5b52 100644 --- a/hsarback/src/de/hsadmin/core/model/ModuleInterface.java +++ b/hsarback/src/de/hsadmin/core/model/ModuleInterface.java @@ -14,37 +14,37 @@ public interface ModuleInterface { /** * initializes a newly created entity. */ - public Entity initialize(Entity newEntity) throws HSAdminException; + public AbstractEntity initialize(AbstractEntity newEntity) throws HSAdminException; /** * Adds a new entity instance to the model. */ - public Entity add(Entity newEntity) throws HSAdminException; + public AbstractEntity add(AbstractEntity newEntity) throws HSAdminException; /** * Finds an entity instance in the model, using its primary key. */ - public Entity find(Class entityClass, Object key) throws HSAdminException; + public AbstractEntity find(Class entityClass, Object key) throws HSAdminException; /** * Finds an entity instance in the model, using its primary key in a String * representation. */ - public Entity findByString(Class entityClass, String key) throws HSAdminException; + public AbstractEntity findByString(Class entityClass, String key) throws HSAdminException; /** * Searches entity instances in the model, using a simplified JPA-QL query. */ - public List search(Class entityClass, String query, String orderBy) throws HSAdminException; + public List search(Class entityClass, String query, String orderBy) throws HSAdminException; /** * Updates an existing entity in the model. */ - public Entity update(Entity existingEntity) throws HSAdminException; + public AbstractEntity update(AbstractEntity existingEntity) throws HSAdminException; /** * Deletes an existing entity from the model. */ - public void delete(Entity existingEntity) throws HSAdminException; + public void delete(AbstractEntity existingEntity) throws HSAdminException; } diff --git a/hsarback/src/de/hsadmin/core/model/SecureDefaultModuleImpl.java b/hsarback/src/de/hsadmin/core/model/SecureDefaultModuleImpl.java index dc9b156..00c817c 100644 --- a/hsarback/src/de/hsadmin/core/model/SecureDefaultModuleImpl.java +++ b/hsarback/src/de/hsadmin/core/model/SecureDefaultModuleImpl.java @@ -11,28 +11,28 @@ public class SecureDefaultModuleImpl extends AbstractModuleImpl { private static final long serialVersionUID = 4567381515459292565L; @Override - public Entity initialize(Entity newEntity) throws AuthorisationException { + public AbstractEntity initialize(AbstractEntity newEntity) throws AuthorisationException { return super.initialize(newEntity); } @Override - public Entity find(Class entityClass, Object key) throws HSAdminException { - Entity entity = super.find(entityClass, key); + public AbstractEntity find(Class entityClass, Object key) throws HSAdminException { + AbstractEntity entity = super.find(entityClass, key); if (entity != null && !entity.isReadAllowedFor(getLoginUser())) throw new AuthorisationException(getLoginUser(), "find"); return entity; } @Override - public Entity findByString(Class entityClass, String key) throws HSAdminException { - Entity entity = super.findByString(entityClass, key); + public AbstractEntity findByString(Class entityClass, String key) throws HSAdminException { + AbstractEntity entity = super.findByString(entityClass, key); if (entity != null && !entity.isReadAllowedFor(getLoginUser())) throw new AuthorisationException(getLoginUser(), "findByString"); return entity; } @Override - public List search(Class entityClass, String condition, String orderBy) + public List search(Class entityClass, String condition, String orderBy) throws HSAdminException { // restrict query to entities where the loginUser could have rights on SearchFilter filterAnnot; @@ -47,13 +47,13 @@ public class SecureDefaultModuleImpl extends AbstractModuleImpl { } // do query - List res = super.search(entityClass, condition, orderBy); - List ret = new LinkedList(); + List res = super.search(entityClass, condition, orderBy); + List ret = new LinkedList(); // remove entities where login user has no access rights if (res != null) { - for (Entity entity : res) { - Entity returnedEntity = entity; + for (AbstractEntity entity : res) { + AbstractEntity returnedEntity = entity; if (returnedEntity.isReadAllowedFor(getLoginUser())) ret.add(returnedEntity); } @@ -77,21 +77,21 @@ public class SecureDefaultModuleImpl extends AbstractModuleImpl { } @Override - public Entity add(Entity newEntity) throws HSAdminException { + public AbstractEntity add(AbstractEntity newEntity) throws HSAdminException { // access rights checking is done by base class return super.add(newEntity); } @Override - public Entity update(Entity existingEntity) throws HSAdminException { + public AbstractEntity update(AbstractEntity existingEntity) throws HSAdminException { // access rights checking is done by base class return super.update(existingEntity); } @Override - public void delete(Entity detachedEntity) throws HSAdminException { + public void delete(AbstractEntity detachedEntity) throws HSAdminException { // get the entity from the database - Entity attachedEntity = getTransaction().getEntityManager().find(detachedEntity.getClass(), + AbstractEntity attachedEntity = getTransaction().getEntityManager().find(detachedEntity.getClass(), detachedEntity.id()); // does the login user have the right to delete? diff --git a/hsarback/src/de/hsadmin/core/model/Transaction.java b/hsarback/src/de/hsadmin/core/model/Transaction.java index e5f81e3..52f5d73 100644 --- a/hsarback/src/de/hsadmin/core/model/Transaction.java +++ b/hsarback/src/de/hsadmin/core/model/Transaction.java @@ -150,7 +150,7 @@ public class Transaction { * Used to detach entities before update. Makes it possible to compare * old and new attribute values. */ - public void detach(Entity entity) { + public void detach(AbstractEntity entity) { // TODO: replace hibernate specific implmentation // org.hibernate.Session hSession = (Session) entityManager.getDelegate(); // hSession.evict(entity); diff --git a/hsarback/src/de/hsadmin/core/model/onetier/PersistenceManager.java b/hsarback/src/de/hsadmin/core/model/onetier/PersistenceManager.java index 82e2c30..88da36e 100644 --- a/hsarback/src/de/hsadmin/core/model/onetier/PersistenceManager.java +++ b/hsarback/src/de/hsadmin/core/model/onetier/PersistenceManager.java @@ -13,6 +13,15 @@ public class PersistenceManager { private Map persistenceUnits; + public static EntityManager getEntityManager(String persistUnitName) { + EntityManagerFactory emf = PersistenceManager.getInstance().getEMF(persistUnitName); + return emf.createEntityManager(); + } + + public static void close() { + getInstance().closeFactories(); + } + private PersistenceManager() { persistenceUnits = new HashMap(); } @@ -26,18 +35,19 @@ public class PersistenceManager { return emf; } - public static EntityManager getEntityManager(String persistUnitName) { - PersistenceManager pm = PersistenceManager.getInstance(); - EntityManagerFactory emf = pm.getEMF(persistUnitName); - return emf.createEntityManager(); - } - private static PersistenceManager getInstance() { if (instance == null) { instance = new PersistenceManager(); } return instance; } - - + + private void closeFactories() { + for (String puName : persistenceUnits.keySet()) { + System.out.println("Persistence Unit: " + puName); + EntityManagerFactory emf = persistenceUnits.get(puName); + emf.close(); + persistenceUnits.remove(puName); + } + } } diff --git a/hsarback/src/de/hsadmin/core/model/onetier/PersistenceManagerContextListener.java b/hsarback/src/de/hsadmin/core/model/onetier/PersistenceManagerContextListener.java new file mode 100644 index 0000000..a979cac --- /dev/null +++ b/hsarback/src/de/hsadmin/core/model/onetier/PersistenceManagerContextListener.java @@ -0,0 +1,23 @@ +package de.hsadmin.core.model.onetier; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +public class PersistenceManagerContextListener implements ServletContextListener { + + public PersistenceManagerContextListener() { + } + + @Override + public void contextDestroyed(ServletContextEvent contextEvent) { + System.out.println("PersistenceManager.contextDestroyed()"); + PersistenceManager.close(); + } + + @Override + public void contextInitialized(ServletContextEvent contextEvent) { + // do nothing + } + + +} diff --git a/hsarback/src/de/hsadmin/core/qserv/EntityProcessorFactory.java b/hsarback/src/de/hsadmin/core/qserv/EntityProcessorFactory.java index 45e84f8..79e3a0d 100644 --- a/hsarback/src/de/hsadmin/core/qserv/EntityProcessorFactory.java +++ b/hsarback/src/de/hsadmin/core/qserv/EntityProcessorFactory.java @@ -2,7 +2,7 @@ package de.hsadmin.core.qserv; import javax.persistence.EntityManager; -import de.hsadmin.core.model.Entity; +import de.hsadmin.core.model.AbstractEntity; /** * Most processor factories need only these methods. @@ -10,13 +10,13 @@ import de.hsadmin.core.model.Entity; * @author peter */ public interface EntityProcessorFactory { - public Processor createCreateProcessor(EntityManager em, + public Processor createCreateProcessor(EntityManager em, T entity) throws ProcessorException; - public Processor createUpdateProcessor(EntityManager em, + public Processor createUpdateProcessor(EntityManager em, T newEntity) throws ProcessorException; - public Processor createDeleteProcessor(EntityManager em, + public Processor createDeleteProcessor(EntityManager em, T entity) throws ProcessorException; } diff --git a/hsarback/src/de/hsadmin/core/qserv/QueueTask.java b/hsarback/src/de/hsadmin/core/qserv/QueueTask.java index bdcbb68..da1c081 100644 --- a/hsarback/src/de/hsadmin/core/qserv/QueueTask.java +++ b/hsarback/src/de/hsadmin/core/qserv/QueueTask.java @@ -7,7 +7,7 @@ import javax.persistence.EntityManager; import javax.persistence.FetchType; import javax.persistence.GenerationType; -import de.hsadmin.core.model.Entity; +import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.core.model.EntityInfo; import de.hsadmin.core.model.ModuleImpl; import de.hsadmin.mods.qstat.QTaskModuleImpl; @@ -18,7 +18,7 @@ import de.hsadmin.mods.user.UnixUser; @javax.persistence.SequenceGenerator(name = "QueueTaskSeqGen", sequenceName = "queue_task_id_seq") @EntityInfo(name = "Systemauftrag") @ModuleImpl(QTaskModuleImpl.class) -public class QueueTask extends Entity implements Serializable { +public class QueueTask extends AbstractEntity implements Serializable { private static final long serialVersionUID = 2171870783383767875L; diff --git a/hsarback/src/de/hsadmin/mods/cust/BankAccount.java b/hsarback/src/de/hsadmin/mods/cust/BankAccount.java index 6329954..1f45a5a 100644 --- a/hsarback/src/de/hsadmin/mods/cust/BankAccount.java +++ b/hsarback/src/de/hsadmin/mods/cust/BankAccount.java @@ -2,16 +2,57 @@ package de.hsadmin.mods.cust; import static javax.persistence.FetchType.EAGER; -import javax.persistence.EntityManager; +import java.io.Serializable; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EntityManager; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToOne; +import javax.persistence.Table; + +import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.mods.user.UnixUser; -@javax.persistence.Entity(name = "BankAccounts") -@javax.persistence.Table(name = "bank_account") -public class BankAccount extends de.hsadmin.core.model.Entity implements - java.io.Serializable { +@Entity(name = "BankAccounts") +@Table(name = "bank_account") +public class BankAccount extends AbstractEntity implements Serializable { + private static final long serialVersionUID = 2965368183976686458L; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "bank_account_id", columnDefinition = "integer") + private long id; + + @JoinColumn(name = "bp_id", columnDefinition = "integer") + @OneToOne(fetch = EAGER) + private Customer customer; + + @Column(name = "autodebit_ga", columnDefinition = "boolean", nullable = true) + private Boolean autoDebitGA; + + @Column(name = "autodebit_ar", columnDefinition = "boolean", nullable = true) + private Boolean autoDebitAR; + + @Column(name = "autodebit_op", columnDefinition = "boolean", nullable = true) + private Boolean autoDebitOP; + + @Column(name = "bank_customer", columnDefinition = "character varying(50)", nullable = true) + private String bankCustomer; + + @Column(name = "bank_account", columnDefinition = "character varying(10)", nullable = true) + private String bankAccount; + + @Column(name = "bank_code", columnDefinition = "character varying(8)", nullable = true) + private String bankCode; + + @Column(name = "bank_name", columnDefinition = "character varying(50)", nullable = true) + private String bankName; + public static String createQueryFromStringKey(String humanKey) { return "customer.name = " + humanKey; } @@ -26,13 +67,6 @@ public class BankAccount extends de.hsadmin.core.model.Entity implements return id; } - // attribute id - @javax.persistence.Id - @javax.persistence.GeneratedValue(strategy = javax.persistence.GenerationType.SEQUENCE) - @javax.persistence.SequenceGenerator(name = "bank_account_id_seq_gen", sequenceName = "bank_account_bank_account_i_seq", allocationSize = 20) - @javax.persistence.Column(name = "bank_account_id", columnDefinition = "integer") - private long id; - public long getId() { return id; } @@ -41,11 +75,6 @@ public class BankAccount extends de.hsadmin.core.model.Entity implements this.id = id; } - // attribute customer - @javax.persistence.JoinColumn(name = "bp_id", columnDefinition = "integer") - @javax.persistence.OneToOne(fetch = EAGER) - private Customer customer; - public Customer getCustomer() { return customer; } @@ -54,10 +83,6 @@ public class BankAccount extends de.hsadmin.core.model.Entity implements this.customer = customer; } - // attribute autoDebitGA - @javax.persistence.Column(name = "autodebit_ga", columnDefinition = "boolean", nullable = true) - private Boolean autoDebitGA; - public Boolean isAutoDebitGA() { return autoDebitGA; } @@ -70,10 +95,6 @@ public class BankAccount extends de.hsadmin.core.model.Entity implements this.autoDebitGA = autoDebitGA; } - // attribute autoDebitAR - @javax.persistence.Column(name = "autodebit_ar", columnDefinition = "boolean", nullable = true) - private Boolean autoDebitAR; - public Boolean isAutoDebitAR() { return autoDebitAR; } @@ -86,10 +107,6 @@ public class BankAccount extends de.hsadmin.core.model.Entity implements this.autoDebitAR = autoDebitAR; } - // attribute autoDebitOP - @javax.persistence.Column(name = "autodebit_op", columnDefinition = "boolean", nullable = true) - private Boolean autoDebitOP; - public Boolean isAutoDebitOP() { return autoDebitOP; } @@ -102,10 +119,6 @@ public class BankAccount extends de.hsadmin.core.model.Entity implements this.autoDebitOP = autoDebitOP; } - // attribute bankCustomer - @javax.persistence.Column(name = "bank_customer", columnDefinition = "character varying(50)", nullable = true) - private String bankCustomer; - public String getBankCustomer() { return bankCustomer; } @@ -114,10 +127,6 @@ public class BankAccount extends de.hsadmin.core.model.Entity implements this.bankCustomer = bankCustomer; } - // attribute bankAccount - @javax.persistence.Column(name = "bank_account", columnDefinition = "character varying(10)", nullable = true) - private String bankAccount; - public String getBankAccount() { return bankAccount; } @@ -126,10 +135,6 @@ public class BankAccount extends de.hsadmin.core.model.Entity implements this.bankAccount = bankAccount; } - // attribute bankCode - @javax.persistence.Column(name = "bank_code", columnDefinition = "character varying(8)", nullable = true) - private String bankCode; - public String getBankCode() { return bankCode; } @@ -138,10 +143,6 @@ public class BankAccount extends de.hsadmin.core.model.Entity implements this.bankCode = bankCode; } - // attribute bankName - @javax.persistence.Column(name = "bank_name", columnDefinition = "character varying(50)", nullable = true) - private String bankName; - public String getBankName() { return bankName; } @@ -150,13 +151,11 @@ public class BankAccount extends de.hsadmin.core.model.Entity implements this.bankName = bankName; } - // / {$inheritDoc} @Override public boolean isNew() { return id == 0; } - // / {@inheritDoc} @Override public UnixUser owningUser(EntityManager em) { return customer.owningUser(em); diff --git a/hsarback/src/de/hsadmin/mods/cust/Contact.java b/hsarback/src/de/hsadmin/mods/cust/Contact.java index 4640f56..275ee46 100644 --- a/hsarback/src/de/hsadmin/mods/cust/Contact.java +++ b/hsarback/src/de/hsadmin/mods/cust/Contact.java @@ -1,88 +1,72 @@ package de.hsadmin.mods.cust; import static javax.persistence.FetchType.EAGER; -import static javax.persistence.GenerationType.SEQUENCE; + +import java.io.Serializable; import javax.persistence.EntityManager; +import javax.persistence.GenerationType; +import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.mods.user.UnixUser; @javax.persistence.Entity(name = "Contacts") @javax.persistence.Table(name = "contact") -@javax.persistence.SequenceGenerator(name = "ContactsSeqGen", sequenceName = "contact_contact_id_seq") -public class Contact extends de.hsadmin.core.model.Entity implements - java.io.Serializable { +public class Contact extends AbstractEntity implements Serializable { private static final long serialVersionUID = 9119607911598098558L; - // attribute id @javax.persistence.Id - @javax.persistence.GeneratedValue(strategy = SEQUENCE, generator = "ContactsSeqGen") + @javax.persistence.GeneratedValue(strategy = GenerationType.IDENTITY) @javax.persistence.Column(name = "contact_id", columnDefinition = "integer") private long id; - // attribute customer @javax.persistence.JoinColumn(name = "bp_id", columnDefinition = "integer") @javax.persistence.ManyToOne(fetch = EAGER) private Customer customer; - // attribute salut @javax.persistence.Column(name = "salut", columnDefinition = "character varying(30)") private String salut; - // attribute firstName @javax.persistence.Column(name = "first_name", columnDefinition = "character varying(40)") private String firstName; - // attribute lastName @javax.persistence.Column(name = "last_name", columnDefinition = "character varying(40)") private String lastName; - // attribute title @javax.persistence.Column(name = "title", columnDefinition = "character varying(20)") private String title; - // attribute firma @javax.persistence.Column(name = "firma", columnDefinition = "character varying(120)") private String firma; - // attribute co @javax.persistence.Column(name = "co", columnDefinition = "character varying(50)") private String co; - // attribute street @javax.persistence.Column(name = "street", columnDefinition = "character varying(50)") private String street; - // attribute zipCode @javax.persistence.Column(name = "zipcode", columnDefinition = "character varying(10)") private String zipCode; - // attribute city @javax.persistence.Column(name = "city", columnDefinition = "character varying(40)") private String city; - // attribute country @javax.persistence.Column(name = "country", columnDefinition = "character varying(30)") private String country; - // attribute phonePrivate @javax.persistence.Column(name = "phone_private", columnDefinition = "character varying(30)") private String phonePrivate; - // attribute phoneOffice @javax.persistence.Column(name = "phone_office", columnDefinition = "character varying(30)") private String phoneOffice; - // attribute phoneMobile @javax.persistence.Column(name = "phone_mobile", columnDefinition = "character varying(30)") private String phoneMobile; - // attribute fax @javax.persistence.Column(name = "fax", columnDefinition = "character varying(30)") private String fax; - // attribute email @javax.persistence.Column(name = "email", columnDefinition = "character varying(50)") private String email; @@ -115,18 +99,15 @@ public class Contact extends de.hsadmin.core.model.Entity implements this.email = email; } - // / {@inheritDoc} public static String createQueryFromStringKey(String humanKey) { return "name='" + humanKey + "'"; } - // / {@inheritDoc} @Override public String createStringKey() { return getCustomer().getName(); } - // / {@inheritDoc} @Override public long id() { return id; @@ -268,13 +249,11 @@ public class Contact extends de.hsadmin.core.model.Entity implements this.email = email; } - // / {$inheritDoc} @Override public boolean isNew() { return id == 0; } - // / {@inheritDoc} @Override public UnixUser owningUser(EntityManager em) { return null; // TODO: no access yet diff --git a/hsarback/src/de/hsadmin/mods/cust/Customer.java b/hsarback/src/de/hsadmin/mods/cust/Customer.java index 086b527..1989c92 100644 --- a/hsarback/src/de/hsadmin/mods/cust/Customer.java +++ b/hsarback/src/de/hsadmin/mods/cust/Customer.java @@ -3,78 +3,83 @@ package de.hsadmin.mods.cust; import static javax.persistence.CascadeType.ALL; import static javax.persistence.FetchType.EAGER; import static javax.persistence.FetchType.LAZY; -import static javax.persistence.GenerationType.SEQUENCE; import java.io.Serializable; import java.util.Date; import java.util.HashSet; import java.util.Set; +import javax.persistence.Column; +import javax.persistence.Entity; import javax.persistence.EntityManager; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.OrderBy; +import javax.persistence.Table; +import javax.persistence.Temporal; import de.hsadmin.mods.pac.Pac; import de.hsadmin.mods.user.UnixUser; -@javax.persistence.Entity(name = "Customers") -@javax.persistence.Table(name = "business_partner") -@javax.persistence.SequenceGenerator(name = "CustomersSeqGen", sequenceName = "business_partner_bp_id_seq") -public class Customer extends de.hsadmin.core.model.Entity implements Serializable { +@Entity(name = "Customers") +@Table(name = "business_partner") +public class Customer extends de.hsadmin.core.model.AbstractEntity implements Serializable { private static final long serialVersionUID = -7450594652238392616L; - @javax.persistence.Id - @javax.persistence.GeneratedValue(strategy = SEQUENCE, generator = "CustomersSeqGen") - @javax.persistence.Column(name = "bp_id", columnDefinition = "integer") + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "bp_id", columnDefinition = "integer") private long id; - @javax.persistence.Column(name = "member_id", columnDefinition = "integer") + @Column(name = "member_id", columnDefinition = "integer") private int memberNo; - @javax.persistence.Column(name = "member_code", columnDefinition = "character varying(20)") + @Column(name = "member_code", columnDefinition = "character varying(20)") private String name; - @javax.persistence.Column(name = "member_since", columnDefinition = "date", nullable = true) + @Column(name = "member_since", columnDefinition = "date", nullable = true) private Date memberSince; - @javax.persistence.Column(name = "member_until", columnDefinition = "date", nullable = true) - @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) + @Column(name = "member_until", columnDefinition = "date", nullable = true) + @Temporal(javax.persistence.TemporalType.DATE) private Date memberUntil; - @javax.persistence.Column(name = "member_role", columnDefinition = "character varying(100)", nullable = true) + @Column(name = "member_role", columnDefinition = "character varying(100)", nullable = true) private String memberRole; - @javax.persistence.Column(name = "author_contract", columnDefinition = "date", nullable = true) - @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) + @Column(name = "author_contract", columnDefinition = "date", nullable = true) + @Temporal(javax.persistence.TemporalType.DATE) private Date authorContract; - @javax.persistence.Column(name = "nondisc_contract", columnDefinition = "date", nullable = true) - @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) + @Column(name = "nondisc_contract", columnDefinition = "date", nullable = true) + @Temporal(javax.persistence.TemporalType.DATE) private Date nonDiscContract; - @javax.persistence.Column(name = "shares_updated", columnDefinition = "date", nullable = true) - @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) + @Column(name = "shares_updated", columnDefinition = "date", nullable = true) + @Temporal(javax.persistence.TemporalType.DATE) private Date sharesUpdated; - @javax.persistence.Column(name = "shares_signed", columnDefinition = "integer") + @Column(name = "shares_signed", columnDefinition = "integer") private int sharesSigned; - @javax.persistence.Column(name = "uid_vat", columnDefinition = "character varying(20)", nullable = true) + @Column(name = "uid_vat", columnDefinition = "character varying(20)", nullable = true) private String uidVAT; - @javax.persistence.OneToMany(fetch = EAGER, cascade = ALL, mappedBy = "customer") + @OneToMany(fetch = EAGER, cascade = ALL, mappedBy = "customer") private Set contacts; - // virtual attribute bankAccount - @javax.persistence.OneToOne(fetch = EAGER, cascade = ALL, mappedBy = "customer") + @OneToOne(fetch = EAGER, cascade = ALL, mappedBy = "customer") private BankAccount bankAccount; - // virtual attribute billData - @javax.persistence.OneToOne(fetch = EAGER, cascade = ALL, mappedBy = "customer") + @OneToOne(fetch = EAGER, cascade = ALL, mappedBy = "customer") private CustomersTariff billData; - // virtual attribute pacs - @javax.persistence.OneToMany(fetch = LAZY, cascade = ALL, mappedBy = "customer") - @javax.persistence.OrderBy("name") + @OneToMany(fetch = LAZY, cascade = ALL, mappedBy = "customer") + @OrderBy("name") private Set pacs; public Customer() { @@ -262,6 +267,6 @@ public class Customer extends de.hsadmin.core.model.Entity implements Serializab } public static String restriction() { - return "name=:loginUserName"; + return "obj.name=:loginUserName"; } } diff --git a/hsarback/src/de/hsadmin/mods/cust/CustomerModuleImpl.java b/hsarback/src/de/hsadmin/mods/cust/CustomerModuleImpl.java new file mode 100644 index 0000000..f3c6dcd --- /dev/null +++ b/hsarback/src/de/hsadmin/mods/cust/CustomerModuleImpl.java @@ -0,0 +1,7 @@ +package de.hsadmin.mods.cust; + +import de.hsadmin.core.model.AbstractModuleImpl; + +public class CustomerModuleImpl extends AbstractModuleImpl { + +} diff --git a/hsarback/src/de/hsadmin/mods/cust/CustomersTariff.java b/hsarback/src/de/hsadmin/mods/cust/CustomersTariff.java index a596727..04cfb2e 100644 --- a/hsarback/src/de/hsadmin/mods/cust/CustomersTariff.java +++ b/hsarback/src/de/hsadmin/mods/cust/CustomersTariff.java @@ -1,23 +1,63 @@ package de.hsadmin.mods.cust; import static javax.persistence.FetchType.EAGER; -import static javax.persistence.GenerationType.SEQUENCE; +import java.io.Serializable; import java.util.Date; import javax.persistence.EntityManager; +import javax.persistence.GenerationType; +import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.mods.user.UnixUser; @javax.persistence.Entity(name = "CustomersTariffs") @javax.persistence.Table(name = "billdata") -@javax.persistence.SequenceGenerator(name = "CustomersTariffsSeqGen", sequenceName = "billdata_billdata_id_seq") -public class CustomersTariff extends de.hsadmin.core.model.Entity implements - java.io.Serializable { +public class CustomersTariff extends AbstractEntity implements Serializable { private static final long serialVersionUID = -3628577459027111705L; - // / bean ctor + @javax.persistence.Id + @javax.persistence.GeneratedValue(strategy = GenerationType.IDENTITY) + @javax.persistence.Column(name = "billdata_id", columnDefinition = "integer") + private long id; + + @javax.persistence.JoinColumn(name = "bp_id", columnDefinition = "integer") + @javax.persistence.OneToOne(fetch = EAGER) + private Customer customer; + + @javax.persistence.Column(name = "tariff_domain_discount_since", columnDefinition = "date") + @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) + private Date domainDiscountSince; + + @javax.persistence.Column(name = "tariff_domain_discount_until", columnDefinition = "date") + @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) + private Date domainDiscountUntil; + + @javax.persistence.Column(name = "tariff_traffic_discount_since", columnDefinition = "date") + @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) + private Date trafficDiscountSince; + + @javax.persistence.Column(name = "tariff_traffic_discount_until", columnDefinition = "date") + @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) + private Date trafficDiscountUntil; + + @javax.persistence.Column(name = "tariff_quota_discount_since", columnDefinition = "date") + @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) + private Date quotaDiscountSince; + + @javax.persistence.Column(name = "tariff_quota_discount_until", columnDefinition = "date") + @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) + private Date quotaDiscountUntil; + + @javax.persistence.Column(name = "tariff_discount_since", columnDefinition = "date") + @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) + private Date discountSince; + + @javax.persistence.Column(name = "tariff_discount_until", columnDefinition = "date") + @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) + private Date discountUntil; + public CustomersTariff() { } @@ -25,29 +65,20 @@ public class CustomersTariff extends de.hsadmin.core.model.Entity implements this.customer = cust; } - // / {@inheritDoc} public static String createQueryFromStringKey(String humanKey) { return "customer.name = '" + humanKey + "'"; } - // / {@inheritDoc} @Override public String createStringKey() { return getCustomer().getName(); } - // / {@inheritDoc} @Override public long id() { return id; } - // attribute id - @javax.persistence.Id - @javax.persistence.GeneratedValue(strategy = SEQUENCE, generator = "CustomersTariffsSeqGen") - @javax.persistence.Column(name = "billdata_id", columnDefinition = "integer") - private long id; - public long getId() { return id; } @@ -56,12 +87,6 @@ public class CustomersTariff extends de.hsadmin.core.model.Entity implements this.id = id; } - // attribute customer - @javax.persistence.JoinColumn(name = "bp_id", columnDefinition = "integer") - @javax.persistence.OneToOne(fetch = EAGER) - // TODO: das will ich gar nicht, geht aber nicht ohne?!? - private Customer customer; - public Customer getCustomer() { return customer; } @@ -70,11 +95,6 @@ public class CustomersTariff extends de.hsadmin.core.model.Entity implements this.customer = customer; } - // attribute domainDiscountSince - @javax.persistence.Column(name = "tariff_domain_discount_since", columnDefinition = "date") - @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) - private Date domainDiscountSince; - public Date getDomainDiscountSince() { return domainDiscountSince; } @@ -83,11 +103,6 @@ public class CustomersTariff extends de.hsadmin.core.model.Entity implements this.domainDiscountSince = domainDiscountSince; } - // attribute domainDiscountUntil - @javax.persistence.Column(name = "tariff_domain_discount_until", columnDefinition = "date") - @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) - private Date domainDiscountUntil; - public Date getDomainDiscountUntil() { return domainDiscountUntil; } @@ -96,11 +111,6 @@ public class CustomersTariff extends de.hsadmin.core.model.Entity implements this.domainDiscountUntil = domainDiscountUntil; } - // attribute trafficDiscountSince - @javax.persistence.Column(name = "tariff_traffic_discount_since", columnDefinition = "date") - @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) - private Date trafficDiscountSince; - public Date getTrafficDiscountSince() { return trafficDiscountSince; } @@ -109,11 +119,6 @@ public class CustomersTariff extends de.hsadmin.core.model.Entity implements this.trafficDiscountSince = trafficDiscountSince; } - // attribute trafficDiscountUntil - @javax.persistence.Column(name = "tariff_traffic_discount_until", columnDefinition = "date") - @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) - private Date trafficDiscountUntil; - public Date getTrafficDiscountUntil() { return trafficDiscountUntil; } @@ -122,11 +127,6 @@ public class CustomersTariff extends de.hsadmin.core.model.Entity implements this.trafficDiscountUntil = trafficDiscountUntil; } - // attribute quotaDiscountSince - @javax.persistence.Column(name = "tariff_quota_discount_since", columnDefinition = "date") - @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) - private Date quotaDiscountSince; - public Date getQuotaDiscountSince() { return quotaDiscountSince; } @@ -135,11 +135,6 @@ public class CustomersTariff extends de.hsadmin.core.model.Entity implements this.quotaDiscountSince = quotaDiscountSince; } - // attribute quotaDiscountUntil - @javax.persistence.Column(name = "tariff_quota_discount_until", columnDefinition = "date") - @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) - private Date quotaDiscountUntil; - public Date getQuotaDiscountUntil() { return quotaDiscountUntil; } @@ -148,11 +143,6 @@ public class CustomersTariff extends de.hsadmin.core.model.Entity implements this.quotaDiscountUntil = quotaDiscountUntil; } - // attribute discountSince - @javax.persistence.Column(name = "tariff_discount_since", columnDefinition = "date") - @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) - private Date discountSince; - public Date getDiscountSince() { return discountSince; } @@ -161,11 +151,6 @@ public class CustomersTariff extends de.hsadmin.core.model.Entity implements this.discountSince = discountSince; } - // attribute discountUntil - @javax.persistence.Column(name = "tariff_discount_until", columnDefinition = "date") - @javax.persistence.Temporal(javax.persistence.TemporalType.DATE) - private Date discountUntil; - public Date getDiscountUntil() { return discountUntil; } @@ -174,13 +159,11 @@ public class CustomersTariff extends de.hsadmin.core.model.Entity implements this.discountUntil = discountUntil; } - // / {$inheritDoc} @Override public boolean isNew() { return id == 0; } - // / {@inheritDoc} @Override public UnixUser owningUser(EntityManager em) { return customer.owningUser(em); diff --git a/hsarback/src/de/hsadmin/mods/pac/BaseComponent.java b/hsarback/src/de/hsadmin/mods/pac/BaseComponent.java index d8eb378..133b25d 100644 --- a/hsarback/src/de/hsadmin/mods/pac/BaseComponent.java +++ b/hsarback/src/de/hsadmin/mods/pac/BaseComponent.java @@ -11,7 +11,7 @@ import de.hsadmin.mods.user.UnixUser; @javax.persistence.Entity(name = "BaseComponents") @javax.persistence.Table(name = " basecomponent") @javax.persistence.SequenceGenerator(name = "BaseComponentsSeqGen", sequenceName = "basecomponent_basecomponent_seq") -public class BaseComponent extends de.hsadmin.core.model.Entity implements Serializable { +public class BaseComponent extends de.hsadmin.core.model.AbstractEntity implements Serializable { private static final long serialVersionUID = -8161827018235142603L; diff --git a/hsarback/src/de/hsadmin/mods/pac/Hive.java b/hsarback/src/de/hsadmin/mods/pac/Hive.java index cf7512e..fe975f8 100644 --- a/hsarback/src/de/hsadmin/mods/pac/Hive.java +++ b/hsarback/src/de/hsadmin/mods/pac/Hive.java @@ -15,7 +15,7 @@ import de.hsadmin.mods.user.UnixUser; @javax.persistence.Table(name="hive") @javax.persistence.SequenceGenerator(name="HivesSeqGen", sequenceName="hive_hive_id_seq") public class Hive - extends de.hsadmin.core.model.Entity + extends de.hsadmin.core.model.AbstractEntity implements java.io.Serializable { private static final long serialVersionUID = -2270234313165009590L; diff --git a/hsarback/src/de/hsadmin/mods/pac/INetAddress.java b/hsarback/src/de/hsadmin/mods/pac/INetAddress.java index 0f28fc7..53130a7 100644 --- a/hsarback/src/de/hsadmin/mods/pac/INetAddress.java +++ b/hsarback/src/de/hsadmin/mods/pac/INetAddress.java @@ -10,7 +10,7 @@ import de.hsadmin.mods.user.UnixUser; @javax.persistence.Table(name="inet_addr") @javax.persistence.SequenceGenerator(name="INetAddressesSeqGen", sequenceName="inet_addr_inet_addr_id_seq") public class INetAddress - extends de.hsadmin.core.model.Entity + extends de.hsadmin.core.model.AbstractEntity implements java.io.Serializable { private static final long serialVersionUID = -5792279453911426607L; diff --git a/hsarback/src/de/hsadmin/mods/pac/Pac.java b/hsarback/src/de/hsadmin/mods/pac/Pac.java index 0b8c86a..919396b 100644 --- a/hsarback/src/de/hsadmin/mods/pac/Pac.java +++ b/hsarback/src/de/hsadmin/mods/pac/Pac.java @@ -17,7 +17,7 @@ import de.hsadmin.mods.user.UnixUser; @javax.persistence.Table(name = "packet") @javax.persistence.SequenceGenerator(name = "PacsSeqGen", sequenceName = "packet_packet_id_seq") @de.hsadmin.core.model.EntityInfo(name = "Paket") -public class Pac extends de.hsadmin.core.model.Entity implements Serializable { +public class Pac extends de.hsadmin.core.model.AbstractEntity implements Serializable { private static final long serialVersionUID = 1201899873300190132L; diff --git a/hsarback/src/de/hsadmin/mods/qstat/QTaskModuleImpl.java b/hsarback/src/de/hsadmin/mods/qstat/QTaskModuleImpl.java index ea23346..0ac3ae1 100644 --- a/hsarback/src/de/hsadmin/mods/qstat/QTaskModuleImpl.java +++ b/hsarback/src/de/hsadmin/mods/qstat/QTaskModuleImpl.java @@ -3,7 +3,7 @@ package de.hsadmin.mods.qstat; import java.util.List; import de.hsadmin.core.model.AbstractModuleImpl; -import de.hsadmin.core.model.Entity; +import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.core.model.HSAdminException; import de.hsadmin.mods.user.UnixUser; @@ -15,7 +15,7 @@ public class QTaskModuleImpl extends AbstractModuleImpl { } @Override - public List search(Class entityClass, String condition, String orderBy) throws HSAdminException { + public List search(Class entityClass, String condition, String orderBy) throws HSAdminException { // do query and return result if (orderBy == null || orderBy.length() == 0) { orderBy = "ORDER BY obj.started DESC"; diff --git a/hsarback/src/de/hsadmin/mods/user/UnixUser.java b/hsarback/src/de/hsadmin/mods/user/UnixUser.java index 76619c5..9f0c699 100644 --- a/hsarback/src/de/hsadmin/mods/user/UnixUser.java +++ b/hsarback/src/de/hsadmin/mods/user/UnixUser.java @@ -23,7 +23,7 @@ import de.hsadmin.mods.pac.Pac; @Table(name = "unixuser") @SequenceGenerator(name = "UnixUsersSeqGen", sequenceName = "unixuser_unixuser_id_seq") @EntityInfo(name = "UNIX-Zugang/Mailbox") -public class UnixUser extends de.hsadmin.core.model.Entity implements Serializable { +public class UnixUser extends de.hsadmin.core.model.AbstractEntity implements Serializable { private static final long serialVersionUID = 7823071611805642906L; diff --git a/hsarback/src/de/hsadmin/mods/user/UnixUserModuleImpl.java b/hsarback/src/de/hsadmin/mods/user/UnixUserModuleImpl.java index 8cb217f..834ad69 100644 --- a/hsarback/src/de/hsadmin/mods/user/UnixUserModuleImpl.java +++ b/hsarback/src/de/hsadmin/mods/user/UnixUserModuleImpl.java @@ -7,7 +7,7 @@ import javax.persistence.EntityManager; import javax.persistence.Query; import de.hsadmin.core.model.AuthorisationException; -import de.hsadmin.core.model.Entity; +import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.core.model.AbstractModuleImpl; import de.hsadmin.core.model.HSAdminException; import de.hsadmin.mods.pac.Pac; @@ -20,14 +20,14 @@ public class UnixUserModuleImpl extends AbstractModuleImpl { } @Override - public Entity initialize(Entity newEntity) throws AuthorisationException { + public AbstractEntity initialize(AbstractEntity newEntity) throws AuthorisationException { UnixUser newUnixUser = (UnixUser) super.initialize(newEntity); newUnixUser.setName(getLoginUser().getPac().getName() + '-'); return newUnixUser; } @Override - public Entity find(Class entityClass, Object key) throws HSAdminException { + public AbstractEntity find(Class entityClass, Object key) throws HSAdminException { // do query UnixUser res = (UnixUser) super.find(entityClass, key); @@ -39,7 +39,7 @@ public class UnixUserModuleImpl extends AbstractModuleImpl { } @Override - public Entity findByString(Class entityClass, String key) throws HSAdminException { + public AbstractEntity findByString(Class entityClass, String key) throws HSAdminException { // do query UnixUser res = (UnixUser) super.findByString(entityClass, key); @@ -49,17 +49,17 @@ public class UnixUserModuleImpl extends AbstractModuleImpl { } @Override - public List search(Class entityClass, String condition, String orderBy) throws HSAdminException { + public List search(Class entityClass, String condition, String orderBy) throws HSAdminException { // do query if (orderBy == null || orderBy.length() == 0) { orderBy = "ORDER BY obj.name ASC"; } - List res = super.search(entityClass, condition, orderBy); - List ret = new LinkedList(); + List res = super.search(entityClass, condition, orderBy); + List ret = new LinkedList(); // remove entities where login user has no access rights if (res != null) { - for (Entity entity : res) { + for (AbstractEntity entity : res) { try { UnixUser returnedUnixUser = (UnixUser) entity; needsPartialAccessOnPacOf(returnedUnixUser, "search"); @@ -74,7 +74,7 @@ public class UnixUserModuleImpl extends AbstractModuleImpl { } @Override - public Entity add(Entity newEntity) throws HSAdminException { + public AbstractEntity add(AbstractEntity newEntity) throws HSAdminException { EntityManager em = getEntityManager(); // only allow pac which matches the username (TODO: hard coded // Hostsharing convention) @@ -143,7 +143,7 @@ public class UnixUserModuleImpl extends AbstractModuleImpl { } @Override - public Entity update(Entity existingEntity) throws HSAdminException { + public AbstractEntity update(AbstractEntity existingEntity) throws HSAdminException { // get the entity from the database UnixUser detachedUnixUser = (UnixUser) existingEntity; UnixUser attachedUnixUser = getEntityManager().find(detachedUnixUser.getClass(), @@ -202,7 +202,7 @@ public class UnixUserModuleImpl extends AbstractModuleImpl { } @Override - public void delete(Entity existingEntity) throws HSAdminException { + public void delete(AbstractEntity existingEntity) throws HSAdminException { // get the entity from the database UnixUser detachedUnixUser = (UnixUser) existingEntity; UnixUser attachedUnixUser = getEntityManager().find(detachedUnixUser.getClass(), diff --git a/hsarback/src/de/hsadmin/mods/user/UnixUserProcessorFactory.java b/hsarback/src/de/hsadmin/mods/user/UnixUserProcessorFactory.java index c9ded82..6bc8db7 100644 --- a/hsarback/src/de/hsadmin/mods/user/UnixUserProcessorFactory.java +++ b/hsarback/src/de/hsadmin/mods/user/UnixUserProcessorFactory.java @@ -5,7 +5,7 @@ import java.util.Date; import javax.persistence.EntityManager; -import de.hsadmin.core.model.Entity; +import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.core.qserv.CompoundProcessor; import de.hsadmin.core.qserv.EntityProcessorFactory; import de.hsadmin.core.qserv.Processor; @@ -22,7 +22,7 @@ public class UnixUserProcessorFactory implements EntityProcessorFactory { /** * @return a Processor which creates a new UNIX user account */ - public Processor createCreateProcessor(EntityManager em, + public Processor createCreateProcessor(EntityManager em, T entity) { UnixUser user = (UnixUser) entity; CompoundProcessor aCP = new CompoundProcessor(new ShellProcessor( @@ -38,7 +38,7 @@ public class UnixUserProcessorFactory implements EntityProcessorFactory { /** * @return a Processor which updates an existing UNIX user account */ - public Processor createUpdateProcessor(EntityManager em, + public Processor createUpdateProcessor(EntityManager em, T entity) { UnixUser user = (UnixUser) entity; CompoundProcessor aCP = new CompoundProcessor(new ShellProcessor( @@ -55,7 +55,7 @@ public class UnixUserProcessorFactory implements EntityProcessorFactory { /** * @return a Processor which deletes an existing UNIX user account */ - public Processor createDeleteProcessor(EntityManager em, + public Processor createDeleteProcessor(EntityManager em, T entity) { SimpleDateFormat sdf = new SimpleDateFormat("yyyMMdd-HHmm-"); String trashPrefix = "/home/trash/" + sdf.format(new Date()); diff --git a/hsarback/src/de/hsadmin/remote/AbstractRemote.java b/hsarback/src/de/hsadmin/remote/AbstractRemote.java index 3150fd8..1eadc6c 100644 --- a/hsarback/src/de/hsadmin/remote/AbstractRemote.java +++ b/hsarback/src/de/hsadmin/remote/AbstractRemote.java @@ -10,7 +10,7 @@ import java.util.Map; import de.hsadmin.core.model.AuthenticationException; import de.hsadmin.core.model.AuthorisationException; -import de.hsadmin.core.model.Entity; +import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.core.model.GenericModuleImpl; import de.hsadmin.core.model.HSAdminException; import de.hsadmin.core.model.ModuleInterface; @@ -26,17 +26,14 @@ public abstract class AbstractRemote implements IRemote { authentication = new TicketAuthentication(); } - protected abstract Class getEntityClass(); + protected abstract Class getEntityClass(); - protected abstract void entity2map(Entity entity, Map resultMap); + protected abstract void entity2map(AbstractEntity entity, Map resultMap); - protected abstract void map2entity(Map setParams, Entity entity); + protected abstract void map2entity(Map setParams, AbstractEntity entity); protected abstract void regularizeKeys(Map whereParams); - /* (non-Javadoc) - * @see de.hsadmin.remote.IRemote#search(java.lang.String, java.lang.String, java.util.Map) - */ public List> search(String runAsUser, String ticket, Map whereParams) throws HSAdminException { String user = runAsUser; @@ -46,10 +43,13 @@ public abstract class AbstractRemote implements IRemote { ModuleInterface module = new GenericModuleImpl(transaction); UnixUser unixUser = null; unixUser = (UnixUser) module.findByString(UnixUser.class, user); - List list = module.search(getEntityClass(), + List list = module.search(getEntityClass(), buildQueryCondition(whereParams), null); + if (list == null) { + throw new HSAdminException("result list is null, runtime-error?"); + } ArrayList> result = new ArrayList>(); - for (Entity e : list) { + for (AbstractEntity e : list) { HashMap entry = new HashMap(); entity2map(e, entry); if (e.isReadAllowedFor(unixUser)) { @@ -69,9 +69,6 @@ public abstract class AbstractRemote implements IRemote { } } - /* (non-Javadoc) - * @see de.hsadmin.remote.IRemote#add(java.lang.String, java.lang.String, java.util.Map) - */ public Map add(String runAsUser, String ticket, Map setParams) throws HSAdminException { String user = runAsUser; @@ -79,12 +76,12 @@ public abstract class AbstractRemote implements IRemote { try { if (authentication.login(user, ticket)) { ModuleInterface module = new GenericModuleImpl(transaction); - Constructor constructor = + Constructor constructor = getEntityClass().getConstructor(); - Entity entity = constructor.newInstance(); + AbstractEntity entity = constructor.newInstance(); map2entity(setParams, entity); transaction.beginTransaction(); - Entity insertedEntity = module.add(entity); + AbstractEntity insertedEntity = module.add(entity); transaction.commitTransaction(); HashMap entry = new HashMap(); entity2map(insertedEntity, entry); @@ -99,9 +96,6 @@ public abstract class AbstractRemote implements IRemote { } } - /* (non-Javadoc) - * @see de.hsadmin.remote.IRemote#delete(java.lang.String, java.lang.String, java.util.Map) - */ public void delete(String runAsUser, String ticket, Map whereParams) throws HSAdminException { String user = runAsUser; @@ -116,10 +110,10 @@ public abstract class AbstractRemote implements IRemote { throw new HSAdminException( "better safe than sorry: no where parameter found"); } - List list = module.search(getEntityClass(), + List list = module.search(getEntityClass(), queryCondition, null); transaction.beginTransaction(); - for (Entity e : list) { + for (AbstractEntity e : list) { if (e.isWriteAllowedFor(unixUser)) { module.delete(e); } else { @@ -139,9 +133,6 @@ public abstract class AbstractRemote implements IRemote { } } - /* (non-Javadoc) - * @see de.hsadmin.remote.IRemote#update(java.lang.String, java.lang.String, java.util.Map, java.util.Map) - */ public List> update(String runAsUser, String ticket, Map setParams, Map whereParams) throws HSAdminException { @@ -158,10 +149,10 @@ public abstract class AbstractRemote implements IRemote { throw new HSAdminException( "better safe than sorry: no where parameter found"); } - List list = module.search(getEntityClass(), - queryCondition, "ORDER BY name ASC"); + List list = module.search(getEntityClass(), + queryCondition, "ORDER BY obj.name ASC"); transaction.beginTransaction(); - for (Entity update : list) { + for (AbstractEntity update : list) { if (update.isWriteAllowedFor(unixUser)) { transaction.detach(update); map2entity(setParams, update); diff --git a/hsarback/src/de/hsadmin/remote/CustomerRemote.java b/hsarback/src/de/hsadmin/remote/CustomerRemote.java new file mode 100644 index 0000000..e04900a --- /dev/null +++ b/hsarback/src/de/hsadmin/remote/CustomerRemote.java @@ -0,0 +1,269 @@ +package de.hsadmin.remote; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; +import java.util.Set; + +import de.hsadmin.core.model.AbstractEntity; +import de.hsadmin.mods.cust.BankAccount; +import de.hsadmin.mods.cust.Contact; +import de.hsadmin.mods.cust.Customer; + +public class CustomerRemote extends AbstractRemote { + + private static final DateFormat df = SimpleDateFormat.getDateInstance(DateFormat.SHORT); + + @Override + protected Class getEntityClass() { + return Customer.class; + } + + @Override + protected void entity2map(AbstractEntity entity, + Map resultMap) { + Customer cust = (Customer) entity; + resultMap.put("id", Long.toString(cust.getId())); + resultMap.put("membercode", cust.getName()); + resultMap.put("memberno", Integer.toString(cust.getMemberNo())); + Date memberSince = cust.getMemberSince(); + if (assertNotNull(memberSince)) { + resultMap.put("membersince", df.format(memberSince)); + } + Date memberUntil = cust.getMemberUntil(); + if (assertNotNull(memberUntil)) { + resultMap.put("memberuntil", df.format(memberUntil)); + } + resultMap.put("memberrole", cust.getMemberRole()); + Date authorContract = cust.getAuthorContract(); + if (assertNotNull(authorContract)) { + resultMap.put("authorcontract", df.format(authorContract)); + } + Date nonDiscContract = cust.getNonDiscContract(); + if (assertNotNull(nonDiscContract)) { + resultMap.put("nondisccontract", df.format(nonDiscContract)); + } + Date sharesUpdated = cust.getSharesUpdated(); + if (assertNotNull(sharesUpdated)) { + resultMap.put("sharesupdated", df.format(sharesUpdated)); + } + resultMap.put("sharessigned", Integer.toString(cust.getSharesSigned())); + resultMap.put("uidvat", cust.getUidVAT()); + BankAccount bank = cust.getBankAccount(); + if (bank != null) { + resultMap.put("autodebit_ga", bank.getAutoDebitGA() != null && bank.getAutoDebitGA() ? "Yes" : "No"); + resultMap.put("autodebit_ar", bank.getAutoDebitAR() != null && bank.getAutoDebitAR() ? "Yes" : "No"); + resultMap.put("autodebit_op", bank.getAutoDebitOP() != null && bank.getAutoDebitOP() ? "Yes" : "No"); + resultMap.put("bank_customer", bank.getBankCustomer()); + resultMap.put("bank_account", bank.getBankAccount()); + resultMap.put("bank_code", bank.getBankCode()); + resultMap.put("bank_name", bank.getBankName()); + } + Set contacts = cust.getContacts(); + if (contacts != null && !contacts.isEmpty()) { + Contact c = contacts.iterator().next(); + resultMap.put("contact_salut", c.getSalut()); + resultMap.put("contact_title", c.getTitle()); + resultMap.put("contact_firstname", c.getFirstName()); + resultMap.put("contact_lastname", c.getLastName()); + resultMap.put("contact_firma", c.getFirma()); + resultMap.put("contact_co", c.getCo()); + resultMap.put("contact_street", c.getStreet()); + resultMap.put("contact_zipcode", c.getZipCode()); + resultMap.put("contact_city", c.getCity()); + resultMap.put("contact_country", c.getCountry()); + resultMap.put("contact_phone_private", c.getPhonePrivate()); + resultMap.put("contact_phone_office", c.getPhoneOffice()); + resultMap.put("contact_phone_mobile", c.getPhoneMobile()); + resultMap.put("contact_fax", c.getFax()); + resultMap.put("contact_email", c.getEmail()); + } + } + + @Override + protected void map2entity(Map setParams, + AbstractEntity entity) { + Customer cust = (Customer) entity; + String idStr = setParams.get("id"); + if (assertNotNull(idStr)) { + cust.setId(Long.parseLong(idStr)); + } + String memberCode = setParams.get("membercode"); + if (assertNotNull(memberCode)) { + cust.setName(memberCode); + } + String memberNo = setParams.get("memberno"); + if (assertNotNull(memberNo)) { + cust.setMemberNo(Integer.parseInt(memberNo)); + } + String memberSince = setParams.get("membersince"); + if (assertNotNull(memberSince)) { + try { + cust.setMemberSince(df.parse(memberSince)); + } catch (ParseException e) { + // don't care + } + } + String memberUntil = setParams.get("memberuntil"); + if (assertNotNull(memberUntil)) { + try { + cust.setMemberUntil(df.parse(memberUntil)); + } catch (ParseException e) { + // don't care + } + } + String memberRole = setParams.get("memberrole"); + if (assertNotNull(memberRole)) { + cust.setMemberRole(memberRole); + } + String authorContract = setParams.get("authorcontract"); + if (assertNotNull(authorContract)) { + try { + cust.setAuthorContract(df.parse(authorContract)); + } catch (ParseException e) { + // don't care + } + } + String nonDiscContract = setParams.get("nondisccontract"); + if (assertNotNull(nonDiscContract)) { + try { + cust.setNonDiscContract(df.parse(nonDiscContract)); + } catch (ParseException e) { + // don't care + } + } + String sharesUpdated = setParams.get("sharesupdated"); + if (assertNotNull(sharesUpdated)) { + try { + cust.setSharesUpdated(df.parse(sharesUpdated)); + } catch (ParseException e) { + // don't care + } + } + String sharesSigned = setParams.get("sharessigned"); + if (assertNotNull(sharesSigned)) { + cust.setId(Integer.parseInt(sharesSigned)); + } + String uidVat = setParams.get("uidvat"); + if (assertNotNull(uidVat)) { + cust.setUidVAT(uidVat); + } + BankAccount bank = cust.getBankAccount(); + if (bank == null) { + bank = new BankAccount(); + bank.setCustomer(cust); + cust.setBankAccount(bank); + } + String autoDebitGA = setParams.get("autodebit_ga"); + if (assertNotNull(autoDebitGA)) { + autoDebitGA = autoDebitGA.toUpperCase(); + bank.setAutoDebitGA(new Boolean(autoDebitGA.startsWith("T") || autoDebitGA.startsWith("Y"))); + } + String autoDebitAR = setParams.get("autodebit_ar"); + if (assertNotNull(autoDebitAR)) { + autoDebitAR = autoDebitAR.toUpperCase(); + bank.setAutoDebitAR(new Boolean(autoDebitAR.startsWith("T") || autoDebitAR.startsWith("Y"))); + } + String autoDebitOP = setParams.get("autodebit_op"); + if (assertNotNull(autoDebitOP)) { + autoDebitOP = autoDebitOP.toUpperCase(); + bank.setAutoDebitOP(new Boolean(autoDebitOP.startsWith("T") || autoDebitOP.startsWith("Y"))); + } + String bankCustomer = setParams.get("bank_customer"); + if (assertNotNull(bankCustomer)) { + bank.setBankCustomer(bankCustomer); + } + String bankAccount = setParams.get("bank_account"); + if (assertNotNull(bankAccount)) { + bank.setBankAccount(bankAccount); + } + String bankCode = setParams.get("bank_code"); + if (assertNotNull(bankCode)) { + bank.setBankCode(bankCode); + } + String bankName = setParams.get("bank_name"); + if (assertNotNull(bankName)) { + bank.setBankName(bankName); + } + Set contacts = cust.getContacts(); + Contact c = null; + if (contacts == null || contacts.isEmpty()) { + c = new Contact(cust); + contacts.add(c); + } else { + c = contacts.iterator().next(); + } + String salut = setParams.get("contact_salut"); + if (assertNotNull(salut)) { + c.setSalut(salut); + } + String title = setParams.get("contact_title"); + if (assertNotNull(title)) { + c.setTitle(title); + } + String firstName = setParams.get("contact_firstname"); + if (assertNotNull(firstName)) { + c.setFirstName(firstName); + } + String lastName = setParams.get("contact_lastname"); + if (assertNotNull(lastName)) { + c.setLastName(lastName); + } + String firma = setParams.get("contact_firma"); + if (assertNotNull(firma)) { + c.setLastName(firma); + } + String co = setParams.get("contact_co"); + if (assertNotNull(co)) { + c.setCo(co); + } + String street = setParams.get("contact_street"); + if (assertNotNull(street)) { + c.setStreet(street); + } + String zipCode = setParams.get("contact_zipcode"); + if (assertNotNull(zipCode)) { + c.setZipCode(zipCode); + } + String city = setParams.get("contact_city"); + if (assertNotNull(city)) { + c.setCity(city); + } + String country = setParams.get("contact_country"); + if (assertNotNull(country)) { + c.setCountry(country); + } + String phonePrivate = setParams.get("contact_phone_private"); + if (assertNotNull(phonePrivate)) { + c.setPhonePrivate(phonePrivate); + } + String phoneOffice = setParams.get("contact_phone_office"); + if (assertNotNull(phoneOffice)) { + c.setPhoneOffice(phoneOffice); + } + String phoneMobile = setParams.get("contact_phone_mobile"); + if (assertNotNull(phoneMobile)) { + c.setPhoneMobile(phoneMobile); + } + String fax = setParams.get("contact_fax"); + if (assertNotNull(fax)) { + c.setFax(fax); + } + String eMail = setParams.get("contact_email"); + if (assertNotNull(eMail)) { + c.setEmail(eMail); + } +} + + @Override + protected void regularizeKeys(Map whereParams) { + // nothing to do + replaceKey(whereParams, "membercode", "name"); + replaceKey(whereParams, "memberno", "memberNo"); + replaceKey(whereParams, "membersince", "memberSince"); + replaceKey(whereParams, "memberuntil", "memberUntil"); + } + +} diff --git a/hsarback/src/de/hsadmin/remote/QueueTaskRemote.java b/hsarback/src/de/hsadmin/remote/QueueTaskRemote.java index 7b2136e..53fdc61 100644 --- a/hsarback/src/de/hsadmin/remote/QueueTaskRemote.java +++ b/hsarback/src/de/hsadmin/remote/QueueTaskRemote.java @@ -5,7 +5,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; -import de.hsadmin.core.model.Entity; +import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.core.qserv.QueueTask; public class QueueTaskRemote extends AbstractRemote { @@ -13,12 +13,12 @@ public class QueueTaskRemote extends AbstractRemote { private static final DateFormat df = SimpleDateFormat.getDateInstance(DateFormat.SHORT); @Override - protected Class getEntityClass() { + protected Class getEntityClass() { return QueueTask.class; } @Override - protected void entity2map(Entity entity, Map resultMap) { + protected void entity2map(AbstractEntity entity, Map resultMap) { QueueTask task = (QueueTask) entity; resultMap.put("id", Long.toString(task.getId())); resultMap.put("status", task.getStatus().toString()); @@ -37,7 +37,7 @@ public class QueueTaskRemote extends AbstractRemote { } @Override - protected void map2entity(Map setParams, Entity entity) { + protected void map2entity(Map setParams, AbstractEntity entity) { // never used } diff --git a/hsarback/src/de/hsadmin/remote/UnixUserRemote.java b/hsarback/src/de/hsadmin/remote/UnixUserRemote.java index 1b3c849..db29a67 100644 --- a/hsarback/src/de/hsadmin/remote/UnixUserRemote.java +++ b/hsarback/src/de/hsadmin/remote/UnixUserRemote.java @@ -2,18 +2,18 @@ package de.hsadmin.remote; import java.util.Map; -import de.hsadmin.core.model.Entity; +import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.mods.user.UnixUser; public class UnixUserRemote extends AbstractRemote { @Override - protected Class getEntityClass() { + protected Class getEntityClass() { return UnixUser.class; } @Override - protected void entity2map(Entity entity, Map map) { + protected void entity2map(AbstractEntity entity, Map map) { UnixUser user = (UnixUser) entity; map.put("id", Long.toString(user.getId())); map.put("name", user.getName()); @@ -33,7 +33,7 @@ public class UnixUserRemote extends AbstractRemote { } @Override - protected void map2entity(Map map, Entity entity) { + protected void map2entity(Map map, AbstractEntity entity) { UnixUser user = (UnixUser) entity; String id = map.get("id"); if (assertNotNull(id)) { diff --git a/hsarback/src/org/apache/xmlrpc/webserver/XmlRpcServlet.properties b/hsarback/src/org/apache/xmlrpc/webserver/XmlRpcServlet.properties index fcef01f..413368f 100644 --- a/hsarback/src/org/apache/xmlrpc/webserver/XmlRpcServlet.properties +++ b/hsarback/src/org/apache/xmlrpc/webserver/XmlRpcServlet.properties @@ -1,2 +1,3 @@ +member=de.hsadmin.remote.CustomerRemote user=de.hsadmin.remote.UnixUserRemote q=de.hsadmin.remote.QueueTaskRemote diff --git a/hsarback/test/de/hsadmin/remote/CustomerTest.java b/hsarback/test/de/hsadmin/remote/CustomerTest.java new file mode 100644 index 0000000..8481679 --- /dev/null +++ b/hsarback/test/de/hsadmin/remote/CustomerTest.java @@ -0,0 +1,198 @@ +package de.hsadmin.remote; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.xmlrpc.XmlRpcException; +import org.apache.xmlrpc.client.XmlRpcClient; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class CustomerTest { + + private static final String MODULE = "member"; + + private XmlRpcClient client; + private RemoteCASHelper cas; + + @Before + public void setUp() throws Exception { + client = RemoteTestHelper.getClient(); + cas = new RemoteCASHelper(); + } + + @After + public void tearDown() throws Exception { + client = null; + cas = null; + } + + @Test + public void testAddAsHostmaster() { + String user = "pe"; + int membersCount = -9999; + try { + membersCount = getMembersCount(user); + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + String grantingTicketURL = cas.getGrantingTicketURL(user); + Map setParams = new HashMap(); + setParams.put("membercode", "hsh00-aaa"); + setParams.put("memberno", "20001"); + setParams.put("membersince", "01.10.2010"); + setParams.put("contact_salut", "Herr"); + setParams.put("contact_title", "Dr."); + setParams.put("contact_firstname", "Rainer"); + setParams.put("contact_lastname", "Mustermann"); + setParams.put("contact_salut", "Herr"); + setParams.put("contact_street", "Hauptstr. 1"); + setParams.put("contact_zipcode", "99998"); + setParams.put("contact_city", "Musterstadt"); + setParams.put("contact_country", "D"); + setParams.put("contact_phone_private", "+49 9999 123456"); + setParams.put("contact_email", "rainer.mustermann@example.org"); + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.BACKEND_URL), + setParams }; + try { + client.execute(MODULE + ".add", params); +// Object execute = client.execute(MODULE + ".add", params); +// Map result = (Map) execute; +// System.out.println(result); + assertEquals(membersCount + 1, getMembersCount(user)); + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + } + + @Test + public void testSearchAsHostmaster() { + String user = "pe"; + String grantingTicketURL = cas.getGrantingTicketURL(user); + Map whereParams = new HashMap(); + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.BACKEND_URL), + whereParams }; + try { + Object execute = client.execute(MODULE + ".search", params); + Object[] result = (Object[]) execute; + assertTrue(result.length > 100); + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + } + + @Test + public void testSearchAsPacAdmin() { + String user = "peh00"; + String grantingTicketURL = cas.getGrantingTicketURL(user); + Map whereParams = new HashMap(); + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.BACKEND_URL), + whereParams }; + try { + Object execute = client.execute(MODULE + ".search", params); + Object[] result = (Object[]) execute; + assertTrue(result.length == 0); + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + } + + @Test + public void testSearchAsPacUser() { + String user = "peh00-phor"; + String grantingTicketURL = cas.getGrantingTicketURL(user); + Map whereParams = new HashMap(); + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.BACKEND_URL), + whereParams }; + try { + Object execute = client.execute(MODULE + ".search", params); + Object[] result = (Object[]) execute; + assertTrue(result.length == 0); + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + } + + @Test + public void testSearchAsMember() { + String user = "hsh00-peh"; + String grantingTicketURL = cas.getGrantingTicketURL(user); + Map whereParams = new HashMap(); + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.BACKEND_URL), + whereParams }; + try { + Object execute = client.execute(MODULE + ".search", params); + Object[] result = (Object[]) execute; + assertTrue(result.length == 1); + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + } + + @Test + public void testDeleteAsMember() { + String user = "hsh00-aaa"; + int membersCount = -9999; + try { + membersCount = getMembersCount(user); + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + String grantingTicketURL = cas.getGrantingTicketURL(user); + Map whereParams = new HashMap(); + whereParams.put("membercode", "hsh00-aaa"); + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.BACKEND_URL), + whereParams }; + try { + client.execute(MODULE + ".delete", params); + assertEquals(membersCount - 1, getMembersCount(user)); + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + } + + @Test + public void testDeleteAsHostmaster() { + String user = "pe"; + int membersCount = -9999; + try { + membersCount = getMembersCount(user); + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + String grantingTicketURL = cas.getGrantingTicketURL(user); + Map whereParams = new HashMap(); + whereParams.put("membercode", "hsh00-aaa"); + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.BACKEND_URL), + whereParams }; + try { + client.execute(MODULE + ".delete", params); + assertEquals(membersCount - 1, getMembersCount(user)); + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + } + + private int getMembersCount(String user) throws XmlRpcException { + String grantingTicketURL = cas.getGrantingTicketURL(user); + Map whereParams = new HashMap(); + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.BACKEND_URL), + whereParams }; + Object execute = client.execute(MODULE + ".search", params); + Object[] result = (Object[]) execute; + return result.length; + } +} diff --git a/hsarback/test/de/hsadmin/remote/QueueTaskTest.java b/hsarback/test/de/hsadmin/remote/QueueTaskTest.java index 6494baa..7238fc1 100644 --- a/hsarback/test/de/hsadmin/remote/QueueTaskTest.java +++ b/hsarback/test/de/hsadmin/remote/QueueTaskTest.java @@ -36,7 +36,7 @@ public class QueueTaskTest { @Test public void testSearchAllAsPacAdmin() { String user = "peh00"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map whereParams = new HashMap(); Object[] params = new Object[] { user, cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.BACKEND_URL), @@ -44,7 +44,7 @@ public class QueueTaskTest { try { Object execute = client.execute(MODULE + ".search", params); Object[] result = (Object[]) execute; - assertTrue(result.length > 100); + assertTrue(result.length > 20); for (Object o : result) { if (o instanceof Map) { Map row = (Map) o; @@ -61,7 +61,7 @@ public class QueueTaskTest { @Test public void testUpdate() { String user = "peh00"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map setParams = new HashMap(); Map whereParams = new HashMap(); setParams.put("details", "Test"); @@ -82,7 +82,7 @@ public class QueueTaskTest { @Test public void testCreateFails() { String user = "peh00"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map setParams = new HashMap(); setParams.put("status", "done"); setParams.put("title", "Test"); @@ -107,7 +107,7 @@ public class QueueTaskTest { @Test public void testDeleteAsPacAdminFails() { String user = "peh00"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map whereParams = new HashMap(); whereParams.put("user", "peh00"); Object[] params = new Object[] { user, diff --git a/hsarback/test/de/hsadmin/remote/RemoteCASHelper.java b/hsarback/test/de/hsadmin/remote/RemoteCASHelper.java index 04bd1dc..9658d77 100644 --- a/hsarback/test/de/hsadmin/remote/RemoteCASHelper.java +++ b/hsarback/test/de/hsadmin/remote/RemoteCASHelper.java @@ -34,20 +34,8 @@ public class RemoteCASHelper { loginURL = config.getProperty("loginURL", LOGIN_URL); } - public String getGrantingTicketURL(String user, String pw) { - if ("peh00".equals(pw)) { - pw = config.getProperty("peh00.passWord", "-"); - } - if ("peh01".equals(pw)) { - pw = config.getProperty("peh01.passWord", "-"); - } - if ("pe".equals(pw)) { - pw = config.getProperty("pe.passWord", "-"); - } - if (user.equals(pw)) { - System.err.println("Unknown Password for: " + pw); - return null; - } + public String getGrantingTicketURL(String user) { + String pw = config.getProperty(user + ".passWord", "-"); try { String encodedParams = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(user, "UTF-8") diff --git a/hsarback/test/de/hsadmin/remote/RemoteTest.java b/hsarback/test/de/hsadmin/remote/RemoteTest.java index 8176a0b..55c8bba 100644 --- a/hsarback/test/de/hsadmin/remote/RemoteTest.java +++ b/hsarback/test/de/hsadmin/remote/RemoteTest.java @@ -5,6 +5,7 @@ import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ + CustomerTest.class, UnixUserTest.class, // MySqlDatabaseTest.class, // MySqlUserTest.class, diff --git a/hsarback/test/de/hsadmin/remote/UnixUserTest.java b/hsarback/test/de/hsadmin/remote/UnixUserTest.java index c68fb9c..8650db2 100644 --- a/hsarback/test/de/hsadmin/remote/UnixUserTest.java +++ b/hsarback/test/de/hsadmin/remote/UnixUserTest.java @@ -35,7 +35,7 @@ public class UnixUserTest { @Test public void testSearchAsPacAdmin() { String user = "peh00"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map whereParams = new HashMap(); Object[] params = new Object[] { user, cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.BACKEND_URL), @@ -62,7 +62,7 @@ public class UnixUserTest { int count = getObjectCount(); try { String user = "peh00"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map setParams = new HashMap(); setParams.put("name", "peh00-test2"); setParams.put("password", "test123"); @@ -91,7 +91,7 @@ public class UnixUserTest { int count = getObjectCount(); try { String user = "peh00"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map setParams = new HashMap(); setParams.put("name", "peh01-testfail"); setParams.put("password", "test123"); @@ -112,7 +112,7 @@ public class UnixUserTest { int count = getObjectCount(); try { String user = "peh00"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map setParams = new HashMap(); setParams.put("name", "peh00-langer-name"); setParams.put("password", "test123"); @@ -133,7 +133,7 @@ public class UnixUserTest { int count = getObjectCount(); try { String user = "peh00"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map whereParams = new HashMap(); Map setParams = new HashMap(); whereParams.put("name", "peh00-test2"); @@ -167,7 +167,7 @@ public class UnixUserTest { int count = getObjectCount(); try { String user = "peh00"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map whereParams = new HashMap(); whereParams.put("name", "peh00-langer-name"); Object[] params = new Object[] { user, @@ -186,7 +186,7 @@ public class UnixUserTest { int count = getObjectCount(); try { String user = "peh01"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map whereParams = new HashMap(); whereParams.put("name", "peh00-test2"); Object[] params = new Object[] { user, @@ -205,7 +205,7 @@ public class UnixUserTest { int count = getObjectCount(); try { String user = "peh00"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map whereParams = new HashMap(); whereParams.put("name", "peh00-test2"); Object[] params = new Object[] { user, @@ -223,7 +223,7 @@ public class UnixUserTest { int count = -1; try { String user = "peh00"; - String grantingTicketURL = cas.getGrantingTicketURL(user, user); + String grantingTicketURL = cas.getGrantingTicketURL(user); Map whereParams = new HashMap(); Object[] params = new Object[] { user, cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.BACKEND_URL), diff --git a/hsarback/webapp/WEB-INF/web.xml b/hsarback/webapp/WEB-INF/web.xml index bf09293..1eccbbb 100644 --- a/hsarback/webapp/WEB-INF/web.xml +++ b/hsarback/webapp/WEB-INF/web.xml @@ -4,6 +4,10 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> + + de.hsadmin.core.model.onetier.PersistenceManagerContextListener + + Queue Status Servlet de.hsadmin.core.qserv.QueueStatusReceiverServlet