[DEV] update new archidata (not tested)

This commit is contained in:
Edouard DUPIN 2024-01-17 20:19:58 +01:00
parent 4a8dfe3fb0
commit 3ea26e3f78
6 changed files with 47 additions and 42 deletions

View File

@ -20,7 +20,7 @@
<dependency> <dependency>
<groupId>kangaroo-and-rabbit</groupId> <groupId>kangaroo-and-rabbit</groupId>
<artifactId>archidata</artifactId> <artifactId>archidata</artifactId>
<version>0.5.0</version> <version>0.6.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>

View File

@ -9,6 +9,7 @@ import org.kar.archidata.dataAccess.DataAccess;
import org.kar.archidata.dataAccess.QueryAnd; import org.kar.archidata.dataAccess.QueryAnd;
import org.kar.archidata.dataAccess.QueryCondition; import org.kar.archidata.dataAccess.QueryCondition;
import org.kar.archidata.dataAccess.addOn.AddOnManyToMany; import org.kar.archidata.dataAccess.addOn.AddOnManyToMany;
import org.kar.archidata.dataAccess.options.Condition;
import org.kar.archidata.exception.InputException; import org.kar.archidata.exception.InputException;
import org.kar.archidata.filter.GenericContext; import org.kar.archidata.filter.GenericContext;
import org.kar.archidata.tools.JWTWrapper; import org.kar.archidata.tools.JWTWrapper;
@ -46,7 +47,7 @@ public class ApplicationResource {
final List<Long> out = new ArrayList<>(); final List<Long> out = new ArrayList<>();
List<UserLinkApplication> links = null; List<UserLinkApplication> links = null;
try { try {
links = DataAccess.getsWhere(UserLinkApplication.class, new QueryCondition("userId", "=", userId)); links = DataAccess.getsWhere(UserLinkApplication.class, new Condition(new QueryCondition("userId", "=", userId)));
} catch (final Exception e) { } catch (final Exception e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
@ -64,7 +65,7 @@ public class ApplicationResource {
final List<Long> out = new ArrayList<>(); final List<Long> out = new ArrayList<>();
List<UserLinkApplication> links = null; List<UserLinkApplication> links = null;
try { try {
links = DataAccess.getsWhere(UserLinkApplication.class, new QueryCondition("object2id", "=", applicationId)); links = DataAccess.getsWhere(UserLinkApplication.class, new Condition(new QueryCondition("object2id", "=", applicationId)));
} catch (final Exception e) { } catch (final Exception e) {
e.printStackTrace(); e.printStackTrace();
final String result = "SERVER Internal error"; final String result = "SERVER Internal error";
@ -219,7 +220,7 @@ public class ApplicationResource {
@RolesAllowed(value = { "ADMIN" }) @RolesAllowed(value = { "ADMIN" })
public List<RightDescription> getRightsDescription(@PathParam("id") final Long applicationId) throws Exception { public List<RightDescription> getRightsDescription(@PathParam("id") final Long applicationId) throws Exception {
this.logger.debug("getApplications rights"); this.logger.debug("getApplications rights");
return DataAccess.getsWhere(RightDescription.class, new QueryCondition("applicationId", "=", applicationId)); return DataAccess.getsWhere(RightDescription.class, new Condition(new QueryCondition("applicationId", "=", applicationId)));
} }
@GET @GET
@ -245,7 +246,7 @@ public class ApplicationResource {
Application appl = null; Application appl = null;
try { try {
appl = DataAccess.getWhere(Application.class, new QueryCondition("name", "=", applicationName)); appl = DataAccess.getWhere(Application.class, new Condition(new QueryCondition("name", "=", applicationName)));
} catch (final Exception e) { } catch (final Exception e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
@ -262,7 +263,7 @@ public class ApplicationResource {
UserLinkApplication links = null; UserLinkApplication links = null;
try { try {
links = DataAccess.getWhere(UserLinkApplication.class, links = DataAccess.getWhere(UserLinkApplication.class,
new QueryAnd(new QueryCondition("userId", "=", gc.userByToken.id), new QueryCondition("deleted", "=", 0), new QueryCondition("object2id", "=", appl.id))); new Condition(new QueryAnd(new QueryCondition("userId", "=", gc.userByToken.id), new QueryCondition("deleted", "=", 0), new QueryCondition("object2id", "=", appl.id))));
} catch (final Exception e) { } catch (final Exception e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
@ -320,7 +321,7 @@ public class ApplicationResource {
Application appl = null; Application appl = null;
try { try {
appl = DataAccess.getWhere(Application.class, new QueryCondition("name", "=", applicationName)); appl = DataAccess.getWhere(Application.class, new Condition(new QueryCondition("name", "=", applicationName)));
} catch (final Exception e) { } catch (final Exception e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();

View File

@ -8,6 +8,7 @@ import java.util.List;
import org.kar.archidata.dataAccess.DataAccess; import org.kar.archidata.dataAccess.DataAccess;
import org.kar.archidata.dataAccess.QueryAnd; import org.kar.archidata.dataAccess.QueryAnd;
import org.kar.archidata.dataAccess.QueryCondition; import org.kar.archidata.dataAccess.QueryCondition;
import org.kar.archidata.dataAccess.options.Condition;
import org.kar.archidata.exception.InputException; import org.kar.archidata.exception.InputException;
import org.kar.karso.model.ApplicationToken; import org.kar.karso.model.ApplicationToken;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -29,32 +30,32 @@ import jakarta.ws.rs.core.SecurityContext;
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public class ApplicationTokenResource { public class ApplicationTokenResource {
final Logger logger = LoggerFactory.getLogger(ApplicationTokenResource.class); final Logger logger = LoggerFactory.getLogger(ApplicationTokenResource.class);
public ApplicationTokenResource() {} public ApplicationTokenResource() {}
//////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////
// //
// Generic /application_token/{applicationId} // Generic /application_token/{applicationId}
// //
//////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////
@GET @GET
@Path("{applicationId}") @Path("{applicationId}")
@RolesAllowed(value = { "ADMIN" }) @RolesAllowed(value = { "ADMIN" })
public List<ApplicationToken> gets(@Context final SecurityContext sc, @PathParam("applicationId") final Long applicationId) throws Exception { public List<ApplicationToken> gets(@Context final SecurityContext sc, @PathParam("applicationId") final Long applicationId) throws Exception {
final List<ApplicationToken> values = DataAccess.getsWhere(ApplicationToken.class, new QueryCondition("parentId", "=", applicationId)); final List<ApplicationToken> values = DataAccess.getsWhere(ApplicationToken.class, new Condition(new QueryCondition("parentId", "=", applicationId)));
// clean all tokens this is a secret: // clean all tokens this is a secret:
for (final ApplicationToken elem : values) { for (final ApplicationToken elem : values) {
elem.token = null; elem.token = null;
} }
return values; return values;
} }
@DELETE @DELETE
@Path("{applicationId}/{tokenId}") @Path("{applicationId}/{tokenId}")
@RolesAllowed(value = { "ADMIN" }) @RolesAllowed(value = { "ADMIN" })
public Response delete(@Context final SecurityContext sc, @PathParam("applicationId") final Long applicationId, @PathParam("tokenId") final Integer tokenId) throws Exception { public Response delete(@Context final SecurityContext sc, @PathParam("applicationId") final Long applicationId, @PathParam("tokenId") final Integer tokenId) throws Exception {
final int nbRemoved = DataAccess.deleteWhere(ApplicationToken.class, new QueryAnd(new QueryCondition("parentId", "=", applicationId), new QueryCondition("id", "=", tokenId)), null); final int nbRemoved = DataAccess.deleteWhere(ApplicationToken.class, new Condition(new QueryAnd(new QueryCondition("parentId", "=", applicationId), new QueryCondition("id", "=", tokenId))));
if (nbRemoved == 0) { if (nbRemoved == 0) {
return Response.notModified("{}").build(); return Response.notModified("{}").build();
} }
@ -63,7 +64,7 @@ public class ApplicationTokenResource {
} }
return Response.ok("{}").build(); return Response.ok("{}").build();
} }
private String multipartCorrection(final String data) { private String multipartCorrection(final String data) {
if (data == null) { if (data == null) {
return null; return null;
@ -76,7 +77,7 @@ public class ApplicationTokenResource {
} }
return data; return data;
} }
static String randomToken() { static String randomToken() {
final int len = 48; final int len = 48;
final String valid_element = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvxyz0123456789#_@-~*!?"; final String valid_element = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvxyz0123456789#_@-~*!?";
@ -91,11 +92,11 @@ public class ApplicationTokenResource {
} }
return out.toString(); return out.toString();
} }
public record CreateRequest( public record CreateRequest(
String name, String name,
Integer validity) {}; Integer validity) {};
@POST @POST
@Path("/{applicationId}/create") @Path("/{applicationId}/create")
@RolesAllowed("ADMIN") @RolesAllowed("ADMIN")
@ -124,7 +125,7 @@ public class ApplicationTokenResource {
this.logger.warn("Check Timestamp now = {}", now); this.logger.warn("Check Timestamp now = {}", now);
token.endValidityTime = Timestamp.from(now.plusDays(validity).toInstant()); token.endValidityTime = Timestamp.from(now.plusDays(validity).toInstant());
this.logger.warn("token.endValidityTime = {}", token.endValidityTime); this.logger.warn("token.endValidityTime = {}", token.endValidityTime);
// insert in the BDD // insert in the BDD
token = DataAccess.insert(token); token = DataAccess.insert(token);
// here we return the token to permit to the user to see it to set it in the application. // here we return the token to permit to the user to see it to set it in the application.

View File

@ -7,6 +7,7 @@ import java.util.Map;
import org.kar.archidata.dataAccess.DataAccess; import org.kar.archidata.dataAccess.DataAccess;
import org.kar.archidata.dataAccess.QueryAnd; import org.kar.archidata.dataAccess.QueryAnd;
import org.kar.archidata.dataAccess.QueryCondition; import org.kar.archidata.dataAccess.QueryCondition;
import org.kar.archidata.dataAccess.options.Condition;
import org.kar.karso.model.Right; import org.kar.karso.model.Right;
import org.kar.karso.model.RightDescription; import org.kar.karso.model.RightDescription;
import org.kar.karso.util.Transform; import org.kar.karso.util.Transform;
@ -29,15 +30,15 @@ import jakarta.ws.rs.core.Response;
@Produces({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON })
public class RightResource { public class RightResource {
final static Logger logger = LoggerFactory.getLogger(RightResource.class); final static Logger logger = LoggerFactory.getLogger(RightResource.class);
public static List<RightDescription> getApplicationRightDecription(final long applicationId) throws Exception { public static List<RightDescription> getApplicationRightDecription(final long applicationId) throws Exception {
return DataAccess.getsWhere(RightDescription.class, new QueryCondition("applicationId", "=", applicationId)); return DataAccess.getsWhere(RightDescription.class, new Condition(new QueryCondition("applicationId", "=", applicationId)));
}
public static List<Right> getRawUserRight(final long userId, final long applicationId) throws Exception {
return DataAccess.getsWhere(Right.class, new QueryAnd(new QueryCondition("applicationId", "=", applicationId), new QueryCondition("userId", "=", userId)));
} }
public static List<Right> getRawUserRight(final long userId, final long applicationId) throws Exception {
return DataAccess.getsWhere(Right.class, new Condition(new QueryAnd(new QueryCondition("applicationId", "=", applicationId), new QueryCondition("userId", "=", userId))));
}
public static Map<String, Object> getUserRight(final long userId, final long applicationId) throws Exception { public static Map<String, Object> getUserRight(final long userId, final long applicationId) throws Exception {
final Map<String, Object> out = new HashMap<>(); final Map<String, Object> out = new HashMap<>();
final List<RightDescription> rightsDescriptions = getApplicationRightDecription(applicationId); final List<RightDescription> rightsDescriptions = getApplicationRightDecription(applicationId);
@ -54,7 +55,7 @@ public class RightResource {
logger.debug(" - id={} key={} type={} default={}", elem.id, elem.key, elem.type, elem.defaultValue); logger.debug(" - id={} key={} type={} default={}", elem.id, elem.key, elem.type, elem.defaultValue);
} }
for (final RightDescription description : rightsDescriptions) { for (final RightDescription description : rightsDescriptions) {
if (description == null) { if (description == null) {
// TODO: this is a really strange case to manage later... // TODO: this is a really strange case to manage later...
continue; continue;
@ -74,7 +75,7 @@ public class RightResource {
} }
return out; return out;
} }
public static void updateUserRight(final long userId, final long applicationId, final Map<String, Object> delta) throws Exception { public static void updateUserRight(final long userId, final long applicationId, final Map<String, Object> delta) throws Exception {
final List<RightDescription> rightsDescriptions = getApplicationRightDecription(applicationId); final List<RightDescription> rightsDescriptions = getApplicationRightDecription(applicationId);
logger.debug("Get some descriptions: {} applicationId={}", rightsDescriptions.size(), applicationId); logger.debug("Get some descriptions: {} applicationId={}", rightsDescriptions.size(), applicationId);
@ -115,27 +116,27 @@ public class RightResource {
} }
} }
} }
@GET @GET
@RolesAllowed("ADMIN") @RolesAllowed("ADMIN")
public List<Right> get() throws Exception { public List<Right> get() throws Exception {
return DataAccess.gets(Right.class); return DataAccess.gets(Right.class);
} }
@POST @POST
@RolesAllowed("ADMIN") @RolesAllowed("ADMIN")
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
public Right post(final String jsonRequest) throws Exception { public Right post(final String jsonRequest) throws Exception {
return DataAccess.insertWithJson(Right.class, jsonRequest); return DataAccess.insertWithJson(Right.class, jsonRequest);
} }
@GET @GET
@Path("{id}") @Path("{id}")
@RolesAllowed("ADMIN") @RolesAllowed("ADMIN")
public static Right getWithId(@PathParam("id") final Long id) throws Exception { public static Right getWithId(@PathParam("id") final Long id) throws Exception {
return DataAccess.get(Right.class, id); return DataAccess.get(Right.class, id);
} }
@PUT @PUT
@Path("{id}") @Path("{id}")
@RolesAllowed("ADMIN") @RolesAllowed("ADMIN")
@ -144,7 +145,7 @@ public class RightResource {
DataAccess.updateWithJson(Right.class, id, jsonRequest); DataAccess.updateWithJson(Right.class, id, jsonRequest);
return DataAccess.get(Right.class, id); return DataAccess.get(Right.class, id);
} }
@DELETE @DELETE
@Path("{id}") @Path("{id}")
@RolesAllowed("ADMIN") @RolesAllowed("ADMIN")
@ -152,5 +153,5 @@ public class RightResource {
DataAccess.delete(Right.class, id); DataAccess.delete(Right.class, id);
return Response.ok().build(); return Response.ok().build();
} }
} }

View File

@ -4,6 +4,7 @@ import java.util.List;
import org.kar.archidata.dataAccess.DataAccess; import org.kar.archidata.dataAccess.DataAccess;
import org.kar.archidata.dataAccess.QueryCondition; import org.kar.archidata.dataAccess.QueryCondition;
import org.kar.archidata.dataAccess.options.Condition;
import org.kar.archidata.exception.NotFoundException; import org.kar.archidata.exception.NotFoundException;
import org.kar.karso.model.Settings; import org.kar.karso.model.Settings;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -48,7 +49,7 @@ public class SystemConfigResource {
@Path("is_sign_up_availlable") @Path("is_sign_up_availlable")
@PermitAll @PermitAll
public GetSignUpAvaillable isSignUpAvaillable() throws Exception { public GetSignUpAvaillable isSignUpAvaillable() throws Exception {
final Settings set = DataAccess.getWhere(Settings.class, new QueryCondition("key", "=", "SIGN_UP_ENABLE")); final Settings set = DataAccess.getWhere(Settings.class, new Condition(new QueryCondition("key", "=", "SIGN_UP_ENABLE")));
if (set == null) { if (set == null) {
throw new NotFoundException("Value does not exist"); throw new NotFoundException("Value does not exist");
} }
@ -62,7 +63,7 @@ public class SystemConfigResource {
@Path("key/{key}") @Path("key/{key}")
@RolesAllowed(value = { "USER", "ADMIN" }) @RolesAllowed(value = { "USER", "ADMIN" })
public Response getKey(@Context final SecurityContext sc, @PathParam("key") final String key) throws Exception { public Response getKey(@Context final SecurityContext sc, @PathParam("key") final String key) throws Exception {
final Settings set = DataAccess.getWhere(Settings.class, new QueryCondition("key", "=", key)); final Settings set = DataAccess.getWhere(Settings.class, new Condition(new QueryCondition("key", "=", key)));
if (set == null) { if (set == null) {
throw new NotFoundException("Value does not exist"); throw new NotFoundException("Value does not exist");
} }
@ -84,7 +85,7 @@ public class SystemConfigResource {
public Response setKey(@Context final SecurityContext sc, @PathParam("key") final String key, final String jsonRequest) throws Exception { public Response setKey(@Context final SecurityContext sc, @PathParam("key") final String key, final String jsonRequest) throws Exception {
Settings res = null; Settings res = null;
try { try {
res = DataAccess.getWhere(Settings.class, new QueryCondition("key", "=", key)); res = DataAccess.getWhere(Settings.class, new Condition(new QueryCondition("key", "=", key)));
} catch (final Exception e) { } catch (final Exception e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();

View File

@ -12,6 +12,7 @@ import java.util.Map;
import org.kar.archidata.dataAccess.DataAccess; import org.kar.archidata.dataAccess.DataAccess;
import org.kar.archidata.dataAccess.QueryCondition; import org.kar.archidata.dataAccess.QueryCondition;
import org.kar.archidata.dataAccess.addOn.AddOnManyToMany; import org.kar.archidata.dataAccess.addOn.AddOnManyToMany;
import org.kar.archidata.dataAccess.options.Condition;
import org.kar.archidata.exception.FailException; import org.kar.archidata.exception.FailException;
import org.kar.archidata.exception.InputException; import org.kar.archidata.exception.InputException;
import org.kar.archidata.exception.SystemException; import org.kar.archidata.exception.SystemException;
@ -60,8 +61,8 @@ public class UserResource {
this.id = id; this.id = id;
this.login = login; this.login = login;
} }
} }
public UserResource() {} public UserResource() {}
@GET @GET
@ -158,12 +159,12 @@ public class UserResource {
// TODO: verify if the data are a hash ... // TODO: verify if the data are a hash ...
// Check login does not exist // Check login does not exist
List<UserAuth> out = DataAccess.getsWhere(UserAuth.class, new QueryCondition("login", "=", user.login)); List<UserAuth> out = DataAccess.getsWhere(UserAuth.class, new Condition(new QueryCondition("login", "=", user.login)));
if (out.size() >= 1) { if (out.size() >= 1) {
throw new FailException(Response.Status.BAD_REQUEST, "Login already used !!!"); throw new FailException(Response.Status.BAD_REQUEST, "Login already used !!!");
} }
// Check email does not exist // Check email does not exist
out = DataAccess.getsWhere(UserAuth.class, new QueryCondition("email", "=", user.email)); out = DataAccess.getsWhere(UserAuth.class, new Condition(new QueryCondition("email", "=", user.email)));
if (out.size() >= 1) { if (out.size() >= 1) {
throw new FailException(Response.Status.BAD_REQUEST, "e-mail already used !!!"); throw new FailException(Response.Status.BAD_REQUEST, "e-mail already used !!!");
} }
@ -239,7 +240,7 @@ public class UserResource {
@PermitAll @PermitAll
public Response checkLogin(@QueryParam("login") final String login) throws Exception { public Response checkLogin(@QueryParam("login") final String login) throws Exception {
this.logger.debug("checkLogin: '{}'", login); this.logger.debug("checkLogin: '{}'", login);
final List<UserAuth> out = DataAccess.getsWhere(UserAuth.class, new QueryCondition("login", "=", login)); final List<UserAuth> out = DataAccess.getsWhere(UserAuth.class, new Condition(new QueryCondition("login", "=", login)));
if (out.size() >= 1) { if (out.size() >= 1) {
return Response.ok().build(); return Response.ok().build();
} }
@ -252,7 +253,7 @@ public class UserResource {
@PermitAll @PermitAll
public Response checkEmail(@QueryParam("email") final String email) throws Exception { public Response checkEmail(@QueryParam("email") final String email) throws Exception {
this.logger.debug("checkEmail: {}", email); this.logger.debug("checkEmail: {}", email);
final List<UserAuth> out = DataAccess.getsWhere(UserAuth.class, new QueryCondition("email", "=", email)); final List<UserAuth> out = DataAccess.getsWhere(UserAuth.class, new Condition(new QueryCondition("email", "=", email)));
if (out.size() >= 1) { if (out.size() >= 1) {
return Response.ok().build(); return Response.ok().build();
} }
@ -276,7 +277,7 @@ public class UserResource {
if (login.contains("@")) { if (login.contains("@")) {
query = "email"; query = "email";
} }
final UserAuth user = DataAccess.getWhere(UserAuth.class, new QueryCondition(query, "=", login)); final UserAuth user = DataAccess.getWhere(UserAuth.class, new Condition(new QueryCondition(query, "=", login)));
if (user == null) { if (user == null) {
throw new FailException(Response.Status.PRECONDITION_FAILED, "FAIL Authentiocate-wrong email/login '" + login + "')"); throw new FailException(Response.Status.PRECONDITION_FAILED, "FAIL Authentiocate-wrong email/login '" + login + "')");