Commit 6ef9ceb30701de40c2662073957e7e8a9a43021d

ROO-151: Enhance SQL in dynamic finders for LIKE statements 
addon-finder/src/main/java/org/springframework/roo/addon/finder/FinderMetadata.java
(23 / 2)
  
9595 // We declared the field in this ITD, so produce a public accessor for it
9696 InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder();
9797
98 for (JavaSymbolName name : paramNames) {
99 bodyBuilder.appendFormalLine("if (" + name + " == null) throw new IllegalArgumentException(\"The " + name+ " argument is required\");");
98 for (int i = 0; i < paramTypes.size(); i++) {
99 String name = paramNames.get(i).getSymbolName();
100
101 StringBuilder length = new StringBuilder();
102 if (paramTypes.get(i).equals(new JavaType("java.lang.String"))) {
103 length.append(" || ").append(paramNames.get(i)).append(".length() == 0");
104 }
105
106 bodyBuilder.appendFormalLine("if (" + name + " == null" + length.toString() + ") throw new IllegalArgumentException(\"The " + name + " argument is required\");");
107
108 if (length.length() > 0 && dynamicFinderMethodName.substring(dynamicFinderMethodName.indexOf(paramNames.get(i).getSymbolNameCapitalisedFirstLetter()) + name.length()).startsWith("Like")){
109 bodyBuilder.appendFormalLine(name + " = " + name + ".replace('*', '%');");
110 bodyBuilder.appendFormalLine("if (" + name + ".charAt(0) != '%') {");
111 bodyBuilder.indent();
112 bodyBuilder.appendFormalLine(name + " = \"%\" + " + name + ";");
113 bodyBuilder.indentRemove();
114 bodyBuilder.appendFormalLine("}");
115 bodyBuilder.appendFormalLine("if (" + name + ".charAt(" + name + ".length() -1) != '%') {");
116 bodyBuilder.indent();
117 bodyBuilder.appendFormalLine(name + " = " + name + " + \"%\";");
118 bodyBuilder.indentRemove();
119 bodyBuilder.appendFormalLine("}");
120 }
100121 }
101122
102123 bodyBuilder.appendFormalLine("javax.persistence.EntityManager em = new " + governorTypeDetails.getName().getSimpleTypeName() + "()." + entityMetadata.getEntityManagerField().getFieldName().getSymbolName() + ";");
classpath/src/main/resources/clinic.roo
(1 / 0)
  
4242install finder -class ~.domain.Pet -finderName findPetsByNameAndWeight
4343install finder -class ~.domain.Pet -finderName findPetsByOwner
4444install finder -class ~.domain.Pet -finderName findPetsBySendRemindersAndWeightLessThan
45install finder -class ~.domain.Pet -finderName findPetsByTypeAndNameLike
4546install finder -class ~.domain.Visit -finderName findVisitsByDescriptionAndVisitDate
4647install finder -class ~.domain.Visit -finderName findVisitsByVisitDateBetween
4748install finder -class ~.domain.Visit -finderName findVisitsByDescriptionLike

Comments

Add a new comment:

Login or create an account to post a comment

Add your comment