[STYLE] set all the typescript generation in a sub-folder

This commit is contained in:
Edouard DUPIN 2024-06-01 08:18:43 +02:00
parent 1fe3cc3523
commit f3a9ebf5e1
4 changed files with 23 additions and 14 deletions

View File

@ -20,12 +20,21 @@ import java.util.UUID;
import org.glassfish.jersey.media.multipart.ContentDisposition; import org.glassfish.jersey.media.multipart.ContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition; import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.kar.archidata.catcher.RestErrorResponse; 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.ApiGroupModel;
import org.kar.archidata.externalRestApi.model.ClassModel; 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 { 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 { public static void generateApi(final AnalyzeApi api, final String pathPackage) throws Exception {
final List<TsClassElement> localModel = generateApiModel(api); final List<TsClassElement> localModel = generateApiModel(api);
final TsClassElementGroup tsGroup = new TsClassElementGroup(localModel); final TsClassElementGroup tsGroup = new TsClassElementGroup(localModel);
@ -35,7 +44,7 @@ public class TsGenerateApi {
} }
// Generate index of model files // Generate index of model files
createModelIndex(pathPackage, tsGroup); createModelIndex(pathPackage, tsGroup);
for (final ApiGroupModel element : api.apiModels) { for (final ApiGroupModel element : api.apiModels) {
TsApiGeneration.generateApiFile(element, pathPackage, tsGroup); TsApiGeneration.generateApiFile(element, pathPackage, tsGroup);
} }
@ -44,7 +53,7 @@ public class TsGenerateApi {
createIndex(pathPackage); createIndex(pathPackage);
copyResourceFile("rest-tools.ts", pathPackage + File.separator + "rest-tools.ts"); copyResourceFile("rest-tools.ts", pathPackage + File.separator + "rest-tools.ts");
} }
private static void createIndex(final String pathPackage) throws IOException { private static void createIndex(final String pathPackage) throws IOException {
final String out = """ final String out = """
/** /**
@ -53,13 +62,13 @@ public class TsGenerateApi {
export * from \"./model\"; export * from \"./model\";
export * from \"./api\"; export * from \"./api\";
export * from \"./rest-tools\"; export * from \"./rest-tools\";
"""; """;
final FileWriter myWriter = new FileWriter(pathPackage + File.separator + "index.ts"); final FileWriter myWriter = new FileWriter(pathPackage + File.separator + "index.ts");
myWriter.write(out); myWriter.write(out);
myWriter.close(); myWriter.close();
} }
private static void createResourceIndex(final String pathPackage, final List<ApiGroupModel> apiModels) private static void createResourceIndex(final String pathPackage, final List<ApiGroupModel> apiModels)
throws IOException { throws IOException {
final StringBuilder out = new StringBuilder(""" final StringBuilder out = new StringBuilder("""
@ -81,7 +90,7 @@ public class TsGenerateApi {
myWriter.write(out.toString()); myWriter.write(out.toString());
myWriter.close(); myWriter.close();
} }
private static void createModelIndex(final String pathPackage, final TsClassElementGroup tsGroup) private static void createModelIndex(final String pathPackage, final TsClassElementGroup tsGroup)
throws IOException { throws IOException {
final StringBuilder out = new StringBuilder(""" final StringBuilder out = new StringBuilder("""
@ -107,7 +116,7 @@ public class TsGenerateApi {
myWriter.write(out.toString()); myWriter.write(out.toString());
myWriter.close(); myWriter.close();
} }
private static List<TsClassElement> generateApiModel(final AnalyzeApi api) throws Exception { private static List<TsClassElement> generateApiModel(final AnalyzeApi api) throws Exception {
// First step is to add all specific basic elements the wrap correctly the model // First step is to add all specific basic elements the wrap correctly the model
final List<TsClassElement> tsModels = new ArrayList<>(); final List<TsClassElement> tsModels = new ArrayList<>();
@ -212,9 +221,9 @@ public class TsGenerateApi {
tsModels.add(new TsClassElement(model)); tsModels.add(new TsClassElement(model));
} }
return tsModels; return tsModels;
} }
public static void copyResourceFile(final String name, final String destinationPath) throws IOException { public static void copyResourceFile(final String name, final String destinationPath) throws IOException {
final InputStream ioStream = TsGenerateApi.class.getClassLoader().getResourceAsStream(name); final InputStream ioStream = TsGenerateApi.class.getClassLoader().getResourceAsStream(name);
if (ioStream == null) { if (ioStream == null) {

View File

@ -1,4 +1,4 @@
package org.kar.archidata.externalRestApi; package org.kar.archidata.externalRestApi.typescript;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
@ -12,7 +12,6 @@ import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
import org.kar.archidata.dataAccess.DataExport; 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.ApiGroupModel;
import org.kar.archidata.externalRestApi.model.ApiModel; import org.kar.archidata.externalRestApi.model.ApiModel;
import org.kar.archidata.externalRestApi.model.ClassEnumModel; 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.ClassModel;
import org.kar.archidata.externalRestApi.model.ClassObjectModel; import org.kar.archidata.externalRestApi.model.ClassObjectModel;
import org.kar.archidata.externalRestApi.model.RestTypeRequest; import org.kar.archidata.externalRestApi.model.RestTypeRequest;
import org.kar.archidata.externalRestApi.typescript.TsClassElement.DefinedPosition;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -1,4 +1,4 @@
package org.kar.archidata.externalRestApi; package org.kar.archidata.externalRestApi.typescript;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;

View File

@ -1,4 +1,4 @@
package org.kar.archidata.externalRestApi; package org.kar.archidata.externalRestApi.typescript;
import java.util.List; import java.util.List;