[FIX] Double and double inclution generate a double inclusion in Typescript generation

This commit is contained in:
Edouard DUPIN 2025-04-08 10:27:30 +02:00
parent 7185a34fda
commit 69f69a8113
2 changed files with 13 additions and 4 deletions

View File

@ -3,7 +3,7 @@ package org.kar.archidata.externalRestApi.model;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.ParameterizedType; import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.ArrayList; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -18,7 +18,7 @@ public abstract class ClassModel {
protected boolean analyzeDone = false; protected boolean analyzeDone = false;
protected Class<?> originClasses = null; protected Class<?> originClasses = null;
protected ApiGenerationMode apiGenerationMode = AnnotationCreator.createAnnotation(ApiGenerationMode.class); protected ApiGenerationMode apiGenerationMode = AnnotationCreator.createAnnotation(ApiGenerationMode.class);
protected List<ClassModel> dependencyModels = new ArrayList<>(); protected Set<ClassModel> dependencyModels = new HashSet<>();
public Class<?> getOriginClasses() { public Class<?> getOriginClasses() {
return this.originClasses; return this.originClasses;
@ -32,7 +32,7 @@ public abstract class ClassModel {
return this.originClasses == clazz; return this.originClasses == clazz;
} }
public List<ClassModel> getDependencyModels() { public Set<ClassModel> getDependencyModels() {
return this.dependencyModels; return this.dependencyModels;
} }

View File

@ -6,8 +6,10 @@ import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set;
import org.kar.archidata.externalRestApi.model.ClassEnumModel; import org.kar.archidata.externalRestApi.model.ClassEnumModel;
import org.kar.archidata.externalRestApi.model.ClassListModel; import org.kar.archidata.externalRestApi.model.ClassListModel;
@ -176,11 +178,18 @@ public class TsClassElement {
this.zodName + appendString); this.zodName + appendString);
} }
public String generateImports(final List<ClassModel> depModels, final TsClassElementGroup tsGroup) public String generateImports(final Set<ClassModel> depModels, final TsClassElementGroup tsGroup)
throws IOException { throws IOException {
final Set<TsClassElement> typeScriptModelAlreadyImported = new HashSet<>();
final StringBuilder out = new StringBuilder(); final StringBuilder out = new StringBuilder();
for (final ClassModel depModel : depModels) { for (final ClassModel depModel : depModels) {
final TsClassElement tsModel = tsGroup.find(depModel); final TsClassElement tsModel = tsGroup.find(depModel);
if (typeScriptModelAlreadyImported.contains(tsModel)) {
LOGGER.trace("Model alredy imported for typescript");
continue;
}
typeScriptModelAlreadyImported.add(tsModel);
if (tsModel.nativeType != DefinedPosition.NATIVE) { if (tsModel.nativeType != DefinedPosition.NATIVE) {
out.append("import {"); out.append("import {");
if (tsModel.nativeType != DefinedPosition.NORMAL if (tsModel.nativeType != DefinedPosition.NORMAL