diff --git a/src/org/kar/archidata/externalRestApi/TsGenerateApi.java b/src/org/kar/archidata/externalRestApi/TsGenerateApi.java index 8c966e9..51d282f 100644 --- a/src/org/kar/archidata/externalRestApi/TsGenerateApi.java +++ b/src/org/kar/archidata/externalRestApi/TsGenerateApi.java @@ -20,12 +20,21 @@ import java.util.UUID; import org.glassfish.jersey.media.multipart.ContentDisposition; import org.glassfish.jersey.media.multipart.FormDataContentDisposition; import org.kar.archidata.catcher.RestErrorResponse; -import org.kar.archidata.externalRestApi.TsClassElement.DefinedPosition; import org.kar.archidata.externalRestApi.model.ApiGroupModel; import org.kar.archidata.externalRestApi.model.ClassModel; +import org.kar.archidata.externalRestApi.typescript.TsApiGeneration; +import org.kar.archidata.externalRestApi.typescript.TsClassElement; +import org.kar.archidata.externalRestApi.typescript.TsClassElement.DefinedPosition; +import org.kar.archidata.externalRestApi.typescript.TsClassElementGroup; public class TsGenerateApi { - + /** + * Generate a full API tree for Typescript in a specific folder. + * This generate a folder containing a full API with "model" filder and "api" folder. + * The generation depend of Zod and can be strict compile. + * @param api Data model to generate the api + * @param pathPackage Path to store the api. + */ public static void generateApi(final AnalyzeApi api, final String pathPackage) throws Exception { final List localModel = generateApiModel(api); final TsClassElementGroup tsGroup = new TsClassElementGroup(localModel); @@ -35,7 +44,7 @@ public class TsGenerateApi { } // Generate index of model files createModelIndex(pathPackage, tsGroup); - + for (final ApiGroupModel element : api.apiModels) { TsApiGeneration.generateApiFile(element, pathPackage, tsGroup); } @@ -44,7 +53,7 @@ public class TsGenerateApi { createIndex(pathPackage); copyResourceFile("rest-tools.ts", pathPackage + File.separator + "rest-tools.ts"); } - + private static void createIndex(final String pathPackage) throws IOException { final String out = """ /** @@ -53,13 +62,13 @@ public class TsGenerateApi { export * from \"./model\"; export * from \"./api\"; export * from \"./rest-tools\"; - + """; final FileWriter myWriter = new FileWriter(pathPackage + File.separator + "index.ts"); myWriter.write(out); myWriter.close(); } - + private static void createResourceIndex(final String pathPackage, final List apiModels) throws IOException { final StringBuilder out = new StringBuilder(""" @@ -81,7 +90,7 @@ public class TsGenerateApi { myWriter.write(out.toString()); myWriter.close(); } - + private static void createModelIndex(final String pathPackage, final TsClassElementGroup tsGroup) throws IOException { final StringBuilder out = new StringBuilder(""" @@ -107,7 +116,7 @@ public class TsGenerateApi { myWriter.write(out.toString()); myWriter.close(); } - + private static List generateApiModel(final AnalyzeApi api) throws Exception { // First step is to add all specific basic elements the wrap correctly the model final List tsModels = new ArrayList<>(); @@ -212,9 +221,9 @@ public class TsGenerateApi { tsModels.add(new TsClassElement(model)); } return tsModels; - + } - + public static void copyResourceFile(final String name, final String destinationPath) throws IOException { final InputStream ioStream = TsGenerateApi.class.getClassLoader().getResourceAsStream(name); if (ioStream == null) { diff --git a/src/org/kar/archidata/externalRestApi/TsApiGeneration.java b/src/org/kar/archidata/externalRestApi/typescript/TsApiGeneration.java similarity index 99% rename from src/org/kar/archidata/externalRestApi/TsApiGeneration.java rename to src/org/kar/archidata/externalRestApi/typescript/TsApiGeneration.java index 6d1f7c8..e6c16e2 100644 --- a/src/org/kar/archidata/externalRestApi/TsApiGeneration.java +++ b/src/org/kar/archidata/externalRestApi/typescript/TsApiGeneration.java @@ -1,4 +1,4 @@ -package org.kar.archidata.externalRestApi; +package org.kar.archidata.externalRestApi.typescript; import java.io.File; import java.io.FileWriter; @@ -12,7 +12,6 @@ import java.util.Set; import java.util.TreeSet; import org.kar.archidata.dataAccess.DataExport; -import org.kar.archidata.externalRestApi.TsClassElement.DefinedPosition; import org.kar.archidata.externalRestApi.model.ApiGroupModel; import org.kar.archidata.externalRestApi.model.ApiModel; import org.kar.archidata.externalRestApi.model.ClassEnumModel; @@ -21,6 +20,7 @@ import org.kar.archidata.externalRestApi.model.ClassMapModel; import org.kar.archidata.externalRestApi.model.ClassModel; import org.kar.archidata.externalRestApi.model.ClassObjectModel; import org.kar.archidata.externalRestApi.model.RestTypeRequest; +import org.kar.archidata.externalRestApi.typescript.TsClassElement.DefinedPosition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/org/kar/archidata/externalRestApi/TsClassElement.java b/src/org/kar/archidata/externalRestApi/typescript/TsClassElement.java similarity index 99% rename from src/org/kar/archidata/externalRestApi/TsClassElement.java rename to src/org/kar/archidata/externalRestApi/typescript/TsClassElement.java index 19a6f07..fdd626c 100644 --- a/src/org/kar/archidata/externalRestApi/TsClassElement.java +++ b/src/org/kar/archidata/externalRestApi/typescript/TsClassElement.java @@ -1,4 +1,4 @@ -package org.kar.archidata.externalRestApi; +package org.kar.archidata.externalRestApi.typescript; import java.io.File; import java.io.FileWriter; diff --git a/src/org/kar/archidata/externalRestApi/TsClassElementGroup.java b/src/org/kar/archidata/externalRestApi/typescript/TsClassElementGroup.java similarity index 90% rename from src/org/kar/archidata/externalRestApi/TsClassElementGroup.java rename to src/org/kar/archidata/externalRestApi/typescript/TsClassElementGroup.java index 289e62c..c7dbd83 100644 --- a/src/org/kar/archidata/externalRestApi/TsClassElementGroup.java +++ b/src/org/kar/archidata/externalRestApi/typescript/TsClassElementGroup.java @@ -1,4 +1,4 @@ -package org.kar.archidata.externalRestApi; +package org.kar.archidata.externalRestApi.typescript; import java.util.List;