Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: e6807f21 by Tony Chemit at 2021-01-25T17:06:32+01:00 make observe tag values available in eugene :) - - - - - 44fc8be6 by Tony Chemit at 2021-01-25T17:39:25+01:00 introduce tag values extractor - - - - - 2 changed files: - toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/DtoMetaTransformer.java - toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/ObserveTagValues.java Changes: ===================================== toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/DtoMetaTransformer.java ===================================== @@ -37,12 +37,17 @@ import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelPackage; import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; +import java.io.BufferedWriter; import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; import java.util.Comparator; import java.util.LinkedList; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.TreeMap; /** * Created on 24/01/2021. @@ -72,6 +77,7 @@ public abstract class DtoMetaTransformer extends AbstractMetaTransformer<ObjectM augmentsTagValues(model, all, observeTagValues); consolidateModel(model, all, observeTagValues, getLog()); augmentsTagValuesFinal(model, all, observeTagValues); + extractTagValues(allWithAbstract); return true; } @@ -81,17 +87,18 @@ public abstract class DtoMetaTransformer extends AbstractMetaTransformer<ObjectM String mainDtoTagValue = observeTagValues.getMainDtoTagValue(aClass); if (observeTagValues.notSkip(mainDtoTagValue) != null) { String newValue = aPackage.getName() + "." + mainDtoTagValue + "Dto"; - getLog().info(String.format("Augments tag value %s.mainDto=%s", aClass.getQualifiedName(), newValue)); + getLog().debug(String.format("Augments tag value %s.mainDto=%s", aClass.getQualifiedName(), newValue)); aClass.getTagValues().put(ObserveTagValues.Store.mainDto.name(), newValue); } String formTagValue = observeTagValues.getFormTagValue(aClass, aPackage); if (observeTagValues.notSkip(formTagValue) != null && !Objects.equals("self", formTagValue)) { String newValue = aPackage.getName() + "." + formTagValue + "Dto"; - getLog().info(String.format("Augments tag value %s.form=%s", aClass.getQualifiedName(), newValue)); + getLog().debug(String.format("Augments tag value %s.form=%s", aClass.getQualifiedName(), newValue)); aClass.getTagValues().put(ObserveTagValues.Store.form.name(), newValue); } } } + protected void augmentsReferences(BeanTransformerContext all, String packageName) { for (ObjectModelClass aClass : all.selectedClasses) { for (ObjectModelAttribute attribute : aClass.getAttributes()) { @@ -99,9 +106,8 @@ public abstract class DtoMetaTransformer extends AbstractMetaTransformer<ObjectM if (!attributeType.startsWith(packageName) && attributeType.endsWith("Reference")) { // add full package String newValue = packageName + "." + attributeType; - getLog().info(String.format("Augments reference attribute value %s.%s=%s", aClass.getQualifiedName(),attribute.getName(), newValue)); - ((ObjectModelAttributeImpl)attribute).setType(newValue); - + getLog().debug(String.format("Augments reference attribute value %s.%s=%s", aClass.getQualifiedName(), attribute.getName(), newValue)); + ((ObjectModelAttributeImpl) attribute).setType(newValue); } } } @@ -113,13 +119,13 @@ public abstract class DtoMetaTransformer extends AbstractMetaTransformer<ObjectM String formTagValue = observeTagValues.getFormTagValue(aClass, aPackage); if (Objects.equals("self", formTagValue)) { String newValue = aClass.getQualifiedName() + "Dto"; - getLog().info(String.format("Augments tag value %s.form=%s", aClass.getQualifiedName(), newValue)); + getLog().debug(String.format("Augments tag value %s.form=%s", aClass.getQualifiedName(), newValue)); aClass.getTagValues().put(ObserveTagValues.Store.form.name(), newValue); } String mainDtoTagValue = observeTagValues.getMainDtoTagValue(aClass); if (mainDtoTagValue == null) { String newValue = aClass.getQualifiedName() + "Dto"; - getLog().info(String.format("Augments tag value %s.mainDto=%s", aClass.getQualifiedName(), newValue)); + getLog().debug(String.format("Augments tag value %s.mainDto=%s", aClass.getQualifiedName(), newValue)); aClass.getTagValues().put(ObserveTagValues.Store.mainDto.name(), newValue); } } @@ -136,12 +142,11 @@ public abstract class DtoMetaTransformer extends AbstractMetaTransformer<ObjectM String mainDtoTagValue = observeTagValues.getMainDtoTagValue(aClass); String formTagValue = observeTagValues.getFormTagValue(aClass, aPackage); if (mainDtoTagValue == null && (formTagValue == null || Objects.equals("self", formTagValue))) { - log.info(String.format("found ContainerDto without any tagValues, add convention tagValues: %s", aClass.getQualifiedName())); + log.debug(String.format("found ContainerDto without any tagValues, add convention tagValues: %s", aClass.getQualifiedName())); ObjectModelClass childType = guessChildType(all.selectedClasses, aClass); - log.info(String.format("add tag value %s.form=%s", aClass.getQualifiedName(), childType.getQualifiedName()) + "Dto"); + log.debug(String.format("add tag value %s.form=%s", aClass.getQualifiedName(), childType.getQualifiedName()) + "Dto"); ObjectModelClass mainType = guessMainType(all.selectedClasses, aClass, childType); - log.info(String.format("add tag value %s.mainDto=%s", aClass.getQualifiedName(), mainType.getQualifiedName()) + "Dto"); - + log.debug(String.format("add tag value %s.mainDto=%s", aClass.getQualifiedName(), mainType.getQualifiedName()) + "Dto"); aClass.getTagValues().put(ObserveTagValues.Store.form.name(), childType.getQualifiedName() + "Dto"); aClass.getTagValues().put(ObserveTagValues.Store.mainDto.name(), mainType.getQualifiedName() + "Dto"); } @@ -163,9 +168,7 @@ public abstract class DtoMetaTransformer extends AbstractMetaTransformer<ObjectM continue; } if (name.endsWith(selectedClass.getName())) { - if (candidates.isEmpty()) { - candidates.add(selectedClass); - } else { + if (!candidates.isEmpty()) { ObjectModelClass objectModelClass = candidates.get(0); if (selectedClass.getName().endsWith(objectModelClass.getName())) { candidates.remove(0); @@ -173,8 +176,8 @@ public abstract class DtoMetaTransformer extends AbstractMetaTransformer<ObjectM // not keeping this one continue; } - candidates.add(selectedClass); } + candidates.add(selectedClass); } } if (candidates.isEmpty()) { @@ -184,8 +187,8 @@ public abstract class DtoMetaTransformer extends AbstractMetaTransformer<ObjectM // only one candidate, found it! return candidates.get(0); } - candidates.sort(Comparator.comparing(ObjectModelClass::getQualifiedName, Comparator.comparingInt(String::length)).reversed()); // should take the biggest matching candidate ? + candidates.sort(Comparator.comparing(ObjectModelClass::getQualifiedName, Comparator.comparingInt(String::length)).reversed()); return candidates.get(0); } @@ -215,6 +218,31 @@ public abstract class DtoMetaTransformer extends AbstractMetaTransformer<ObjectM return candidates.get(0); } // should take the smallest matching candidate ? + candidates.sort(Comparator.comparing(ObjectModelClass::getQualifiedName, Comparator.comparingInt(String::length)).reversed()); return candidates.get(0); } + + + protected void extractTagValues(BeanTransformerContext all) { + Map<String, String> p = new TreeMap<>(); + for (ObjectModelClass aClass : all.selectedClasses) { + String tagValuePrefix = aClass.getQualifiedName() + ".attribute."; + for (ObjectModelAttribute attribute : aClass.getAttributes()) { + String tagValuePrefix2 = tagValuePrefix + attribute.getName() + ".tagValue."; + Map<String, String> tagValues1 = attribute.getTagValues(); + tagValues1.forEach((k, v) -> p.put(tagValuePrefix2 + k, v)); + } + } + File outputDir = getConfiguration().getProperty(PROP_OUTPUT_DIRECTORY, File.class); + Path path = outputDir.toPath().resolve("extracted-tagValues.properties"); + getLog().info(String.format("Generated all tag-values in %s", path)); + try (BufferedWriter writer = java.nio.file.Files.newBufferedWriter(path, StandardCharsets.UTF_8)) { + for (String k : p.keySet()) { + writer.write(String.format("%s=%s", k, p.get(k))); + writer.newLine(); + } + } catch (IOException e) { + throw new IllegalStateException("Can't write " + path, e); + } + } } ===================================== toolkit/templates/src/main/java/fr/ird/observe/toolkit/templates/ObserveTagValues.java ===================================== @@ -22,6 +22,7 @@ package fr.ird.observe.toolkit.templates; * #L% */ +import com.google.auto.service.AutoService; import com.google.common.collect.ImmutableSet; import org.codehaus.plexus.component.annotations.Component; import org.nuiton.eugene.models.extension.tagvalue.TagValueMetadata; @@ -45,6 +46,7 @@ import static io.ultreia.java4all.i18n.I18n.t; * @since 4.0 */ @Component(role = TagValueMetadatasProvider.class, hint = "observe") +@AutoService(TagValueMetadatasProvider.class) public class ObserveTagValues extends DefaultTagValueMetadatasProvider { public ObserveTagValues() { View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/0d7934bbffce9c899793579bd... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/0d7934bbffce9c899793579bd... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT