Author: tchemit Date: 2012-05-23 15:14:45 +0200 (Wed, 23 May 2012) New Revision: 2502 Url: http://nuiton.org/repositories/revision/topia/2502 Log: use new classes Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaUtil.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaId.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaUtil.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaUtil.java 2012-05-23 13:13:13 UTC (rev 2501) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaUtil.java 2012-05-23 13:14:45 UTC (rev 2502) @@ -24,6 +24,9 @@ */ package org.nuiton.topia.framework; +import com.google.common.base.Predicate; +import com.google.common.collect.Iterables; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.TopiaNotFoundException; @@ -32,6 +35,7 @@ import org.nuiton.util.Resource; import java.net.URL; +import java.util.Collection; import java.util.Properties; import java.util.StringTokenizer; import java.util.regex.Pattern; @@ -138,6 +142,26 @@ return buffer.substring(2); } + /** + * Get Récupère une entité dans une liste d'entités à partir de son {@link + * TopiaEntity#getTopiaId()}. + * + * @param entities la liste des entités à scanner + * @param topiaId l'id de l'entité recherchée + * @param <E> le type de l'entité + * @return l'entité trouvée, ou <code>null</code> si elle n'est pas + * trouvée. + */ + public static <E extends TopiaEntity> E getEntityByTopiaId( + Collection<E> entities, String topiaId) { + E result = null; + if (CollectionUtils.isNotEmpty(entities)) { + Predicate<E> predicate = TopiaPredicates.newTopiaIdEquals(topiaId); + result = Iterables.find(entities, predicate); + } + return result; + } + // /** // * Test si une entite donnee correspondant a une configuration existe en // * base. Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2012-05-23 13:13:13 UTC (rev 2501) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2012-05-23 13:14:45 UTC (rev 2502) @@ -40,6 +40,7 @@ import org.nuiton.eugene.models.object.ObjectModelParameter; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; +import org.nuiton.topia.framework.TopiaUtil; import org.nuiton.topia.persistence.EntityVisitor; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityAbstract; @@ -1068,11 +1069,11 @@ ObjectModelOperation implOperation = createImplOperation(interfaceOperation); - addImport(outputAbstract, TopiaEntityHelper.class); + addImport(outputAbstract, TopiaUtil.class); setOperationBody(implOperation, "" /*{ - return TopiaEntityHelper.getEntityByTopiaId(<%=attrName%>, topiaId); + return TopiaUtil.getEntityByTopiaId(<%=attrName%>, topiaId); }*/ ); } Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaId.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaId.java 2012-05-23 13:13:13 UTC (rev 2501) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaId.java 2012-05-23 13:14:45 UTC (rev 2502) @@ -45,16 +45,19 @@ import java.util.logging.Logger; /** - * TODO-fdesbois-20100508 : Need translation of javadoc. - * * Classe representant un Id, utilisable par JDO. Cette classe contient aussi un ensemble de methode - * static utile pour la manipulation des topiaId + * static utile pour la manipulation des topiaId. + * <p/> + * Classe dépréciée depuis la versiob 3.0 car en fait on n'a juste besoin de + * méthodes utilitaires autour du topiaId et rien d'autre. * * @author poussin <poussing@codelutin.com> * @author tchemit <tchemit@codelutin.com> * @author chatellier <chatellier@codelutin.com> * @version $Id$ + * @deprecated since 3.0, use instead {@link TopiaIdUtil}. */ +@Deprecated public class TopiaId implements Serializable { // TopiaId /** */ @@ -95,18 +98,11 @@ * * @param clazz * @return a generated topiaId + * @deprecated since 3.0, use instead {@link TopiaIdUtil#create(Class)} */ + @Deprecated public static String create(Class clazz) { - if (!clazz.isInterface()) { - throw new IllegalArgumentException( - "Only interface is permit to create id: " + clazz); - } - double random = Math.random(); - while (Double.toString(random).contains("E-")) { - random = Math.random(); - } - return clazz.getName() + '#' + System.currentTimeMillis() + '#' - + random; + return TopiaIdUtil.create(clazz); } /** @@ -115,17 +111,12 @@ * @param topiaId * @return class * @throws TopiaNotFoundException + * @deprecated since 3.0, use instead {@link TopiaIdUtil#getClassName(String)} */ + @Deprecated public static Class getClassName(String topiaId) throws TopiaNotFoundException { - String classname = getClassNameAsString(topiaId); - try { - Class result = Class.forName(classname); - return result; - } catch (ClassNotFoundException eee) { - throw new TopiaNotFoundException("Can't find class for " + topiaId, - eee); - } + return TopiaIdUtil.getClassName(topiaId); } /** @@ -134,14 +125,11 @@ * * @param topiaId * @return class name + * @deprecated since 3.0, use instead {@link TopiaIdUtil#getClassNameAsString(String)} */ + @Deprecated public static String getClassNameAsString(String topiaId) { - String result = ""; - int i = topiaId.indexOf('#'); - if (i > 0) { - result = topiaId.substring(0, i); - } - return result; + return TopiaIdUtil.getClassNameAsString(topiaId); } /** @@ -151,20 +139,11 @@ * * @param topiaId * @return is valid topiaId + * @deprecated since 3.0, use instead {@link TopiaIdUtil#isValidId(String)} */ + @Deprecated public static boolean isValidId(String topiaId) { - try { - if (topiaId.matches(".*?#[0-9]+#[0-9.]+")) { - getClassName(topiaId); - return true; - } - return false; - } catch (Exception eee) { - //TODO-TC20100225 : use commons-loggin api instead of jdk one - Logger.getLogger(TopiaId.class.getName() + ".isValidId").log( - Level.WARNING, "Error during verfication of topiaId", eee); - return false; - } + return TopiaIdUtil.isValidId(topiaId); } } // TopiaId