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() + " = ");
converterProviderPrinter.printObtainConverterFromCache(pw, ConverterTargetType.DTO, referenceDomainType, field, method, true);
pw.println(".createDomainInstance(null);");
pw.println("}");
}
}