[FIX] order the inputs in typescript generation

This commit is contained in:
Edouard DUPIN 2025-04-15 16:08:51 +02:00
parent 2ba7d47b10
commit 95a37fc7de

View File

@ -8,8 +8,10 @@ import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import java.util.TreeMap;
import org.atriasoft.archidata.externalRestApi.model.ClassEnumModel; import org.atriasoft.archidata.externalRestApi.model.ClassEnumModel;
import org.atriasoft.archidata.externalRestApi.model.ClassListModel; import org.atriasoft.archidata.externalRestApi.model.ClassListModel;
@ -181,9 +183,10 @@ public class TsClassElement {
public String generateImports(final Set<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 Set<TsClassElement> typeScriptModelAlreadyImported = new HashSet<>();
final Map<String, String> mapOutput = new TreeMap<>();
final StringBuilder out = new StringBuilder();
for (final ClassModel depModel : depModels) { for (final ClassModel depModel : depModels) {
final StringBuilder inputStream = new StringBuilder();
final TsClassElement tsModel = tsGroup.find(depModel); final TsClassElement tsModel = tsGroup.find(depModel);
if (typeScriptModelAlreadyImported.contains(tsModel)) { if (typeScriptModelAlreadyImported.contains(tsModel)) {
LOGGER.trace("Model alredy imported for typescript"); LOGGER.trace("Model alredy imported for typescript");
@ -191,30 +194,35 @@ public class TsClassElement {
} }
typeScriptModelAlreadyImported.add(tsModel); typeScriptModelAlreadyImported.add(tsModel);
if (tsModel.nativeType != DefinedPosition.NATIVE) { if (tsModel.nativeType != DefinedPosition.NATIVE) {
out.append("import {"); inputStream.append("import {");
if (tsModel.nativeType != DefinedPosition.NORMAL if (tsModel.nativeType != DefinedPosition.NORMAL
|| tsModel.models.get(0).getApiGenerationMode().read()) { || tsModel.models.get(0).getApiGenerationMode().read()) {
out.append(tsModel.zodName); inputStream.append(tsModel.zodName);
} }
if (tsModel.nativeType == DefinedPosition.NORMAL if (tsModel.nativeType == DefinedPosition.NORMAL
&& tsModel.models.get(0).getApiGenerationMode().update()) { && tsModel.models.get(0).getApiGenerationMode().update()) {
out.append(", "); inputStream.append(", ");
out.append(tsModel.zodName); inputStream.append(tsModel.zodName);
out.append(MODEL_TYPE_UPDATE); inputStream.append(MODEL_TYPE_UPDATE);
out.append(" "); inputStream.append(" ");
} }
if (tsModel.nativeType == DefinedPosition.NORMAL if (tsModel.nativeType == DefinedPosition.NORMAL
&& tsModel.models.get(0).getApiGenerationMode().create()) { && tsModel.models.get(0).getApiGenerationMode().create()) {
out.append(", "); inputStream.append(", ");
out.append(tsModel.zodName); inputStream.append(tsModel.zodName);
out.append(MODEL_TYPE_CREATE); inputStream.append(MODEL_TYPE_CREATE);
out.append(" "); inputStream.append(" ");
} }
out.append("} from \"./"); inputStream.append("} from \"./");
out.append(tsModel.fileName); inputStream.append(tsModel.fileName);
out.append("\";\n"); inputStream.append("\";\n");
mapOutput.put(tsModel.fileName.toString().toLowerCase(), inputStream.toString());
} }
} }
final StringBuilder out = new StringBuilder();
for (final Entry<String, String> elem : mapOutput.entrySet()) {
out.append(elem.getValue());
}
return out.toString(); return out.toString();
} }