@Override public String toMethod(ExecutableElement method) { String getter = MethodHelper.toGetter(method); return getter.substring(0, getter.length() - 2); }
public void iterateFields(ElementHandler handler) { List<? extends Element> fields = ElementFilter.fieldsIn(element.getEnclosedElements()); Collections.sort(fields, new Comparator<Element>() { @Override public int compare(Element o1, Element o2) { return o1.getSimpleName().toString().compareTo(o2.getSimpleName().toString()); } }); for (Element field : fields) { if (field.getModifiers().contains(Modifier.STATIC) || field.getModifiers().contains(Modifier.PRIVATE) || field.getModifiers().contains(Modifier.PROTECTED) || field.getModifiers().contains(Modifier.FINAL)) { continue; } String fieldName = field.getSimpleName().toString(); String getter = MethodHelper.toGetter(fieldName); if (ProcessorUtils.hasMethod(getter, element)) { processingEnv.getMessager().printMessage(Kind.WARNING, "Field " + fieldName + " is accessible by public modifier and also using the " + getter + " method.", element); continue; } handler.handle(field, fieldName); } }
public static String toGetterMethod(TypeElement typeElement, String fieldName) { if (typeElement != null && ProcessorUtils.hasMethod(toMethod(MethodHelper.GETTER_IS_PREFIX, fieldName), typeElement)) { return toIsGetter(fieldName); } return toGetter(fieldName); }
@Override public void print(SettingsContext context) { pw.println("this." + context.getFieldName() + " = " + instanceName + "." + MethodHelper.toGetter(context.getFieldName()) + ";"); }
@Override public void print(SettingsContext context) { pw.print("if (" + context.getFieldName() + " == null"); if (context.getMethod().getReturnType().getKind().equals(TypeKind.ARRAY)) { pw.print(" || " + context.getFieldName() + ".length == 0"); } pw.println(") {"); pw.println("this." + context.getFieldName() + " = " + instanceName + "." + MethodHelper.toGetter(context.getFieldName()) + ";"); pw.print("}"); if (context.getNestedElement() != null) { pw.println(" else {"); pw.println("this." + context.getFieldName() + ".merge(" + instanceName + "." + MethodHelper.toGetter(context.getFieldName()) + ");"); pw.println("}"); } else { pw.println(); } }
public static String toMethod(String prefix, String fieldName) { PathResolver pathResolver = new PathResolver(fieldName); if (pathResolver.isNested()) { int i = 0; String result = ""; while (pathResolver.hasNext()) { if (i > 0) { result += "."; } String path = pathResolver.next(); if (pathResolver.hasNext()) { result += toGetter(path); } else { result += toMethod(prefix, path); } i++; } return result; } return prefix + toMethod(fieldName); }
protected void printCopyByLocalConverter(String localConverterName, PathResolver domainPathResolver, DomainType domainMethodReturnType, String dtoField, FormattedPrintWriter pw) { pw.println("if (" + localConverterName + " != null) {"); pw.print(TransferObjectElementPrinter.RESULT_NAME + "." + MethodHelper.toSetter(domainPathResolver.getPath()) + "(" + localConverterName + ".fromDto(" + TransferObjectElementPrinter.DTO_NAME + "." + MethodHelper.toGetter(dtoField) + ")"); pw.println(");"); pw.println("} else {"); pw.print(TransferObjectElementPrinter.RESULT_NAME + "." + MethodHelper.toSetter(domainPathResolver.getPath())); if (domainMethodReturnType.getKind().equals(MutableTypeKind.TYPEVAR)) { pw.print("((" + ConverterTypeElement.DOMAIN_TYPE_ARGUMENT_PREFIX + "_" + ((MutableTypeVariable) domainMethodReturnType).getVariable() + ")"); } else { pw.print("((" + domainMethodReturnType + ")"); } pw.print(TransferObjectElementPrinter.DTO_NAME + "." + MethodHelper.toGetter(dtoField)); pw.println(");"); pw.println("}"); } }
@Override public void print(SettingsContext context) { String fieldName = context.getFieldName(); if (context.getNestedElement() != null) { pw.println("public " + context.getNestedMutableType().getSimpleName() + " " + MethodHelper.toGetter(fieldName) + " {"); } else { TypeMirror unboxedReturnType = boxType(context.getMethod().getReturnType()); pw.println("public ", unboxedReturnType, " " + MethodHelper.toGetter(fieldName) + " {"); } pw.println("return " + fieldName + ";"); pw.println("}"); pw.println(""); if (context.getNestedElement() != null) { pw.println("public void " + MethodHelper.toSetter(fieldName) + "(" + context.getNestedMutableType().getSimpleName() + " " + fieldName + ") {"); } else { pw.println("public void " + MethodHelper.toSetter(fieldName) + "(", boxType(context.getMethod().getReturnType()), " " + fieldName + ") {"); } pw.println("this." + fieldName + " = " + fieldName + ";"); pw.println("}"); pw.println(""); }
protected void printCopyNested(PathResolver domainPathResolver, String fullPath, DomainDeclaredType referenceDomainType, ExecutableElement method, FormattedPrintWriter pw, Field field, String dtoName) { DomainDeclaredType instantiableDomain = (DomainDeclaredType)referenceDomainType.getConverter().getInstantiableDomain(); pw.print(referenceDomainType, " " + domainPathResolver.getCurrent() + " = "); if (instantiableDomain.getId(entityResolver) != null) { if (referenceDomainType.getConverter() == null) { processingEnv.getMessager().printMessage(Kind.ERROR, "[ERROR] No converter/configuration for " + referenceDomainType + " was found. Please, define configuration for " + referenceDomainType); } converterProviderPrinter.printObtainConverterFromCache(pw, ConverterTargetType.DTO, referenceDomainType, field, method, true); pw.println(".createDomainInstance(" + dtoName + "." + MethodHelper.toGetter(fullPath + MethodHelper.toMethod(MethodHelper.toField(instantiableDomain.getIdMethod(entityResolver)))) + ");"); } else { pw.println(TransferObjectElementPrinter.RESULT_NAME + "." + MethodHelper.toGetter(domainPathResolver.getCurrent()) + ";"); pw.println("if (" + domainPathResolver.getCurrent() + " == null) {"); pw.print(domainPathResolver.getCurrent() + " = "); // TODO add NPE check converterProviderPrinter.printObtainConverterFromCache(pw, ConverterTargetType.DTO, referenceDomainType, field, method, true); pw.println(".createDomainInstance(null);"); pw.println("}"); } }
pw.println(";"); pw.println("if (" + converterName + " != null && !" + converterName + ".equals(" + DOMAIN_NAME + "." + context.getDomainFieldName() + "," + DTO_NAME + "." + MethodHelper.toGetter(context.getDtoFieldName()) + "))"); pw.println(" return false;"); } else { if (context.getDtoFieldType() instanceof MutableArrayType) { pw.println("if (!" + Arrays.class.getCanonicalName() + ".equals(" + DOMAIN_NAME + "." + context.getDomainFieldName() + ", " + DTO_NAME + "." + MethodHelper.toGetter(context.getDtoFieldName()) + "))"); pw.println(" return false;"); return; pw.println("if (" + DOMAIN_NAME + "." + context.getDomainFieldName() + " != " + DTO_NAME + "." + MethodHelper.toGetter(context.getDtoFieldName()) + ")"); pw.println(" return false;"); return; case INTERFACE: pw.println("if (" + DOMAIN_NAME + "." + context.getDomainFieldName() + " == null) {"); pw.println("if (" + DTO_NAME + "." + MethodHelper.toGetter(context.getDtoFieldName()) + " != null)"); pw.println(" return false;"); pw.println("} else if (!" + DOMAIN_NAME + "." + context.getDomainFieldName() + ".equals(" + DTO_NAME + "." + MethodHelper.toGetter(context.getDtoFieldName()) + "))"); pw.println(" return false;"); return; pw.println("if (" + DOMAIN_NAME + "." + context.getDomainFieldName() + " != " + DTO_NAME + "." + MethodHelper.toGetter(context.getDtoFieldName()) + ")"); pw.println(" return false;"); return; case ARRAY: pw.println("if (!" + Arrays.class.getCanonicalName() + ".equals(" + DOMAIN_NAME + "." + context.getDomainFieldName() + ", " + DTO_NAME + "." + MethodHelper.toGetter(context.getDtoFieldName()) + "))"); pw.println(" return false;");
case ENUM: case PRIMITIVE: pw.println(RESULT_NAME + "." + MethodHelper.toSetter(context.getDtoFieldName()) + "(" + MethodHelper.toGetter(context.getDtoFieldName()) + ");"); return; case CLASS: String newFieldName = "new" + MethodHelper.toMethod(context.getDomainFieldPath()); pw.println(context.getDtoFieldType(), " " + newFieldName + " = null;" ); pw.println("if (" + MethodHelper.toGetter(context.getDtoFieldName()) + " != null) {"); pw.println("for (", elementType, " _element: " + MethodHelper.toGetter(context.getDtoFieldName()) + ") {"); pw.print(newFieldName + ".add(_element"); if (dtoHasClone) { pw.print(RESULT_NAME + "." + MethodHelper.toSetter(context.getDtoFieldName()) + "(" + MethodHelper.toGetter(context.getDtoFieldName()));
protected void printCopy(PathResolver pathResolver, TransferObjectContext context, FormattedPrintWriter pw) { if (context.getConverter() != null) { printCopyByConverter(context, pathResolver, pw); } else if (context.useConverter()) { String converterName = "converter" + MethodHelper.toMethod("", context.getDtoFieldName()); pw.print(converterProviderPrinter.getDtoConverterType(context.getDomainMethodReturnType(), true), " " + converterName + " = "); converterProviderPrinter.printObtainConverterFromCache(pw, ConverterTargetType.DTO, context.getDomainMethodReturnType(), new Field( TransferObjectElementPrinter.DTO_NAME + "." + MethodHelper.toGetter(context.getDtoFieldName()), null), context.getDomainMethod(), true); pw.println(";"); printCopyByLocalConverter(converterName, pathResolver, context.getDomainMethodReturnType(), context.getDtoFieldName(), pw); } else if (!pathResolver.isNested()) { printCopySimple(pathResolver, context, pw); } }
pw.println(dtoType, " " + RESULT_NAME + " = getDtoInstance(" + DOMAIN_NAME + ", " + DOMAIN_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(idMethod)) + ");"); pw.println("if (" + RESULT_NAME + " != null) {"); pw.println("return " + RESULT_NAME + ";"); String methodName = DOMAIN_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(idMethod)); pw.println(dtoType, " dtoFromCache = getDtoFromCache(" + DOMAIN_NAME + ", " + DOMAIN_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(idMethod)) + ");"); pw.println(); pw.println("if (dtoFromCache != null) {"); pw.println("putDtoIntoCache(" + DOMAIN_NAME + ", " + RESULT_NAME + "," + RESULT_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(idMethod)) + ");"); pw.println();
pw.print(MethodHelper.toIsGetter(fieldName)); } else { pw.print(MethodHelper.toGetter(fieldName));
pw.println(domainType, " " + RESULT_NAME + " = getDomainInstance(" + DTO_NAME + ", " + DTO_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(dtoIdMethod)) + ");"); pw.println("if (" + RESULT_NAME + " != null) {"); pw.println("return " + RESULT_NAME + ";"); Field field = new Field(DTO_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(dtoIdMethod)), dtoIdType); converterProviderPrinter.printObtainConverterFromCache(pw, ConverterTargetType.DTO, dtoIdType.getDomainDefinitionConfiguration().getInstantiableDomain(), field, domainIdMethod, true); pw.print(".fromDto("); pw.print(DTO_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(dtoIdMethod))); pw.println(domainType, " domainFromCache = getDomainFromCache(" + DTO_NAME + ", " + DTO_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(dtoIdMethod)) + ");"); pw.println(); pw.println("if (domainFromCache != null) {"); pw.println("putDomainIntoCache(" + DTO_NAME + ", " + RESULT_NAME + "," + RESULT_NAME + "." + MethodHelper.toGetter(MethodHelper.toField(domainIdMethod)) + ");"); pw.println();
pw.print(TransferObjectElementPrinter.DTO_NAME + "." + ((isMethod) ? MethodHelper.toIsGetter(dtoField) : MethodHelper.toGetter(dtoField))); pw.println(");"); } else if (!entityResolver.isImmutable(domainTypeElement.asElement())) {
: "") + TransferObjectElementPrinter.DTO_NAME + "." + MethodHelper.toGetter(context.getDtoFieldName()), context.getConverter().getDto()); TransferObjectMappingAccessor transferObjectMappingAccessor = new TransferObjectMappingAccessor(context.getDtoMethod(), processingEnv); if (transferObjectMappingAccessor.isValid() && transferObjectMappingAccessor.getConverter() != null) { pw.print("(", context.getConverter().getDto() ,")"); pw.print(TransferObjectElementPrinter.DTO_NAME + "." + MethodHelper.toGetter(context.getDtoFieldName())); if (isCastRequired(parameterType)) { pw.print(", ", getTypeVariableDelegate(getDelegateCast(context.getConverter().getDto(), true)), ".class)");