Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4cb8c84312 | |||
| 5acdbfb0c7 | |||
| d35c83fcbf | |||
| 0fe769a203 | |||
| dbe1b469f6 |
2
pom.xml
2
pom.xml
@@ -3,7 +3,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>kangaroo-and-rabbit</groupId>
|
<groupId>kangaroo-and-rabbit</groupId>
|
||||||
<artifactId>archidata</artifactId>
|
<artifactId>archidata</artifactId>
|
||||||
<version>0.7.0</version>
|
<version>0.7.2</version>
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.version>3.1</maven.compiler.version>
|
<maven.compiler.version>3.1</maven.compiler.version>
|
||||||
<maven.compiler.source>21</maven.compiler.source>
|
<maven.compiler.source>21</maven.compiler.source>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import java.lang.annotation.RetentionPolicy;
|
|||||||
import java.lang.annotation.Target;
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
/** In case of the update parameter with String input to detect null element. */
|
/** In case of the update parameter with String input to detect null element. */
|
||||||
@Target({ElementType.PARAMETER, ElementType.METHOD})
|
@Target({ ElementType.PARAMETER, ElementType.METHOD })
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
public @interface AsyncType {
|
public @interface AsyncType {
|
||||||
Class<?> value();
|
Class<?> value();
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ public class DataResource {
|
|||||||
}
|
}
|
||||||
return filePath;
|
return filePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getFileData(final UUID uuid) {
|
public static String getFileData(final UUID uuid) {
|
||||||
final String stringUUID = uuid.toString();
|
final String stringUUID = uuid.toString();
|
||||||
final String part1 = stringUUID.substring(0, 2);
|
final String part1 = stringUUID.substring(0, 2);
|
||||||
@@ -108,6 +109,7 @@ public class DataResource {
|
|||||||
filePath += part3;
|
filePath += part3;
|
||||||
return filePath;
|
return filePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getFileMetaData(final UUID uuid) {
|
public static String getFileMetaData(final UUID uuid) {
|
||||||
return getFileData(uuid) + ".json";
|
return getFileData(uuid) + ".json";
|
||||||
}
|
}
|
||||||
@@ -317,8 +319,8 @@ public class DataResource {
|
|||||||
return Response.status(404).entity("{\"error\":\"media Does not exist: " + id + "\"}").type("application/json").build();
|
return Response.status(404).entity("{\"error\":\"media Does not exist: " + id + "\"}").type("application/json").build();
|
||||||
}
|
}
|
||||||
if (value.mimeType.contentEquals("image/jpeg") || value.mimeType.contentEquals("image/png")
|
if (value.mimeType.contentEquals("image/jpeg") || value.mimeType.contentEquals("image/png")
|
||||||
// || value.mimeType.contentEquals("image/webp")
|
// || value.mimeType.contentEquals("image/webp")
|
||||||
) {
|
) {
|
||||||
// reads input image
|
// reads input image
|
||||||
final BufferedImage inputImage = ImageIO.read(inputFile);
|
final BufferedImage inputImage = ImageIO.read(inputFile);
|
||||||
final int scaledWidth = 250;
|
final int scaledWidth = 250;
|
||||||
|
|||||||
@@ -3,19 +3,21 @@ package org.kar.archidata.catcher;
|
|||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.kar.archidata.tools.UuidUtils;
|
||||||
|
|
||||||
import jakarta.ws.rs.core.Response;
|
import jakarta.ws.rs.core.Response;
|
||||||
|
|
||||||
public class RestErrorResponse {
|
public class RestErrorResponse {
|
||||||
public UUID uuid = UUID.randomUUID();
|
public UUID uuid = UuidUtils.nextUUID();
|
||||||
|
public String name; // Mandatory for TS generic error
|
||||||
|
public String message; // Mandatory for TS generic error
|
||||||
public String time;
|
public String time;
|
||||||
public String error;
|
|
||||||
public String message;
|
|
||||||
final public int status;
|
final public int status;
|
||||||
final public String statusMessage;
|
final public String statusMessage;
|
||||||
|
|
||||||
public RestErrorResponse(final Response.Status status, final String time, final String error, final String message) {
|
public RestErrorResponse(final Response.Status status, final String time, final String error, final String message) {
|
||||||
this.time = time;
|
this.time = time;
|
||||||
this.error = error;
|
this.name = error;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
this.status = status.getStatusCode();
|
this.status = status.getStatusCode();
|
||||||
this.statusMessage = status.getReasonPhrase();
|
this.statusMessage = status.getReasonPhrase();
|
||||||
@@ -23,13 +25,15 @@ public class RestErrorResponse {
|
|||||||
|
|
||||||
public RestErrorResponse(final Response.Status status, final String error, final String message) {
|
public RestErrorResponse(final Response.Status status, final String error, final String message) {
|
||||||
this.time = Instant.now().toString();
|
this.time = Instant.now().toString();
|
||||||
this.error = error;
|
this.name = error;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
this.status = status.getStatusCode();
|
this.status = status.getStatusCode();
|
||||||
this.statusMessage = status.getReasonPhrase();
|
this.statusMessage = status.getReasonPhrase();
|
||||||
}
|
}
|
||||||
|
|
||||||
public RestErrorResponse(final Response.Status status) {
|
public RestErrorResponse(final Response.Status status) {
|
||||||
|
this.name = "generic";
|
||||||
|
this.message = "";
|
||||||
this.time = Instant.now().toString();
|
this.time = Instant.now().toString();
|
||||||
this.status = status.getStatusCode();
|
this.status = status.getStatusCode();
|
||||||
this.statusMessage = status.getReasonPhrase();
|
this.statusMessage = status.getReasonPhrase();
|
||||||
|
|||||||
@@ -835,7 +835,8 @@ public class DataAccess {
|
|||||||
UUID uuid = null;
|
UUID uuid = null;
|
||||||
if (generateUUID) {
|
if (generateUUID) {
|
||||||
firstField = false;
|
firstField = false;
|
||||||
uuid = UUID.randomUUID();
|
// uuid = UUID.randomUUID();
|
||||||
|
uuid = UuidUtils.nextUUID();
|
||||||
addElement(ps, uuid, iii);
|
addElement(ps, uuid, iii);
|
||||||
iii.inc();
|
iii.inc();
|
||||||
}
|
}
|
||||||
@@ -889,13 +890,8 @@ public class DataAccess {
|
|||||||
if (generatedKeys.next()) {
|
if (generatedKeys.next()) {
|
||||||
if (primaryKeyField.getType() == UUID.class) {
|
if (primaryKeyField.getType() == UUID.class) {
|
||||||
// uniqueSQLUUID = generatedKeys.getObject(1, UUID.class);
|
// uniqueSQLUUID = generatedKeys.getObject(1, UUID.class);
|
||||||
/*
|
/* final Object obj = generatedKeys.getObject(1); final BigInteger bigint = (BigInteger) generatedKeys.getObject(1); uniqueSQLUUID = UuidUtils.asUuid(bigint); final UUID
|
||||||
final Object obj = generatedKeys.getObject(1);
|
* generatedUUID = (UUID) generatedKeys.getObject(1); System.out.println("UUID généré: " + generatedUUID); */
|
||||||
final BigInteger bigint = (BigInteger) generatedKeys.getObject(1);
|
|
||||||
uniqueSQLUUID = UuidUtils.asUuid(bigint);
|
|
||||||
final UUID generatedUUID = (UUID) generatedKeys.getObject(1);
|
|
||||||
System.out.println("UUID généré: " + generatedUUID);
|
|
||||||
*/
|
|
||||||
final Object obj = generatedKeys.getObject(1);
|
final Object obj = generatedKeys.getObject(1);
|
||||||
final byte[] tmpid = generatedKeys.getBytes(1);
|
final byte[] tmpid = generatedKeys.getBytes(1);
|
||||||
uniqueSQLUUID = UuidUtils.asUuid(tmpid);
|
uniqueSQLUUID = UuidUtils.asUuid(tmpid);
|
||||||
|
|||||||
@@ -199,6 +199,7 @@ public class DataFactoryTsApi {
|
|||||||
}
|
}
|
||||||
return ((AsyncType) annotation[0]).value();
|
return ((AsyncType) annotation[0]).value();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Class<?> apiAnnotationGetAsyncType(final Method element) throws Exception {
|
public static Class<?> apiAnnotationGetAsyncType(final Method element) throws Exception {
|
||||||
final Annotation[] annotation = element.getDeclaredAnnotationsByType(AsyncType.class);
|
final Annotation[] annotation = element.getDeclaredAnnotationsByType(AsyncType.class);
|
||||||
if (annotation.length == 0) {
|
if (annotation.length == 0) {
|
||||||
@@ -265,7 +266,7 @@ public class DataFactoryTsApi {
|
|||||||
returnTypeModel = method.getReturnType();
|
returnTypeModel = method.getReturnType();
|
||||||
}
|
}
|
||||||
boolean isUnmanagedReturnType = false;
|
boolean isUnmanagedReturnType = false;
|
||||||
if (returnTypeModel == Response.class ) {
|
if (returnTypeModel == Response.class) {
|
||||||
isUnmanagedReturnType = true;
|
isUnmanagedReturnType = true;
|
||||||
returnTypeModel = Void.class;
|
returnTypeModel = Void.class;
|
||||||
}
|
}
|
||||||
@@ -551,16 +552,14 @@ public class DataFactoryTsApi {
|
|||||||
myWriter = new FileWriter(pathPackage + File.separator + "index.ts");
|
myWriter = new FileWriter(pathPackage + File.separator + "index.ts");
|
||||||
myWriter.write(index.toString());
|
myWriter.write(index.toString());
|
||||||
myWriter.close();
|
myWriter.close();
|
||||||
final InputStream ioStream = DataFactoryTsApi.class
|
final InputStream ioStream = DataFactoryTsApi.class.getClassLoader().getResourceAsStream("rest-tools.ts");
|
||||||
.getClassLoader()
|
|
||||||
.getResourceAsStream("rest-tools.ts");
|
|
||||||
if (ioStream == null) {
|
if (ioStream == null) {
|
||||||
throw new IllegalArgumentException("rest-tools.ts is not found");
|
throw new IllegalArgumentException("rest-tools.ts is not found");
|
||||||
}
|
}
|
||||||
final BufferedReader buffer = new BufferedReader(new InputStreamReader(ioStream));
|
final BufferedReader buffer = new BufferedReader(new InputStreamReader(ioStream));
|
||||||
myWriter = new FileWriter(pathPackage + File.separator + "rest-tools.ts");
|
myWriter = new FileWriter(pathPackage + File.separator + "rest-tools.ts");
|
||||||
String line;
|
String line;
|
||||||
while( (line = buffer.readLine()) != null) {
|
while ((line = buffer.readLine()) != null) {
|
||||||
myWriter.write(line);
|
myWriter.write(line);
|
||||||
myWriter.write("\n");
|
myWriter.write("\n");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ public class DataFactoryZod {
|
|||||||
out.append("zod.enum([");
|
out.append("zod.enum([");
|
||||||
for (final Object elem : arr) {
|
for (final Object elem : arr) {
|
||||||
if (!first) {
|
if (!first) {
|
||||||
out.append(", \n\t");
|
out.append(",\n\t");
|
||||||
} else {
|
} else {
|
||||||
out.append("\n\t");
|
out.append("\n\t");
|
||||||
first = false;
|
first = false;
|
||||||
@@ -106,14 +106,18 @@ public class DataFactoryZod {
|
|||||||
out.append(elem.toString());
|
out.append(elem.toString());
|
||||||
out.append("'");
|
out.append("'");
|
||||||
}
|
}
|
||||||
out.append("\n\t])");
|
if (first) {
|
||||||
|
out.append("]}");
|
||||||
|
} else {
|
||||||
|
out.append("\n\t])");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
element.isEnum = true;
|
element.isEnum = true;
|
||||||
boolean first = true;
|
boolean first = true;
|
||||||
out.append("{");
|
out.append("{");
|
||||||
for (final Object elem : arr) {
|
for (final Object elem : arr) {
|
||||||
if (!first) {
|
if (!first) {
|
||||||
out.append(", \n\t");
|
out.append(",\n\t");
|
||||||
} else {
|
} else {
|
||||||
out.append("\n\t");
|
out.append("\n\t");
|
||||||
first = false;
|
first = false;
|
||||||
@@ -123,7 +127,11 @@ public class DataFactoryZod {
|
|||||||
out.append(elem.toString());
|
out.append(elem.toString());
|
||||||
out.append("'");
|
out.append("'");
|
||||||
}
|
}
|
||||||
out.append("}");
|
if (first) {
|
||||||
|
out.append("}");
|
||||||
|
} else {
|
||||||
|
out.append(",\n\t}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
element.declaration = out.toString();
|
element.declaration = out.toString();
|
||||||
previous.addOrder(element);
|
previous.addOrder(element);
|
||||||
|
|||||||
@@ -145,6 +145,7 @@ public class AddOnDataJson implements DataAccessAddOn {
|
|||||||
final boolean createIfNotExist, final boolean createDrop, final int fieldId) throws Exception {
|
final boolean createIfNotExist, final boolean createDrop, final int fieldId) throws Exception {
|
||||||
DataFactory.createTablesSpecificType(tableName, field, mainTableBuilder, preActionList, postActionList, createIfNotExist, createDrop, fieldId, JsonValue.class);
|
DataFactory.createTablesSpecificType(tableName, field, mainTableBuilder, preActionList, postActionList, createIfNotExist, createDrop, fieldId, JsonValue.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addLink(final Class<?> clazz, final Long id, final String column, final Long remoteKey) throws Exception {
|
public static void addLink(final Class<?> clazz, final Long id, final String column, final Long remoteKey) throws Exception {
|
||||||
final String tableName = AnnotationTools.getTableName(clazz);
|
final String tableName = AnnotationTools.getTableName(clazz);
|
||||||
final TableCoversLongLong data = DataAccess.get(TableCoversLongLong.class, id, new OverrideTableName(tableName));
|
final TableCoversLongLong data = DataAccess.get(TableCoversLongLong.class, id, new OverrideTableName(tableName));
|
||||||
@@ -174,6 +175,7 @@ public class AddOnDataJson implements DataAccessAddOn {
|
|||||||
data.covers.add(remoteKey);
|
data.covers.add(remoteKey);
|
||||||
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addLink(final Class<?> clazz, final UUID id, final String column, final UUID remoteKey) throws Exception {
|
public static void addLink(final Class<?> clazz, final UUID id, final String column, final UUID remoteKey) throws Exception {
|
||||||
final String tableName = AnnotationTools.getTableName(clazz);
|
final String tableName = AnnotationTools.getTableName(clazz);
|
||||||
final TableCoversUUIDUUID data = DataAccess.get(TableCoversUUIDUUID.class, id, new OverrideTableName(tableName));
|
final TableCoversUUIDUUID data = DataAccess.get(TableCoversUUIDUUID.class, id, new OverrideTableName(tableName));
|
||||||
@@ -188,6 +190,7 @@ public class AddOnDataJson implements DataAccessAddOn {
|
|||||||
data.covers.add(remoteKey);
|
data.covers.add(remoteKey);
|
||||||
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addLink(final Class<?> clazz, final UUID id, final String column, final Long remoteKey) throws Exception {
|
public static void addLink(final Class<?> clazz, final UUID id, final String column, final Long remoteKey) throws Exception {
|
||||||
final String tableName = AnnotationTools.getTableName(clazz);
|
final String tableName = AnnotationTools.getTableName(clazz);
|
||||||
final TableCoversUUIDLong data = DataAccess.get(TableCoversUUIDLong.class, id, new OverrideTableName(tableName));
|
final TableCoversUUIDLong data = DataAccess.get(TableCoversUUIDLong.class, id, new OverrideTableName(tableName));
|
||||||
@@ -202,6 +205,7 @@ public class AddOnDataJson implements DataAccessAddOn {
|
|||||||
data.covers.add(remoteKey);
|
data.covers.add(remoteKey);
|
||||||
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void removeLink(final Class<?> clazz, final UUID id, final String column, final Long remoteKey) throws Exception {
|
public static void removeLink(final Class<?> clazz, final UUID id, final String column, final Long remoteKey) throws Exception {
|
||||||
final String tableName = AnnotationTools.getTableName(clazz);
|
final String tableName = AnnotationTools.getTableName(clazz);
|
||||||
final TableCoversUUIDLong data = DataAccess.get(TableCoversUUIDLong.class, id, new OverrideTableName(tableName));
|
final TableCoversUUIDLong data = DataAccess.get(TableCoversUUIDLong.class, id, new OverrideTableName(tableName));
|
||||||
@@ -218,6 +222,7 @@ public class AddOnDataJson implements DataAccessAddOn {
|
|||||||
data.covers = newList;
|
data.covers = newList;
|
||||||
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void removeLink(final Class<?> clazz, final UUID id, final String column, final UUID remoteKey) throws Exception {
|
public static void removeLink(final Class<?> clazz, final UUID id, final String column, final UUID remoteKey) throws Exception {
|
||||||
final String tableName = AnnotationTools.getTableName(clazz);
|
final String tableName = AnnotationTools.getTableName(clazz);
|
||||||
final TableCoversUUIDUUID data = DataAccess.get(TableCoversUUIDUUID.class, id, new OverrideTableName(tableName));
|
final TableCoversUUIDUUID data = DataAccess.get(TableCoversUUIDUUID.class, id, new OverrideTableName(tableName));
|
||||||
@@ -234,6 +239,7 @@ public class AddOnDataJson implements DataAccessAddOn {
|
|||||||
data.covers = newList;
|
data.covers = newList;
|
||||||
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void removeLink(final Class<?> clazz, final Long id, final String column, final Long remoteKey) throws Exception {
|
public static void removeLink(final Class<?> clazz, final Long id, final String column, final Long remoteKey) throws Exception {
|
||||||
final String tableName = AnnotationTools.getTableName(clazz);
|
final String tableName = AnnotationTools.getTableName(clazz);
|
||||||
final TableCoversLongLong data = DataAccess.get(TableCoversLongLong.class, id, new OverrideTableName(tableName));
|
final TableCoversLongLong data = DataAccess.get(TableCoversLongLong.class, id, new OverrideTableName(tableName));
|
||||||
@@ -250,6 +256,7 @@ public class AddOnDataJson implements DataAccessAddOn {
|
|||||||
data.covers = newList;
|
data.covers = newList;
|
||||||
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void removeLink(final Class<?> clazz, final Long id, final String column, final UUID remoteKey) throws Exception {
|
public static void removeLink(final Class<?> clazz, final Long id, final String column, final UUID remoteKey) throws Exception {
|
||||||
final String tableName = AnnotationTools.getTableName(clazz);
|
final String tableName = AnnotationTools.getTableName(clazz);
|
||||||
final TableCoversLongUUID data = DataAccess.get(TableCoversLongUUID.class, id, new OverrideTableName(tableName));
|
final TableCoversLongUUID data = DataAccess.get(TableCoversLongUUID.class, id, new OverrideTableName(tableName));
|
||||||
@@ -266,22 +273,9 @@ public class AddOnDataJson implements DataAccessAddOn {
|
|||||||
data.covers = newList;
|
data.covers = newList;
|
||||||
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
DataAccess.update(data, data.id, List.of("covers"), new OverrideTableName(tableName));
|
||||||
}
|
}
|
||||||
/*
|
/* public static <TYPE> void addLink(final Class<TYPE> clazz, final Object localKey, final String column, final Object remoteKey) throws Exception { final String tableName =
|
||||||
public static <TYPE> void addLink(final Class<TYPE> clazz, final Object localKey, final String column, final Object remoteKey) throws Exception {
|
* AnnotationTools.getTableName(clazz); final TYPE data = DataAccess.get(clazz, localKey); // TODO: add filter of the "column" // find the field column: // add the remoteKey in the list: // post
|
||||||
final String tableName = AnnotationTools.getTableName(clazz);
|
* new data in the DB final String linkTableName = generateLinkTableName(this.tableName, this.column); final LinkTable insertElement = new LinkTable(this.localKey, this.remoteKey);
|
||||||
final TYPE data = DataAccess.get(clazz, localKey); // TODO: add filter of the "column"
|
* DataAccess.insert(insertElement, new OverrideTableName(linkTableName)); } */
|
||||||
|
|
||||||
// find the field column:
|
|
||||||
|
|
||||||
// add the remoteKey in the list:
|
|
||||||
|
|
||||||
|
|
||||||
// post new data in the DB
|
|
||||||
|
|
||||||
final String linkTableName = generateLinkTableName(this.tableName, this.column);
|
|
||||||
final LinkTable insertElement = new LinkTable(this.localKey, this.remoteKey);
|
|
||||||
DataAccess.insert(insertElement, new OverrideTableName(linkTableName));
|
|
||||||
|
|
||||||
}*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import java.util.UUID;
|
|||||||
public class RESTErrorResponseExeption extends Exception {
|
public class RESTErrorResponseExeption extends Exception {
|
||||||
public UUID uuid;
|
public UUID uuid;
|
||||||
public String time;
|
public String time;
|
||||||
public String error;
|
public String name;
|
||||||
public String message;
|
public String message;
|
||||||
public int status;
|
public int status;
|
||||||
public String statusMessage;
|
public String statusMessage;
|
||||||
@@ -13,16 +13,16 @@ public class RESTErrorResponseExeption extends Exception {
|
|||||||
public RESTErrorResponseExeption() {
|
public RESTErrorResponseExeption() {
|
||||||
this.uuid = null;
|
this.uuid = null;
|
||||||
this.time = null;
|
this.time = null;
|
||||||
this.error = null;
|
this.name = null;
|
||||||
this.message = null;
|
this.message = null;
|
||||||
this.status = 0;
|
this.status = 0;
|
||||||
this.statusMessage = null;
|
this.statusMessage = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RESTErrorResponseExeption(final UUID uuid, final String time, final String error, final String message, final int status, final String statusMessage) {
|
public RESTErrorResponseExeption(final UUID uuid, final String time, final String name, final String message, final int status, final String statusMessage) {
|
||||||
this.uuid = uuid;
|
this.uuid = uuid;
|
||||||
this.time = time;
|
this.time = time;
|
||||||
this.error = error;
|
this.name = name;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
this.status = status;
|
this.status = status;
|
||||||
this.statusMessage = statusMessage;
|
this.statusMessage = statusMessage;
|
||||||
@@ -30,7 +30,7 @@ public class RESTErrorResponseExeption extends Exception {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "RESTErrorResponseExeption [uuid=" + this.uuid + ", time=" + this.time + ", error=" + this.error + ", message=" + this.message + ", status=" + this.status + ", statusMessage="
|
return "RESTErrorResponseExeption [uuid=" + this.uuid + ", time=" + this.time + ", name=" + this.name + ", message=" + this.message + ", status=" + this.status + ", statusMessage="
|
||||||
+ this.statusMessage + "]";
|
+ this.statusMessage + "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -211,7 +211,8 @@ public class DataTools {
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <CLASS_TYPE, ID_TYPE> Response uploadCover(final Class<CLASS_TYPE> clazz, final ID_TYPE id, String fileName, final InputStream fileInputStream, final FormDataContentDisposition fileMetaData) {
|
public static <CLASS_TYPE, ID_TYPE> Response uploadCover(final Class<CLASS_TYPE> clazz, final ID_TYPE id, String fileName, final InputStream fileInputStream,
|
||||||
|
final FormDataContentDisposition fileMetaData) {
|
||||||
try {
|
try {
|
||||||
// correct input string stream :
|
// correct input string stream :
|
||||||
fileName = multipartCorrection(fileName);
|
fileName = multipartCorrection(fileName);
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public class RESTApi {
|
|||||||
if (httpResponse.statusCode() < 200 || httpResponse.statusCode() >= 300) {
|
if (httpResponse.statusCode() < 200 || httpResponse.statusCode() >= 300) {
|
||||||
try {
|
try {
|
||||||
final RESTErrorResponseExeption out = this.mapper.readValue(httpResponse.body(), RESTErrorResponseExeption.class);
|
final RESTErrorResponseExeption out = this.mapper.readValue(httpResponse.body(), RESTErrorResponseExeption.class);
|
||||||
throw new RESTErrorResponseExeption(out.uuid, out.time, out.error, out.message, out.status, out.statusMessage);
|
throw out;
|
||||||
} catch (final MismatchedInputException ex) {
|
} catch (final MismatchedInputException ex) {
|
||||||
throw new IOException("Fail to get the data [" + httpResponse.statusCode() + "] " + httpResponse.body());
|
throw new IOException("Fail to get the data [" + httpResponse.statusCode() + "] " + httpResponse.body());
|
||||||
}
|
}
|
||||||
@@ -123,7 +123,7 @@ public class RESTApi {
|
|||||||
if (httpResponse.statusCode() < 200 || httpResponse.statusCode() >= 300) {
|
if (httpResponse.statusCode() < 200 || httpResponse.statusCode() >= 300) {
|
||||||
try {
|
try {
|
||||||
final RESTErrorResponseExeption out = this.mapper.readValue(httpResponse.body(), RESTErrorResponseExeption.class);
|
final RESTErrorResponseExeption out = this.mapper.readValue(httpResponse.body(), RESTErrorResponseExeption.class);
|
||||||
throw new RESTErrorResponseExeption(out.uuid, out.time, out.error, out.message, out.status, out.statusMessage);
|
throw out;
|
||||||
} catch (final MismatchedInputException ex) {
|
} catch (final MismatchedInputException ex) {
|
||||||
throw new IOException("Fail to get the data [" + httpResponse.statusCode() + "] " + httpResponse.body());
|
throw new IOException("Fail to get the data [" + httpResponse.statusCode() + "] " + httpResponse.body());
|
||||||
} catch (final JsonParseException ex) {
|
} catch (final JsonParseException ex) {
|
||||||
@@ -156,7 +156,7 @@ public class RESTApi {
|
|||||||
if (httpResponse.statusCode() < 200 || httpResponse.statusCode() >= 300) {
|
if (httpResponse.statusCode() < 200 || httpResponse.statusCode() >= 300) {
|
||||||
try {
|
try {
|
||||||
final RESTErrorResponseExeption out = this.mapper.readValue(httpResponse.body(), RESTErrorResponseExeption.class);
|
final RESTErrorResponseExeption out = this.mapper.readValue(httpResponse.body(), RESTErrorResponseExeption.class);
|
||||||
throw new RESTErrorResponseExeption(out.uuid, out.time, out.error, out.message, out.status, out.statusMessage);
|
throw out;
|
||||||
} catch (final MismatchedInputException ex) {
|
} catch (final MismatchedInputException ex) {
|
||||||
throw new IOException("Fail to get the data [" + httpResponse.statusCode() + "] " + httpResponse.body());
|
throw new IOException("Fail to get the data [" + httpResponse.statusCode() + "] " + httpResponse.body());
|
||||||
}
|
}
|
||||||
@@ -178,7 +178,7 @@ public class RESTApi {
|
|||||||
if (httpResponse.statusCode() < 200 || httpResponse.statusCode() >= 300) {
|
if (httpResponse.statusCode() < 200 || httpResponse.statusCode() >= 300) {
|
||||||
try {
|
try {
|
||||||
final RESTErrorResponseExeption out = this.mapper.readValue(httpResponse.body(), RESTErrorResponseExeption.class);
|
final RESTErrorResponseExeption out = this.mapper.readValue(httpResponse.body(), RESTErrorResponseExeption.class);
|
||||||
throw new RESTErrorResponseExeption(out.uuid, out.time, out.error, out.message, out.status, out.statusMessage);
|
throw out;
|
||||||
} catch (final MismatchedInputException ex) {
|
} catch (final MismatchedInputException ex) {
|
||||||
throw new IOException("Fail to get the data [" + httpResponse.statusCode() + "] " + httpResponse.body());
|
throw new IOException("Fail to get the data [" + httpResponse.statusCode() + "] " + httpResponse.body());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,10 @@ package org.kar.archidata.tools;
|
|||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class UuidUtils {
|
public class UuidUtils {
|
||||||
@@ -25,4 +29,41 @@ public class UuidUtils {
|
|||||||
bb.putLong(uuid.getLeastSignificantBits());
|
bb.putLong(uuid.getLeastSignificantBits());
|
||||||
return bb.array();
|
return bb.array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class Generator {
|
||||||
|
private long base;
|
||||||
|
private final long offset;
|
||||||
|
private long previous;
|
||||||
|
|
||||||
|
public Generator() {
|
||||||
|
this.offset = System.currentTimeMillis();
|
||||||
|
// The local method never generate new UUID in the past, then we use the creation function time to prevent 2038 error
|
||||||
|
final Instant startingUUID = LocalDate.of(2024, 03, 19).atStartOfDay(ZoneOffset.UTC).toInstant();
|
||||||
|
this.base = startingUUID.until(Instant.now(), ChronoUnit.SECONDS);
|
||||||
|
final String serveurBaseUUID = System.getenv("UUID_SERVER_ID");
|
||||||
|
if (serveurBaseUUID != null) {
|
||||||
|
long serverId = Long.valueOf(serveurBaseUUID);
|
||||||
|
serverId %= 0xFFFF;
|
||||||
|
this.base += (serverId << (64 - 16));
|
||||||
|
} else {
|
||||||
|
this.base += (1L << (64 - 16));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized UUID next() {
|
||||||
|
long tmp = System.currentTimeMillis();
|
||||||
|
if (this.previous >= tmp) {
|
||||||
|
tmp = this.previous + 1;
|
||||||
|
}
|
||||||
|
this.previous = tmp;
|
||||||
|
tmp -= this.offset;
|
||||||
|
return new UUID(Long.reverseBytes(tmp), this.base);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Generator generator = new Generator();
|
||||||
|
|
||||||
|
public static UUID nextUUID() {
|
||||||
|
return generator.next();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -150,12 +150,12 @@ export function RESTRequest({ restModel, restConfig, data, params, queries }: RE
|
|||||||
const contentType = response.headers.get('Content-Type');
|
const contentType = response.headers.get('Content-Type');
|
||||||
if (restModel.accept !== contentType) {
|
if (restModel.accept !== contentType) {
|
||||||
reject({
|
reject({
|
||||||
|
name: `REST check wrong type: ${restModel.accept} != ${contentType}`,
|
||||||
|
message: "rest-tools.ts Wrong type in the message return type",
|
||||||
time: Date().toString(),
|
time: Date().toString(),
|
||||||
status: 901,
|
status: 901,
|
||||||
error: `REST check wrong type: ${restModel.accept} != ${contentType}`,
|
|
||||||
statusMessage: "Fetch error",
|
statusMessage: "Fetch error",
|
||||||
message: "rest-tools.ts Wrong type in the message return type"
|
});
|
||||||
} as RestErrorResponse);
|
|
||||||
} else if (contentType === HTTPMimeType.JSON) {
|
} else if (contentType === HTTPMimeType.JSON) {
|
||||||
response
|
response
|
||||||
.json()
|
.json()
|
||||||
@@ -165,32 +165,32 @@ export function RESTRequest({ restModel, restConfig, data, params, queries }: RE
|
|||||||
})
|
})
|
||||||
.catch((reason: any) => {
|
.catch((reason: any) => {
|
||||||
reject({
|
reject({
|
||||||
|
name: `REST parse json fail: ${reason}`,
|
||||||
|
message: "rest-tools.ts Wrong message model to parse",
|
||||||
time: Date().toString(),
|
time: Date().toString(),
|
||||||
status: 902,
|
status: 902,
|
||||||
error: `REST parse json fail: ${reason}`,
|
|
||||||
statusMessage: "Fetch parse error",
|
statusMessage: "Fetch parse error",
|
||||||
message: "rest-tools.ts Wrong message model to parse"
|
});
|
||||||
} as RestErrorResponse);
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
resolve({ status: response.status, data: response.body });
|
resolve({ status: response.status, data: response.body });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
reject({
|
reject({
|
||||||
|
name: `${response.body}`,
|
||||||
|
message: "rest-tools.ts Wrong return code",
|
||||||
time: Date().toString(),
|
time: Date().toString(),
|
||||||
status: response.status,
|
status: response.status,
|
||||||
error: `${response.body}`,
|
|
||||||
statusMessage: "Fetch code error",
|
statusMessage: "Fetch code error",
|
||||||
message: "rest-tools.ts Wrong return code"
|
});
|
||||||
} as RestErrorResponse);
|
|
||||||
}
|
}
|
||||||
}).catch((error: any) => {
|
}).catch((error: any) => {
|
||||||
reject({
|
reject({
|
||||||
|
name: error,
|
||||||
|
message: "http-wrapper.ts detect an error in the fetch request",
|
||||||
time: Date(),
|
time: Date(),
|
||||||
status: 999,
|
status: 999,
|
||||||
error: error,
|
statusMessage: "Fetch catch error"
|
||||||
statusMessage: "Fetch catch error",
|
|
||||||
message: "http-wrapper.ts detect an error in the fetch request"
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -203,12 +203,12 @@ export function RESTRequestJson<TYPE>(request: RESTRequestType, checker: (data:
|
|||||||
resolve(value.data);
|
resolve(value.data);
|
||||||
} else {
|
} else {
|
||||||
reject({
|
reject({
|
||||||
|
name: "REST Fail to verify the data",
|
||||||
|
message: "api.ts Check type as fail",
|
||||||
time: Date().toString(),
|
time: Date().toString(),
|
||||||
status: 950,
|
status: 950,
|
||||||
error: "REST Fail to verify the data",
|
|
||||||
statusMessage: "API cast ERROR",
|
statusMessage: "API cast ERROR",
|
||||||
message: "api.ts Check type as fail"
|
});
|
||||||
} as RestErrorResponse);
|
|
||||||
}
|
}
|
||||||
}).catch((reason: RestErrorResponse) => {
|
}).catch((reason: RestErrorResponse) => {
|
||||||
reject(reason);
|
reject(reason);
|
||||||
@@ -222,12 +222,12 @@ export function RESTRequestJsonArray<TYPE>(request: RESTRequestType, checker: (d
|
|||||||
resolve(value.data);
|
resolve(value.data);
|
||||||
} else {
|
} else {
|
||||||
reject({
|
reject({
|
||||||
|
name: "REST Fail to verify the data",
|
||||||
|
message: "api.ts Check type as fail",
|
||||||
time: Date().toString(),
|
time: Date().toString(),
|
||||||
status: 950,
|
status: 950,
|
||||||
error: "REST Fail to verify the data",
|
|
||||||
statusMessage: "API cast ERROR",
|
statusMessage: "API cast ERROR",
|
||||||
message: "api.ts Check type as fail"
|
});
|
||||||
} as RestErrorResponse);
|
|
||||||
}
|
}
|
||||||
}).catch((reason: RestErrorResponse) => {
|
}).catch((reason: RestErrorResponse) => {
|
||||||
reject(reason);
|
reject(reason);
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
0.7.0
|
0.7.2
|
||||||
|
|||||||
Reference in New Issue
Block a user