mirror of
https://git.victorphan.net/basketballcantho/Teedy_custom.git
synced 2026-08-05 22:03:11 +07:00
#159: display and validate route steps
This commit is contained in:
@@ -10,7 +10,7 @@ import com.sismics.docs.core.util.jpa.PaginatedList;
|
||||
import com.sismics.docs.core.util.jpa.PaginatedLists;
|
||||
import com.sismics.docs.core.util.jpa.SortCriteria;
|
||||
import com.sismics.rest.exception.ForbiddenClientException;
|
||||
import com.sismics.rest.util.JsonUtil;
|
||||
import com.sismics.util.JsonUtil;
|
||||
|
||||
import javax.json.Json;
|
||||
import javax.json.JsonArrayBuilder;
|
||||
|
||||
@@ -25,8 +25,8 @@ import com.sismics.rest.exception.ClientException;
|
||||
import com.sismics.rest.exception.ForbiddenClientException;
|
||||
import com.sismics.rest.exception.ServerException;
|
||||
import com.sismics.rest.util.AclUtil;
|
||||
import com.sismics.rest.util.JsonUtil;
|
||||
import com.sismics.rest.util.ValidationUtil;
|
||||
import com.sismics.util.JsonUtil;
|
||||
import com.sismics.util.context.ThreadLocalContext;
|
||||
import com.sismics.util.mime.MimeType;
|
||||
import org.joda.time.DateTime;
|
||||
@@ -216,10 +216,9 @@ public class DocumentResource extends BaseResource {
|
||||
// Add current route step
|
||||
RouteStepDto routeStepDto = new RouteStepDao().getCurrentStep(documentId);
|
||||
if (routeStepDto != null && !principal.isAnonymous()) {
|
||||
document.add("route_step", Json.createObjectBuilder()
|
||||
.add("name", routeStepDto.getName())
|
||||
.add("type", routeStepDto.getType().name())
|
||||
.add("transitionable", getTargetIdList(null).contains(routeStepDto.getTargetId())));
|
||||
JsonObjectBuilder step = routeStepDto.toJson();
|
||||
step.add("transitionable", getTargetIdList(null).contains(routeStepDto.getTargetId()));
|
||||
document.add("route_step", step);
|
||||
}
|
||||
|
||||
return Response.ok().entity(document.build()).build();
|
||||
|
||||
@@ -22,9 +22,9 @@ import com.sismics.docs.core.util.PdfUtil;
|
||||
import com.sismics.rest.exception.ClientException;
|
||||
import com.sismics.rest.exception.ForbiddenClientException;
|
||||
import com.sismics.rest.exception.ServerException;
|
||||
import com.sismics.rest.util.JsonUtil;
|
||||
import com.sismics.rest.util.ValidationUtil;
|
||||
import com.sismics.util.HttpUtil;
|
||||
import com.sismics.util.JsonUtil;
|
||||
import com.sismics.util.context.ThreadLocalContext;
|
||||
import com.sismics.util.mime.MimeType;
|
||||
import com.sismics.util.mime.MimeTypeUtil;
|
||||
|
||||
@@ -14,8 +14,8 @@ import com.sismics.docs.core.util.jpa.SortCriteria;
|
||||
import com.sismics.docs.rest.constant.BaseFunction;
|
||||
import com.sismics.rest.exception.ClientException;
|
||||
import com.sismics.rest.exception.ForbiddenClientException;
|
||||
import com.sismics.rest.util.JsonUtil;
|
||||
import com.sismics.rest.util.ValidationUtil;
|
||||
import com.sismics.util.JsonUtil;
|
||||
|
||||
import javax.json.Json;
|
||||
import javax.json.JsonArrayBuilder;
|
||||
|
||||
@@ -18,7 +18,6 @@ import com.sismics.docs.core.util.SecurityUtil;
|
||||
import com.sismics.docs.core.util.jpa.SortCriteria;
|
||||
import com.sismics.rest.exception.ClientException;
|
||||
import com.sismics.rest.exception.ForbiddenClientException;
|
||||
import com.sismics.rest.util.JsonUtil;
|
||||
import com.sismics.rest.util.ValidationUtil;
|
||||
|
||||
import javax.json.*;
|
||||
@@ -44,6 +43,7 @@ public class RouteResource extends BaseResource {
|
||||
* @apiParam {String} documentId Document ID
|
||||
* @apiSuccess {String} status Status OK
|
||||
* @apiError (client) InvalidRouteModel Invalid route model
|
||||
* @apiError (client) RunningRoute A running route already exists on this document
|
||||
* @apiError (client) ForbiddenError Access denied
|
||||
* @apiError (client) NotFound Route model or document not found
|
||||
* @apiPermission user
|
||||
@@ -72,6 +72,12 @@ public class RouteResource extends BaseResource {
|
||||
throw new NotFoundException();
|
||||
}
|
||||
|
||||
// Avoid creating 2 running routes on the same document
|
||||
RouteStepDao routeStepDao = new RouteStepDao();
|
||||
if (routeStepDao.getCurrentStep(documentId) != null) {
|
||||
throw new ClientException("RunningRoute", "A running route already exists on this document");
|
||||
}
|
||||
|
||||
// Create the route
|
||||
Route route = new Route()
|
||||
.setDocumentId(documentId)
|
||||
@@ -80,7 +86,6 @@ public class RouteResource extends BaseResource {
|
||||
routeDao.create(route, principal.getId());
|
||||
|
||||
// Create the steps
|
||||
RouteStepDao routeStepDao = new RouteStepDao();
|
||||
try (JsonReader reader = Json.createReader(new StringReader(routeModel.getSteps()))) {
|
||||
JsonArray stepsJson = reader.readArray();
|
||||
for (int order = 0; order < stepsJson.size(); order++) {
|
||||
@@ -108,9 +113,8 @@ public class RouteResource extends BaseResource {
|
||||
RouteStepDto routeStep = routeStepDao.getCurrentStep(documentId);
|
||||
RoutingUtil.updateAcl(documentId, routeStep, null, principal.getId());
|
||||
|
||||
// Always return OK
|
||||
JsonObjectBuilder response = Json.createObjectBuilder()
|
||||
.add("status", "ok");
|
||||
.add("route_step", routeStep.toJson());
|
||||
return Response.ok().entity(response.build()).build();
|
||||
}
|
||||
|
||||
@@ -173,10 +177,13 @@ public class RouteResource extends BaseResource {
|
||||
RoutingUtil.updateAcl(documentId, newRouteStep, routeStep, principal.getId());
|
||||
// TODO Send an email to the new route step
|
||||
|
||||
// Always return OK
|
||||
// TODO Return if the document is still readable and return the new current step if any
|
||||
JsonObjectBuilder response = Json.createObjectBuilder()
|
||||
.add("status", "ok");
|
||||
.add("readable", aclDao.checkPermission(documentId, PermType.READ, getTargetIdList(null)));
|
||||
if (newRouteStep != null) {
|
||||
JsonObjectBuilder step = newRouteStep.toJson();
|
||||
step.add("transitionable", getTargetIdList(null).contains(newRouteStep.getTargetId()));
|
||||
response.add("route_step", step);
|
||||
}
|
||||
return Response.ok().entity(response.build()).build();
|
||||
}
|
||||
|
||||
@@ -232,17 +239,7 @@ public class RouteResource extends BaseResource {
|
||||
JsonArrayBuilder steps = Json.createArrayBuilder();
|
||||
|
||||
for (RouteStepDto routeStepDto : routeStepDtoList) {
|
||||
steps.add(Json.createObjectBuilder()
|
||||
.add("name", routeStepDto.getName())
|
||||
.add("type", routeStepDto.getType().name())
|
||||
.add("comment", JsonUtil.nullable(routeStepDto.getComment()))
|
||||
.add("end_date", JsonUtil.nullable(routeStepDto.getEndDateTimestamp()))
|
||||
.add("validator_username", JsonUtil.nullable(routeStepDto.getValidatorUserName()))
|
||||
.add("target", Json.createObjectBuilder()
|
||||
.add("id", routeStepDto.getTargetId())
|
||||
.add("name", JsonUtil.nullable(routeStepDto.getTargetName()))
|
||||
.add("type", routeStepDto.getTargetType()))
|
||||
.add("transition", JsonUtil.nullable(routeStepDto.getTransition())));
|
||||
steps.add(routeStepDto.toJson());
|
||||
}
|
||||
|
||||
routes.add(Json.createObjectBuilder()
|
||||
@@ -253,7 +250,8 @@ public class RouteResource extends BaseResource {
|
||||
|
||||
JsonObjectBuilder json = Json.createObjectBuilder()
|
||||
.add("routes", routes);
|
||||
|
||||
return Response.ok().entity(json.build()).build();
|
||||
}
|
||||
|
||||
// TODO Workflow cancellation
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ import com.sismics.docs.core.model.jpa.Acl;
|
||||
import com.sismics.docs.core.model.jpa.Share;
|
||||
import com.sismics.rest.exception.ClientException;
|
||||
import com.sismics.rest.exception.ForbiddenClientException;
|
||||
import com.sismics.rest.util.JsonUtil;
|
||||
import com.sismics.rest.util.ValidationUtil;
|
||||
import com.sismics.util.JsonUtil;
|
||||
|
||||
import javax.json.Json;
|
||||
import javax.json.JsonObjectBuilder;
|
||||
|
||||
@@ -10,9 +10,9 @@ import com.sismics.docs.rest.constant.BaseFunction;
|
||||
import com.sismics.rest.exception.ClientException;
|
||||
import com.sismics.rest.exception.ForbiddenClientException;
|
||||
import com.sismics.rest.exception.ServerException;
|
||||
import com.sismics.rest.util.JsonUtil;
|
||||
import com.sismics.rest.util.ValidationUtil;
|
||||
import com.sismics.util.HttpUtil;
|
||||
import com.sismics.util.JsonUtil;
|
||||
import com.sismics.util.css.Selector;
|
||||
import org.glassfish.jersey.media.multipart.FormDataBodyPart;
|
||||
import org.glassfish.jersey.media.multipart.FormDataParam;
|
||||
|
||||
@@ -21,9 +21,9 @@ import com.sismics.docs.rest.constant.BaseFunction;
|
||||
import com.sismics.rest.exception.ClientException;
|
||||
import com.sismics.rest.exception.ForbiddenClientException;
|
||||
import com.sismics.rest.exception.ServerException;
|
||||
import com.sismics.rest.util.JsonUtil;
|
||||
import com.sismics.rest.util.ValidationUtil;
|
||||
import com.sismics.security.UserPrincipal;
|
||||
import com.sismics.util.JsonUtil;
|
||||
import com.sismics.util.context.ThreadLocalContext;
|
||||
import com.sismics.util.filter.TokenBasedSecurityFilter;
|
||||
import com.sismics.util.totp.GoogleAuthenticator;
|
||||
|
||||
Reference in New Issue
Block a user