r649 - in nuiton-jpa: nuiton-jpa-api/src/main/java/org/nuiton/jpa/api nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates
Author: tchemit Date: 2013-06-04 13:11:44 +0200 (Tue, 04 Jun 2013) New Revision: 649 Url: http://nuiton.org/projects/sandbox/repository/revisions/649 Log: add new byId method on entities + predicates for it Modified: nuiton-jpa/nuiton-jpa-api/src/main/java/org/nuiton/jpa/api/JpaEntities.java nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaEntityTransformer.java Modified: nuiton-jpa/nuiton-jpa-api/src/main/java/org/nuiton/jpa/api/JpaEntities.java =================================================================== --- nuiton-jpa/nuiton-jpa-api/src/main/java/org/nuiton/jpa/api/JpaEntities.java 2013-06-04 06:59:45 UTC (rev 648) +++ nuiton-jpa/nuiton-jpa-api/src/main/java/org/nuiton/jpa/api/JpaEntities.java 2013-06-04 11:11:44 UTC (rev 649) @@ -28,6 +28,7 @@ import com.google.common.base.Optional; import com.google.common.base.Predicate; import com.google.common.base.Predicates; +import com.google.common.collect.Collections2; import com.google.common.collect.Iterables; import org.apache.commons.lang3.ObjectUtils; @@ -45,8 +46,13 @@ public class JpaEntities { public static <E extends JpaEntity> E findById(Iterable<E> entities, String id) { - Optional<E> eOptional = Iterables.tryFind(entities, entityHasId(id)); - E result = eOptional.orNull(); + E result; + if (entities == null) { + result = null; + } else { + Optional<E> eOptional = Iterables.tryFind(entities, entityHasId(id)); + result = eOptional.orNull(); + } return result; } @@ -73,10 +79,33 @@ return new GetIdFunction(); } + public static boolean isEntityHasId(JpaEntity entity, String id) { + boolean result = entityHasId(id).apply(entity); + return result; + } + + public static boolean isEntityHasId(JpaEntity entity) { + boolean result = entityHasId().apply(entity); + return result; + } + + public static boolean isEntityHasNoId(JpaEntity entity) { + boolean result = entityHasNoId().apply(entity); + return result; + } + public static Predicate<JpaEntity> entityHasId(String id) { return Predicates.compose(Predicates.equalTo(id), getIdFunction()); } + public static Predicate<JpaEntity> entityHasId() { + return Predicates.compose(Predicates.notNull(), getIdFunction()); + } + + public static Predicate<JpaEntity> entityHasNoId() { + return Predicates.compose(Predicates.equalTo(null), getIdFunction()); + } + public static <E extends JpaEntity> Comparator<E> arbitraryComparator() { return new ArbitraryComparator<E>(); } Modified: nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaEntityTransformer.java =================================================================== --- nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaEntityTransformer.java 2013-06-04 06:59:45 UTC (rev 648) +++ nuiton-jpa/nuiton-jpa-templates/src/main/java/org/nuiton/jpa/templates/JpaEntityTransformer.java 2013-06-04 11:11:44 UTC (rev 649) @@ -38,6 +38,7 @@ import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; import org.nuiton.jpa.api.AbstractJpaEntity; +import org.nuiton.jpa.api.JpaEntities; import org.nuiton.jpa.api.JpaEntityIdGeneratorFactory; import javax.persistence.CascadeType; @@ -226,6 +227,8 @@ // add getChild methods createGetChildMethod(output); + + addImport(output, JpaEntities.class); } if (isVerbose()) { @@ -407,58 +410,60 @@ createGetChildMethod(output, attrName, attrType, - simpleType - ); + simpleType ); + createGetChildByIdMethod(output, + attrName, + attrType, + simpleType); + createIsEmptyMethod(output, - attrName - ); + attrName ); createSizeMethod(output, - attrName - ); + attrName ); createAddChildMethod(output, attrName, attrType, constantName, - usePCS - ); + usePCS ); createAddAllChildrenMethod(output, attrName, attrType, constantName, - usePCS - ); + usePCS ); createRemoveChildMethod(output, attrName, attrType, constantName, - usePCS - ); + usePCS ); createRemoveAllChildrenMethod(output, attrName, attrType, constantName, - usePCS - ); + usePCS ); createContainsChildMethod(output, attrName, attrType, constantName, - usePCS - ); + usePCS ); + createContainsChildByIdMethod(output, + attrName, + attrType, + constantName, + usePCS); + createContainsAllChildrenMethod(output, attrName, attrType, constantName, - usePCS - ); + usePCS ); // Change type for Multiple attribute Class<?> collectionType = JpaTemplatesGeneratorUtil.getCollectionType(attr); @@ -552,6 +557,25 @@ ); } + protected void createGetChildByIdMethod(ObjectModelClass output, + String attrName, + String attrType, + String simpleType) { + ObjectModelOperation operation = addOperation( + output, + getJavaBeanMethodName("get", attrName + "ById"), + attrType, + ObjectModelJavaModifier.PUBLIC + ); + addParameter(operation, "String", "id"); + setOperationBody(operation, "" + /*{ + <%=simpleType%> o = JpaEntities.findById(<%=attrName%>, id); + return o; + }*/ + ); + } + protected void createIsEmptyMethod(ObjectModelClass output, String attrName) { ObjectModelOperation operation = addOperation( @@ -733,6 +757,30 @@ setOperationBody(operation, buffer.toString()); } + protected void createContainsChildByIdMethod(ObjectModelClass output, + String attrName, + String attrType, + String constantName, + boolean usePCS) { + + ObjectModelOperation operation = addOperation( + output, + getJavaBeanMethodName("contains", attrName+"ById"), + "boolean", + ObjectModelJavaModifier.PUBLIC + ); + addParameter(operation, "String", "id"); + StringBuilder buffer = new StringBuilder(); + String methodName = getJavaBeanMethodName("get", attrName + "ById"); + buffer.append("" + /*{ + boolean contains = <%=methodName%>(id) != null; + return contains; + }*/ + ); + setOperationBody(operation, buffer.toString()); + } + protected void createContainsAllChildrenMethod(ObjectModelClass output, String attrName, String attrType,
participants (1)
-
tchemit@users.nuiton.org