public static String getOrderClause(JavaClass entity, char entityVariable) { StringBuilder expressionBuilder = new StringBuilder(); // Add the ORDER BY clause for (Member<JavaClass, ?> member : entity.getMembers()) { if (member.hasAnnotation(Id.class)) { String memberName = member.getName(); String id = null; if (member instanceof Method) { // Getters are expected to obey JavaBean conventions id = Strings.uncapitalize(memberName.substring(2)); } if (member instanceof Field) { id = memberName; } expressionBuilder.append("ORDER BY "); expressionBuilder.append(entityVariable); expressionBuilder.append('.'); expressionBuilder.append(id); } } return expressionBuilder.toString(); }
/** * Removes the given constraint on the given member. * * @param member The member on which the constraint has to be removed. * @param constraint The constraint name. * @return {@code true} if the constraint have been successfully removed, {@code false} otherwise */ private boolean removeConstraint(Member<JavaClass, ?> member, String constraint) { final List<Annotation<JavaClass>> annotations = member.getAnnotations(); for (Annotation<JavaClass> oneAnnotation : annotations) { if (oneAnnotation.getName().equals(constraint)) { member.removeAnnotation(oneAnnotation); return true; } } return false; } }
private List<Member<JavaClass, ?>> getEligibleMembers() { List<Member<JavaClass, ?>> result = new ArrayList<Member<JavaClass, ?>>(); for (Member<JavaClass, ?> member : members) { if (!member.isStatic()) { result.add(member); } } return result; }
private Annotation<JavaClass> addConstraintOnProperty(String property, boolean onAccessor, Class<? extends java.lang.annotation.Annotation> annotationClass) throws FileNotFoundException { final Resource<?> currentResource = shell.getCurrentResource(); final JavaClass clazz = getJavaClassFromResource(currentResource); final Field<JavaClass> field = clazz.getField(property); if (field == null) { throw new IllegalStateException("The current class has no property named '" + property + "'"); } Member<JavaClass, ?> member = field; if (onAccessor) { final Method<JavaClass> accessor = JavaHelper.getFieldAccessor(field); if (accessor == null) { throw new IllegalStateException("The property named '" + property + "' has no accessor"); } member = accessor; } if (member.hasAnnotation(annotationClass)) { throw new IllegalStateException("The element '" + member.getName() + "' is already annotated with @" + annotationClass.getSimpleName()); } return member.addAnnotation(annotationClass); }
if (member.hasAnnotation(Id.class)) String name = member.getName(); String type = null; if (member instanceof Method) else if (type != null && member.isPublic()) String memberName = member.getName();
@SuppressWarnings("unchecked") public static boolean hasAnnotation(Resource<?> resource, Class<? extends java.lang.annotation.Annotation> annotationClass) throws FileNotFoundException { if (resource == null) { throw new IllegalArgumentException("The parameter 'resource' cannot be null"); } if (annotationClass == null) { throw new IllegalArgumentException("The parameter 'annotationClass' cannot be null"); } if (resource instanceof JavaResource) { final JavaClass javaClass = ResourceUtil.getJavaClassFromResource(resource); return javaClass.hasAnnotation(annotationClass); } else if (resource instanceof JavaMemberResource) { final JavaMemberResource<?> javaMemberResource = (JavaMemberResource<?>) resource; return javaMemberResource.getUnderlyingResourceObject().hasAnnotation(annotationClass); } throw new IllegalArgumentException("The given resource '" + resource.getName() + "' is not a Java resource"); }
@Override public String getName() { return member.getName(); }
for (Member<JavaClass, ?> m : entity.getMembers()) if (m.hasAnnotation(Id.class))
@Override public Resource<?> getChild(final String name) { List<Resource<?>> children = doListResources(); List<Resource<?>> subset = new ArrayList<Resource<?>>(); for (Resource<?> child : children) { if ((name != null) && (child instanceof JavaMemberResource<?>)) { String childName = child.getName(); if (((Member<?, ?>) child.getUnderlyingResourceObject()).getName().equals(name.trim()) || childName.equals(name)) { subset.add(child); } } } if (subset.size() == 1) { return subset.get(0); } else if (subset.size() > 1) { throw new ResourceException("Ambiguous name [" + name + "], full type signature required"); } else { return null; } }
public static String getIdClause(JavaClass entity, String entityTable) { for (Member<JavaClass, ?> member : entity.getMembers()) { if (member.hasAnnotation(Id.class)) { String memberName = member.getName(); String id = null; if (member instanceof Method) { // Getters are expected to obey JavaBean conventions id = Strings.uncapitalize(memberName.substring(2)); } if (member instanceof Field) { id = memberName; } char entityVariable = getJpqlEntityVariable(entityTable); return "WHERE " + entityVariable + "." + id + " = " + ":entityId"; } } return null; }
private String resolveIdType(JavaClass entity) { for (Member<JavaClass, ?> member : entity.getMembers()) { if (member.hasAnnotation(Id.class)) { if (member instanceof Method) { return ((Method<?>) member).getReturnType(); } if (member instanceof Field) { return ((Field<?>) member).getType(); } } } return "Object"; }
@DefaultCommand(help = "Removes the given constraint on the given property/property accessor") public void removePropertyConstraint( @Option(name = "property", completer = PropertyCompleter.class, required = true) String property, @Option(name = "named", required = true) String constraint, @Option(name = "onAccessor", flagOnly = true) boolean onAccessor) throws FileNotFoundException { final JavaClass clazz = getJavaClassFromResource(shell.getCurrentResource()); final Member<JavaClass, ?> member = getMember(clazz, property, onAccessor); if (member == null) { throw new IllegalStateException("There is no property named '" + property + "' or accessor for this property"); } if (!removeConstraint(member, constraint)) { throw new IllegalStateException("There is no constraint named '" + constraint + "' on " + member.getName()); } // save java source project.getFacet(JavaSourceFacet.class).saveJavaSource(clazz); shell.println("Constraint named '" + constraint + "' has been successfully removed.\n"); }
if (member.hasAnnotation(OneToOne.class) || member.hasAnnotation(OneToMany.class) || member.hasAnnotation(ManyToMany.class) || member.hasAnnotation(ManyToOne.class)) String name = member.getName(); String associationField = null; if (member instanceof Method) throw new RuntimeException("Could not compute the association field for member:" + member.getName() + " in entity" + entity.getName());
private void locateProperties() { for (Member<JavaClass, ?> member : getEligibleMembers()) { String memberName = member.getName(); if (member instanceof Field) { Field<?> field = (Field<?>) member; createOrUpdateProperty(memberName, field, null, null); } else if (member instanceof Method) { @SuppressWarnings("unchecked") Method<JavaClass> method = (Method<JavaClass>) member; if (isAccessor(method)) { String propertyName = propertyNameFromMethod(method); createOrUpdateProperty(propertyName, null, method, null); } else if (isMutator(method)) { String propertyName = propertyNameFromMethod(method); createOrUpdateProperty(propertyName, null, null, method); } } } }