[DEV] better management of generation of multiple Type requested

This commit is contained in:
Edouard DUPIN 2024-03-13 00:39:14 +01:00
parent 6944331761
commit c13f910620

View File

@ -1,7 +1,10 @@
package org.kar.archidata.dataAccess; package org.kar.archidata.dataAccess;
import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Parameter; import java.lang.reflect.Parameter;
@ -53,7 +56,7 @@ public class DataFactoryTsApi {
/** /**
* API of the server (auto-generated code) * API of the server (auto-generated code)
*/ */
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, RESTRequestJson, RESTRequestJsonArray } from "./rest-tools" import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
import { """; import { """;
for (final Class<?> clazz : classs) { for (final Class<?> clazz : classs) {
@ -367,6 +370,9 @@ public class DataFactoryTsApi {
if (!pathParams.isEmpty()) { if (!pathParams.isEmpty()) {
builder.append(" params,"); builder.append(" params,");
} }
if (produces.size() > 1) {
builder.append(" produce,");
}
if (emptyElement.size() == 1) { if (emptyElement.size() == 1) {
builder.append(" data,"); builder.append(" data,");
} else if (formDataParams.size() != 0) { } else if (formDataParams.size() != 0) {
@ -411,14 +417,43 @@ public class DataFactoryTsApi {
} }
builder.append("\n\t\t},"); builder.append("\n\t\t},");
} }
if (produces.size() > 1) {
builder.append("\n\t\tproduce: ");
String isFist = null;
for (final String elem : produces) {
String lastElement = null;
if (MediaType.APPLICATION_JSON.equals(elem)) {
lastElement = "HTTPMimeType.JSON";
}
if (MediaType.MULTIPART_FORM_DATA.equals(elem)) {
lastElement = "HTTPMimeType.MULTIPART";
}
if (DataExport.CSV_TYPE.equals(elem)) {
lastElement = "HTTPMimeType.CSV";
}
if (lastElement != null) {
if (isFist == null) {
isFist = lastElement;
} else {
builder.append(" | ");
}
builder.append(lastElement);
} else {
LOGGER.error("Unmanaged model type: {}", elem);
}
}
builder.append(",");
}
builder.append("\n\t}): Promise<"); builder.append("\n\t}): Promise<");
builder.append(tmpReturn.tsTypeName); builder.append(tmpReturn.tsTypeName);
if (returnModelIsArray) { if (returnModelIsArray) {
builder.append("[]"); builder.append("[]");
} }
builder.append("> {"); builder.append("> {");
if (tmpReturn.tsTypeName.equals("void")) {
if (returnModelIsArray) { builder.append("\n\t\treturn RESTRequestVoid({");
} else if (returnModelIsArray) {
builder.append("\n\t\treturn RESTRequestJsonArray({"); builder.append("\n\t\treturn RESTRequestJsonArray({");
} else { } else {
builder.append("\n\t\treturn RESTRequestJson({"); builder.append("\n\t\treturn RESTRequestJson({");
@ -446,6 +481,9 @@ public class DataFactoryTsApi {
} }
} }
if (produces != null) { if (produces != null) {
if (produces.size() > 1) {
builder.append("\n\t\t\t\taccept: produce,");
} else {
for (final String elem : produces) { for (final String elem : produces) {
if (MediaType.APPLICATION_JSON.equals(elem)) { if (MediaType.APPLICATION_JSON.equals(elem)) {
builder.append("\n\t\t\t\taccept: HTTPMimeType.JSON,"); builder.append("\n\t\t\t\taccept: HTTPMimeType.JSON,");
@ -453,6 +491,7 @@ public class DataFactoryTsApi {
} }
} }
} }
}
builder.append("\n\t\t\t},"); builder.append("\n\t\t\t},");
builder.append("\n\t\t\trestConfig,"); builder.append("\n\t\t\trestConfig,");
if (!pathParams.isEmpty()) { if (!pathParams.isEmpty()) {
@ -466,8 +505,11 @@ public class DataFactoryTsApi {
} else if (formDataParams.size() != 0) { } else if (formDataParams.size() != 0) {
builder.append("\n\t\t\tdata,"); builder.append("\n\t\t\tdata,");
} }
builder.append("\n\t\t}, "); builder.append("\n\t\t}");
if (tmpReturn.tsCheckType != null) {
builder.append(", ");
builder.append(tmpReturn.tsCheckType); builder.append(tmpReturn.tsCheckType);
}
builder.append(");"); builder.append(");");
builder.append("\n\t};"); builder.append("\n\t};");
} }