Author: tchemit Date: 2009-04-06 01:20:29 +0000 (Mon, 06 Apr 2009) New Revision: 1409 Modified: topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java Log: generics + Override annotation Modified: topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java =================================================================== --- topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java 2009-03-26 17:47:01 UTC (rev 1408) +++ topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/framework/TopiaContextImpl.java 2009-04-06 01:20:29 UTC (rev 1409) @@ -169,7 +169,7 @@ /** * cache des DAO deja chargé pour ce context */ - protected Map<Class, TopiaDAO> daoCache = new HashMap<Class, TopiaDAO>(); + protected Map<Class<? extends TopiaEntity>, TopiaDAO<? extends TopiaEntity>> daoCache = new HashMap<Class<? extends TopiaEntity>, TopiaDAO<? extends TopiaEntity>>(); /** * Set des sous context creer avec un beginTransaction et donc sur lequel @@ -204,9 +204,8 @@ protected Map<String, TopiaService> loadServices(Properties config) { Map<String, TopiaService> result = new HashMap<String, TopiaService>(); // recherche des services present dans la config - for (Enumeration<String> e = (Enumeration<String>) config - .propertyNames(); e.hasMoreElements();) { - String key = e.nextElement(); + for (Enumeration e = config.propertyNames(); e.hasMoreElements();) { + String key = (String) e.nextElement(); if (key.matches("^topia\\.service\\.\\w+$")) { String classService = config.getProperty(key); try { @@ -256,6 +255,7 @@ } } + @Override public Map<String, TopiaService> getServices() { TopiaContextImplementor parent = getParentContext(); @@ -278,6 +278,7 @@ return result; } + @Override public <E extends TopiaService> boolean serviceEnabled( Class<E> interfaceService) { boolean result = false; @@ -302,6 +303,7 @@ * @param <E> * @throws TopiaNotFoundException */ + @Override public <E extends TopiaService> E getService(Class<E> interfaceService) throws TopiaNotFoundException { try { @@ -322,6 +324,7 @@ /* (non-Javadoc) * @see org.codelutin.topia.framework.TopiaContextImplementor#getAllServices() */ + @Override public Collection<TopiaService> getAllServices() { Collection<TopiaService> result = getServices().values(); return result; @@ -339,6 +342,7 @@ this.parentContext = parentContext; } + @Override public Set<TopiaContextImplementor> getChildContext() { return this.childContext; } @@ -347,6 +351,7 @@ childContext.add(child); } + @Override public void removeChildContext(TopiaContextImplementor child) { //On ne retire les fils que si ce contexte n'est pas deja ferme. Permet d'eviter les acces concurrentiels if (!closed) { @@ -359,6 +364,7 @@ * * @see org.codelutin.topia.framework.TopiaContextImplementor#getParentContext() */ + @Override public TopiaContextImplementor getParentContext() { return parentContext; } @@ -368,6 +374,7 @@ * * @see org.codelutin.topia.framework.TopiaContextImplementor#getRootContext() */ + @Override public TopiaContextImplementor getRootContext() { TopiaContextImplementor result = this; if (getParentContext() != null) { @@ -381,6 +388,7 @@ * * @see org.codelutin.topia.framework.TopiaContextImplementor#getConfig() */ + @Override public Properties getConfig() { if (config == null && getParentContext() != null) { config = getParentContext().getConfig(); @@ -391,6 +399,7 @@ /* (non-Javadoc) * @see org.codelutin.topia.TopiaContext#createSchema() */ + @Override public void createSchema() throws TopiaException { try { boolean showSchema = false; @@ -409,6 +418,7 @@ /* (non-Javadoc) * @see org.codelutin.topia.TopiaContext#createSchema() */ + @Override public void updateSchema() throws TopiaException { try { boolean showSchema = false; @@ -429,6 +439,7 @@ * * @see org.codelutin.topia.framework.TopiaContextImplementor#getHibernate() */ + @Override public Session getHibernate() throws TopiaException { if (hibernate == null) { throw new TopiaException( @@ -442,6 +453,7 @@ * * @see org.codelutin.topia.framework.TopiaContextImplementor#getHibernateFactory() */ + @Override public SessionFactory getHibernateFactory() throws TopiaNotFoundException { if (hibernateFactory == null) { if (getParentContext() != null) { @@ -454,6 +466,7 @@ return hibernateFactory; } + @Override public Configuration getHibernateConfiguration() throws TopiaNotFoundException { if (hibernateConfiguration == null) { @@ -579,6 +592,7 @@ * @see org.codelutin.topia.framework.TopiaContextImplementor#getDAO(java.lang.Class) */ @SuppressWarnings("unchecked") + @Override public <E extends TopiaEntity> TopiaDAO<E> getDAO(Class<E> entityClass) throws TopiaException { if (entityClass == null) { @@ -603,7 +617,7 @@ + " doute oublié d'ajouter son mapping"); } - TopiaDAO<E> result = daoCache.get(entityClass); + TopiaDAO<E> result = (TopiaDAO<E>) daoCache.get(entityClass); if (result == null) { // recherche du type de DAO a instancier pour cette entity String defaultDAOClassname = getConfig().getProperty( @@ -656,6 +670,7 @@ * * @see org.codelutin.topia.TopiaContext#beginTransaction() */ + @Override public TopiaContext beginTransaction() throws TopiaException { checkClosed("Ce contexte a ete ferme, impossible de commencer une transaction"); TopiaContextImpl result = new TopiaContextImpl(this); @@ -690,6 +705,7 @@ * * @see org.codelutin.topia.TopiaContext#commitTransaction() */ + @Override public void commitTransaction() throws TopiaException { if (getRootContext() == this) { throw new TopiaException( @@ -697,7 +713,7 @@ } checkClosed("Ce contexte a ete ferme, impossible de faire un commit"); try { - for (TopiaDAO<TopiaEntity> dao : daoCache.values()) { + for (TopiaDAO<? extends TopiaEntity> dao : daoCache.values()) { dao.commitTransaction(); } Transaction tx = hibernate.getTransaction(); @@ -726,6 +742,7 @@ * * @see org.codelutin.topia.TopiaContext#rollbackTransaction() */ + @Override public void rollbackTransaction() throws TopiaException { if (getRootContext() == this) { throw new TopiaException( @@ -733,7 +750,7 @@ } checkClosed("Ce contexte a ete ferme, impossible de faire un rollback"); try { - for (TopiaDAO<TopiaEntity> dao : daoCache.values()) { + for (TopiaDAO<? extends TopiaEntity> dao : daoCache.values()) { dao.rollbackTransaction(); } Transaction tx = hibernate.getTransaction(); @@ -759,6 +776,7 @@ } } + @Override public void closeContext() throws TopiaException { // 20060926 poussin: Si si on peut, ca ferme en fait tous les enfants et c tout // if (getRootContext() == this) { @@ -812,6 +830,7 @@ } } + @Override public boolean isClosed() { return closed; } @@ -825,6 +844,7 @@ /* (non-Javadoc) * @see org.codelutin.topia.TopiaContext#findByTopiaId(java.lang.String) */ + @Override public TopiaEntity findByTopiaId(String topiaId) throws TopiaException { checkClosed("Ce contexte a ete ferme, impossible de faire une recherche"); TopiaEntity result; @@ -839,6 +859,7 @@ * (non-Javadoc) * @see org.codelutin.topia.TopiaContext#find(java.lang.String, java.lang.Object[]) */ + @Override public List find(String hql, Object... args) throws TopiaException { checkClosed("Ce contexte a ete ferme, impossible de faire une recherche"); try { @@ -861,6 +882,7 @@ } } + @Override public List find(String hql, int startIndex, int endIndex, Object... args) throws TopiaException { checkClosed("Ce contexte a ete ferme, impossible de faire une recherche"); @@ -893,6 +915,7 @@ * @return The number of entities updated or deleted. * @throws TopiaException */ + @Override public int execute(String hql, Object... args) throws TopiaException { checkClosed("Ce contexte a ete ferme, impossible de faire une recherche"); try { @@ -911,11 +934,12 @@ /* (non-Javadoc) * @see org.codelutin.topia.TopiaContext#add(org.codelutin.topia.persistence.TopiaEntity) */ + @Override public void add(TopiaEntity e) throws TopiaException { checkClosed("Ce contexte a ete ferme, impossible d'ajouter une entite"); String id = e.getTopiaId(); - Class entityClass = TopiaId.getClassName(id); - TopiaDAO dao = getDAO(entityClass); + Class<TopiaEntity> entityClass = TopiaId.getClassName(id); + TopiaDAO<TopiaEntity> dao = getDAO(entityClass); dao.update(e); } @@ -1036,7 +1060,7 @@ } // acquire data to replicate List entities = find(query); - replicate0(dstContextImpl,entities.toArray()); + replicate0(dstContextImpl,entities.toArray()); if (log.isDebugEnabled()) { log.debug("replication of entities " + query + " was sucessfully done."); } @@ -1047,8 +1071,8 @@ } @Override - public <T extends TopiaEntity> void replicateEntity(TopiaContext dstCtxt, T entity) throws TopiaException, IllegalArgumentException { - checkClosed("Ce contexte a ete ferme, impossible d'effectuer l'export"); + public <T extends TopiaEntity> void replicateEntity(TopiaContext dstCtxt, T entity) throws TopiaException, IllegalArgumentException { + checkClosed("Ce contexte a ete ferme, impossible d'effectuer l'export"); TopiaContextImpl dstContextImpl = (TopiaContextImpl) dstCtxt; dstContextImpl.checkClosed("Ce contexte a ete ferme, impossible d'effectuer l'export"); if (getRootContext().equals(dstContextImpl.getRootContext())) { @@ -1082,6 +1106,7 @@ * * @see TopiaContext#backup(java.io.File,boolean) */ + @Override public void backup(File file, boolean compress) throws TopiaException { checkClosed("Ce contexte a ete ferme, impossible d'effectuer le backup"); try { @@ -1137,6 +1162,7 @@ * * @see org.codelutin.topia.TopiaContext#restore(java.io.File) */ + @Override public void restore(File file) throws TopiaException { // send event getFiresSupport().firePreRestoreSchema(this); @@ -1150,7 +1176,8 @@ // read header to see if is compressed file int b = in.read(); - int magic = ((int) in.read() << 8) | b; + // redundant cast : int magic = ((int) in.read() << 8) | b; + int magic = (in.read() << 8) | b; in.reset(); String options = ""; @@ -1225,6 +1252,7 @@ * Only h2 supported for now * @see org.codelutin.topia.TopiaContext#clear(boolean) */ + @Override public void clear(boolean dropDatabase) throws TopiaException { try { TopiaContextImpl root = (TopiaContextImpl) getRootContext(); @@ -1243,90 +1271,109 @@ } } + @Override public List<Class> getPersistenceClasses() { return persistenceClasses; } /* Adders */ + @Override public void addTopiaEntityListener(TopiaEntityListener listener) { getFiresSupport().addTopiaEntityListener(listener); } + @Override public void addTopiaEntityListener( Class<? extends TopiaEntity> entityClass, TopiaEntityListener listener) { getFiresSupport().addTopiaEntityListener(entityClass, listener); } + @Override public void addTopiaEntityVetoable(TopiaEntityVetoable vetoable) { getFiresSupport().addTopiaEntityVetoable(TopiaEntity.class, vetoable); } + @Override public void addTopiaEntityVetoable( Class<? extends TopiaEntity> entityClass, TopiaEntityVetoable vetoable) { getFiresSupport().addTopiaEntityVetoable(entityClass, vetoable); } + @Override public void addTopiaTransactionListener(TopiaTransactionListener listener) { getFiresSupport().addTopiaTransactionListener(listener); } + @Override public void addTopiaTransactionVetoable(TopiaTransactionVetoable vetoable) { getFiresSupport().addTopiaTransactionVetoable(vetoable); } + @Override public void addPropertyChangeListener(PropertyChangeListener listener) { getFiresSupport().addPropertyChangeListener(listener); } + @Override public void addTopiaContextListener(TopiaContextListener listener) { getFiresSupport().addTopiaContextListener(listener); } /* Removers */ + @Override public void removeTopiaEntityListener(TopiaEntityListener listener) { getFiresSupport() .removeTopiaEntityListener(TopiaEntity.class, listener); } + @Override public void removeTopiaEntityListener( Class<? extends TopiaEntity> entityClass, TopiaEntityListener listener) { getFiresSupport().removeTopiaEntityListener(entityClass, listener); } + @Override public void removeTopiaEntityVetoable(TopiaEntityVetoable vetoable) { getFiresSupport() .removeTopiaEntityVetoable(TopiaEntity.class, vetoable); } + @Override public void removeTopiaEntityVetoable( Class<? extends TopiaEntity> entityClass, TopiaEntityVetoable vetoable) { getFiresSupport().removeTopiaEntityVetoable(entityClass, vetoable); } + @Override public void removeTopiaTransactionListener(TopiaTransactionListener listener) { getFiresSupport().removeTopiaTransactionListener(listener); } + @Override public void removeTopiaTransactionVetoable(TopiaTransactionVetoable vetoable) { getFiresSupport().removeTopiaTransactionVetoable(vetoable); } + @Override public void removePropertyChangeListener(PropertyChangeListener listener) { getFiresSupport().removePropertyChangeListener(listener); } + @Override public void removeTopiaContextListener(TopiaContextListener listener) { getFiresSupport().removeTopiaContextListener(listener); } + @Override public void addTopiaEntitiesVetoable(TopiaEntitiesVetoable vetoable) { getFiresSupport().addTopiaEntitiesVetoable(vetoable); } + @Override public void removeTopiaEntitiesVetoable(TopiaEntitiesVetoable vetoable) { getFiresSupport().removeTopiaEntitiesVetoable(vetoable); }