diff --git a/.vscode/launch.json b/.vscode/launch.json index 3a50d71..95e6faa 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -68,6 +68,8 @@ "CYGNUS_CLIENT_ASSERTION": "file:${workspaceFolder}/config/clients/matrix/matrix-matrix-delhi-cygnus-01-assertion.jwt", "CYGNUS_LOGIN_KEY_ID": "cygnus-login-2026-01", "CYGNUS_LOGIN_PUBLIC_KEY": "file:${workspaceFolder}/config/keys/login-public.pem", + "CYGNUS_PAYLOAD_PRIVATE_KEY": "file:${workspaceFolder}/config/keys/case-save-private.pem", + "CYGNUS_PAYLOAD_PUBLIC_KEY": "file:${workspaceFolder}/config/keys/case-save-public.pem", "CYGNUS_CLOUD_REQUEST_TIMEOUT": "PT10S", "CYGNUS_TOKEN_REFRESH_SKEW": "PT30S" }, diff --git a/cygnus-cloud-client/src/main/java/com/cygnus/client/CloudIdentityClient.java b/cygnus-cloud-client/src/main/java/com/cygnus/client/CloudIdentityClient.java index 00f0dbd..f21dd8b 100644 --- a/cygnus-cloud-client/src/main/java/com/cygnus/client/CloudIdentityClient.java +++ b/cygnus-cloud-client/src/main/java/com/cygnus/client/CloudIdentityClient.java @@ -62,4 +62,15 @@ public class CloudIdentityClient { .bodyToMono(CloudQueryResponse.class)) .timeout(properties.requestTimeout()); } + + public Mono fetchQuery(String queryKey) { + return tokenProvider.accessToken() + .flatMap(token -> webClient.get() + .uri(properties.baseUri().resolve("/api/v1/queries/key/" + queryKey)) + .header(HttpHeaders.AUTHORIZATION, "Bearer " + token) + .accept(MediaType.APPLICATION_JSON) + .retrieve() + .bodyToMono(CloudQueryResponse.class)) + .timeout(properties.requestTimeout()); + } } diff --git a/cygnus-cloud-service/src/main/java/com/cygnus/cloud/query/CloudQueryController.java b/cygnus-cloud-service/src/main/java/com/cygnus/cloud/query/CloudQueryController.java index d3ce136..2c51892 100644 --- a/cygnus-cloud-service/src/main/java/com/cygnus/cloud/query/CloudQueryController.java +++ b/cygnus-cloud-service/src/main/java/com/cygnus/cloud/query/CloudQueryController.java @@ -25,4 +25,10 @@ public class CloudQueryController { return repository.findEnabled(queryId) .switchIfEmpty(Mono.error(new QueryNotFoundException(queryId))); } + + @GetMapping("/key/{queryKey}") + public Mono queryByKey(@PathVariable String queryKey) { + return repository.findEnabled(queryKey) + .switchIfEmpty(Mono.error(new QueryNotFoundException(queryKey))); + } } diff --git a/cygnus-cloud-service/src/main/java/com/cygnus/cloud/query/QueryCatalogRepository.java b/cygnus-cloud-service/src/main/java/com/cygnus/cloud/query/QueryCatalogRepository.java index 7f06181..da6cbd7 100644 --- a/cygnus-cloud-service/src/main/java/com/cygnus/cloud/query/QueryCatalogRepository.java +++ b/cygnus-cloud-service/src/main/java/com/cygnus/cloud/query/QueryCatalogRepository.java @@ -10,8 +10,10 @@ public class QueryCatalogRepository { private static final String INITIALIZE = """ CREATE SCHEMA IF NOT EXISTS platform; + CREATE SEQUENCE IF NOT EXISTS platform.application_query_id_seq; CREATE TABLE IF NOT EXISTS platform.application_query ( - query_id integer PRIMARY KEY, + query_id integer PRIMARY KEY DEFAULT nextval('platform.application_query_id_seq'), + query_key varchar(100), query_text text NOT NULL, enabled boolean NOT NULL DEFAULT true, created_at timestamptz NOT NULL DEFAULT current_timestamp, @@ -20,7 +22,15 @@ public class QueryCatalogRepository { CHECK (query_id > 0), CONSTRAINT ck_platform_application_query_text CHECK (length(btrim(query_text)) > 0) - ) + ); + ALTER TABLE platform.application_query + ADD COLUMN IF NOT EXISTS query_key varchar(100); + ALTER TABLE platform.application_query ALTER COLUMN query_id + SET DEFAULT nextval('platform.application_query_id_seq'); + CREATE UNIQUE INDEX IF NOT EXISTS ux_platform_application_query_key + ON platform.application_query (query_key) WHERE query_key IS NOT NULL; + SELECT setval('platform.application_query_id_seq', + greatest(coalesce((SELECT max(query_id) FROM platform.application_query), 0) + 1, 1), false) """; private static final String FIND = """ SELECT query_id, query_text @@ -28,6 +38,12 @@ public class QueryCatalogRepository { WHERE query_id = $1 AND enabled = true """; + private static final String FIND_BY_KEY = """ + SELECT query_id, query_text + FROM platform.application_query + WHERE query_key = $1 + AND enabled = true + """; private final ReactiveDatabaseClient database; public QueryCatalogRepository(ReactiveDatabaseClient database) { @@ -45,4 +61,11 @@ public class QueryCatalogRepository { .map(row -> new CloudQuery( row.getInteger("query_id"), row.getString("query_text"))); } + + public Mono findEnabled(String queryKey) { + return database.preparedQuery(FIND_BY_KEY, Tuple.of(queryKey)) + .flatMapMany(rows -> reactor.core.publisher.Flux.fromIterable(rows)) + .next() + .map(row -> new CloudQuery(row.getInteger("query_id"), row.getString("query_text"))); + } } diff --git a/cygnus-cloud-service/src/main/java/com/cygnus/cloud/query/QueryNotFoundException.java b/cygnus-cloud-service/src/main/java/com/cygnus/cloud/query/QueryNotFoundException.java index e001549..0f83d63 100644 --- a/cygnus-cloud-service/src/main/java/com/cygnus/cloud/query/QueryNotFoundException.java +++ b/cygnus-cloud-service/src/main/java/com/cygnus/cloud/query/QueryNotFoundException.java @@ -9,4 +9,8 @@ public class QueryNotFoundException extends RuntimeException { public QueryNotFoundException(int queryId) { super("Query was not found: " + queryId); } + + public QueryNotFoundException(String queryKey) { + super("Query was not found: " + queryKey); + } } diff --git a/cygnus-cloud-service/src/main/resources/db/platform/001_query_catalog.sql b/cygnus-cloud-service/src/main/resources/db/platform/001_query_catalog.sql index 5b5888a..50fd358 100644 --- a/cygnus-cloud-service/src/main/resources/db/platform/001_query_catalog.sql +++ b/cygnus-cloud-service/src/main/resources/db/platform/001_query_catalog.sql @@ -1,7 +1,9 @@ CREATE SCHEMA IF NOT EXISTS platform; +CREATE SEQUENCE IF NOT EXISTS platform.application_query_id_seq; CREATE TABLE IF NOT EXISTS platform.application_query ( - query_id integer PRIMARY KEY, + query_id integer PRIMARY KEY DEFAULT nextval('platform.application_query_id_seq'), + query_key varchar(100), query_text text NOT NULL, enabled boolean NOT NULL DEFAULT true, created_at timestamptz NOT NULL DEFAULT current_timestamp, @@ -11,3 +13,11 @@ CREATE TABLE IF NOT EXISTS platform.application_query ( CONSTRAINT ck_platform_application_query_text CHECK (length(btrim(query_text)) > 0) ); +ALTER TABLE platform.application_query + ADD COLUMN IF NOT EXISTS query_key varchar(100); +CREATE UNIQUE INDEX IF NOT EXISTS ux_platform_application_query_key + ON platform.application_query (query_key) WHERE query_key IS NOT NULL; +ALTER TABLE platform.application_query ALTER COLUMN query_id + SET DEFAULT nextval('platform.application_query_id_seq'); +SELECT setval('platform.application_query_id_seq', + greatest(coalesce((SELECT max(query_id) FROM platform.application_query), 0) + 1, 1), false); diff --git a/cygnus-cloud-service/src/main/resources/db/platform/003_application_save_query.sql b/cygnus-cloud-service/src/main/resources/db/platform/003_application_save_query.sql new file mode 100644 index 0000000..aa7e94b --- /dev/null +++ b/cygnus-cloud-service/src/main/resources/db/platform/003_application_save_query.sql @@ -0,0 +1,11 @@ +-- Stable query key; query_id is generated by PostgreSQL. +BEGIN; + +INSERT INTO platform.application_query(query_key, query_text, enabled, created_at, updated_at, ismigrated) +VALUES ('APPLICATION_SAVE', + 'procedure!C0L!select * from public.save_application_details(?::jsonb,?::smallint,?::smallint,?::smallint)', + true, clock_timestamp(), clock_timestamp(), true) +ON CONFLICT (query_key) WHERE query_key IS NOT NULL DO UPDATE SET + query_text=excluded.query_text, enabled=true, updated_at=clock_timestamp(), ismigrated=true; + +COMMIT; diff --git a/cygnus-lib/src/main/java/lib/constants/ApplicationError.java b/cygnus-lib/src/main/java/lib/constants/ApplicationMessage.java similarity index 59% rename from cygnus-lib/src/main/java/lib/constants/ApplicationError.java rename to cygnus-lib/src/main/java/lib/constants/ApplicationMessage.java index 6c1cfac..45a25d6 100644 --- a/cygnus-lib/src/main/java/lib/constants/ApplicationError.java +++ b/cygnus-lib/src/main/java/lib/constants/ApplicationMessage.java @@ -1,9 +1,7 @@ package lib.constants; -import java.util.Arrays; - -/** Canonical user-facing errors shared by Cygnus applications. */ -public enum ApplicationError { +/** Canonical user-facing messages shared by Cygnus applications. */ +public enum ApplicationMessage { BAD_REQUEST(400, "HTTP-400", "Invalid request", "Cygnus could not process the submitted request.", "Review the supplied information and try again."), @@ -28,6 +26,23 @@ public enum ApplicationError { TOO_MANY_REQUESTS(429, "HTTP-429", "Too many requests", "Cygnus has received too many requests in a short period.", "Wait briefly before trying again."), + PAYLOAD_INVALID(400, "REQ-4001", "Invalid request details", + "The encrypted request could not be verified.", + "Refresh the page and submit the form again."), + APPLICATION_VALIDATION_FAILED(422, "APP-4221", "Application validation failed", + "One or more application fields contain invalid information.", + "Correct the highlighted fields and submit the application again."), + APPLICATION_ACCESS_DENIED(403, "APP-4031", "Application access denied", + "The selected portfolio or application is not available to your account.", + "Select an authorized portfolio or contact your administrator."), + APPLICATION_SAVE_CONFLICT(409, "APP-4091", "Application save conflict", + "This request was already processed or the application changed.", + "Refresh the application before submitting it again."), + APPLICATION_SAVED(200, "APP-2001", "Application saved", + "The application details were saved successfully.", ""), + APPLICATION_SAVE_FAILED(500, "APP-5001", "Application could not be saved", + "Cygnus could not save the application details.", + "Try again. If the issue continues, share the reference ID with support."), INTERNAL_SERVER_ERROR(500, "HTTP-500", "Something went wrong", "Cygnus could not complete your request.", "Try again. If the issue continues, share the reference ID with support."), @@ -47,7 +62,7 @@ public enum ApplicationError { private final String message; private final String description; - ApplicationError( + ApplicationMessage( int httpStatus, String code, String title, String message, String description) { this.httpStatus = httpStatus; this.code = code; @@ -56,11 +71,21 @@ public enum ApplicationError { this.description = description; } - public static ApplicationError fromHttpStatus(int status) { - return Arrays.stream(values()) - .filter(error -> error.httpStatus == status) - .findFirst() - .orElse(INTERNAL_SERVER_ERROR); + public static ApplicationMessage fromHttpStatus(int status) { + return switch (status) { + case 400 -> BAD_REQUEST; + case 401 -> SESSION_REQUIRED; + case 403 -> ACCESS_DENIED; + case 404 -> PAGE_NOT_FOUND; + case 405 -> METHOD_NOT_ALLOWED; + case 409 -> CONFLICT; + case 413 -> PAYLOAD_TOO_LARGE; + case 429 -> TOO_MANY_REQUESTS; + case 502 -> BAD_GATEWAY; + case 503 -> SERVICE_UNAVAILABLE; + case 504 -> GATEWAY_TIMEOUT; + default -> INTERNAL_SERVER_ERROR; + }; } public int getHttpStatus() { return httpStatus; } diff --git a/cygnus-lib/src/main/java/lib/exceptions/ApplicationException.java b/cygnus-lib/src/main/java/lib/exceptions/ApplicationException.java new file mode 100644 index 0000000..77de0ac --- /dev/null +++ b/cygnus-lib/src/main/java/lib/exceptions/ApplicationException.java @@ -0,0 +1,20 @@ +package lib.exceptions; + +import lib.constants.ApplicationMessage; + +/** Single typed application exception carrying a safe user-facing message. */ +public class ApplicationException extends RuntimeException { + private final ApplicationMessage applicationMessage; + + public ApplicationException(ApplicationMessage message, String technicalMessage) { + super(technicalMessage); + this.applicationMessage = message; + } + + public ApplicationException(ApplicationMessage message, String technicalMessage, Throwable cause) { + super(technicalMessage, cause); + this.applicationMessage = message; + } + + public ApplicationMessage getApplicationMessage() { return applicationMessage; } +} diff --git a/cygnus-lib/src/main/java/lib/models/ApiResponse.java b/cygnus-lib/src/main/java/lib/models/ApiResponse.java new file mode 100644 index 0000000..d866bd1 --- /dev/null +++ b/cygnus-lib/src/main/java/lib/models/ApiResponse.java @@ -0,0 +1,12 @@ +package lib.models; + +/** Consistent API response contract for every migrated workflow. */ +public record ApiResponse(boolean success, T data, MessageDetails message) { + public static ApiResponse success(T data, MessageDetails message) { + return new ApiResponse<>(true, data, message); + } + + public static ApiResponse failure(MessageDetails message) { + return new ApiResponse<>(false, null, message); + } +} diff --git a/cygnus-lib/src/main/java/lib/models/ApplicationDetails.java b/cygnus-lib/src/main/java/lib/models/ApplicationDetails.java new file mode 100644 index 0000000..ed2ec4a --- /dev/null +++ b/cygnus-lib/src/main/java/lib/models/ApplicationDetails.java @@ -0,0 +1,87 @@ +package lib.models; + +import java.io.Serial; +import java.io.Serializable; +import java.util.LinkedHashMap; +import java.util.Map; +import lombok.Getter; +import lombok.Setter; + +/** User-editable case initiation data. Identity and audit fields come from UserSession. */ +@Getter +@Setter +public class ApplicationDetails implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + private Integer applicationId; + private Short portfolioId; + private Short bankBranchId; + private String applicationNumber; + private String bankCode; + private String product; + private String loanAmount; + private String customerName; + private String fatherName; + private String applicationType; + private String category; + private String dateOfBirth; + private String contactPerson; + private String mobileNumber; + private String specialInstruction; + + private Boolean residenceVerification; + private Boolean residenceTelephoneVerification; + private Boolean officeVerification; + private Boolean officeTelephoneVerification; + private Boolean propertyVerification; + private Boolean referenceVerification; + private Boolean documentVerification; + private Boolean residenceCoApplicant; + private Boolean residenceCoProprietor; + private Boolean officeCoProprietor; + private Boolean sameResidenceAddress; + private Boolean sameOfficeAddress; + private Boolean samePropertyAddress; + + private String residenceAddress1; + private String residenceAddress2; + private String residenceAddress3; + private String residenceLandmark; + private Integer residenceColonyId; + private String residenceCity; + private String residencePincode; + private String residencePhone; + + private String companyName; + private String officeAddress1; + private String officeAddress2; + private String officeAddress3; + private String officeLandmark; + private Integer officeColonyId; + private String officeCity; + private String officePincode; + private String department; + private String designation; + private String officePhone; + private String extension; + + private String propertyAddress1; + private String propertyAddress2; + private String propertyAddress3; + private String propertyLandmark; + private Integer propertyColonyId; + private String propertyCity; + private String propertyPincode; + + private String referenceName1; + private String referenceAddress1; + private String referenceContactNumber1; + private String referenceName2; + private String referenceAddress2; + private String referenceContactNumber2; + + private Map dynamicFields = new LinkedHashMap<>(); + private Boolean autoCutOff; + private Integer formMode; +} diff --git a/cygnus-lib/src/main/java/lib/models/ApplicationSaveData.java b/cygnus-lib/src/main/java/lib/models/ApplicationSaveData.java new file mode 100644 index 0000000..163ada4 --- /dev/null +++ b/cygnus-lib/src/main/java/lib/models/ApplicationSaveData.java @@ -0,0 +1,4 @@ +package lib.models; + +/** Data returned after saving a loan-verification application. */ +public record ApplicationSaveData(String operation, Integer applicationId, String mvCode) {} diff --git a/cygnus-lib/src/main/java/lib/models/ApplicationSaveResult.java b/cygnus-lib/src/main/java/lib/models/ApplicationSaveResult.java new file mode 100644 index 0000000..10253a0 --- /dev/null +++ b/cygnus-lib/src/main/java/lib/models/ApplicationSaveResult.java @@ -0,0 +1,16 @@ +package lib.models; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +/** Result row returned by the application-save database operation. */ +@Getter +@Setter +@NoArgsConstructor +public class ApplicationSaveResult { + private String operation; + private Integer applicationId; + private String mvCode; + private String internalUuid; +} diff --git a/cygnus-lib/src/main/java/lib/models/CasePunching.java b/cygnus-lib/src/main/java/lib/models/CasePunching.java index d561e2b..9ce054e 100644 --- a/cygnus-lib/src/main/java/lib/models/CasePunching.java +++ b/cygnus-lib/src/main/java/lib/models/CasePunching.java @@ -9,7 +9,7 @@ import lombok.Setter; @Getter @Setter public class CasePunching { - private ErrorDetails errorDetails; + private MessageDetails messageDetails; private Map optionsl; private Map> options; private List visibleSections; diff --git a/cygnus-lib/src/main/java/lib/models/CaseSaveRequest.java b/cygnus-lib/src/main/java/lib/models/CaseSaveRequest.java new file mode 100644 index 0000000..49809e8 --- /dev/null +++ b/cygnus-lib/src/main/java/lib/models/CaseSaveRequest.java @@ -0,0 +1,11 @@ +package lib.models; + +/** Hybrid RSA-OAEP/AES-GCM envelope submitted by the initiation page. */ +public record CaseSaveRequest( + String keyId, + String encryptedKey, + String initializationVector, + String encryptedPayload, + String requestId, + String timestamp) { +} diff --git a/cygnus-lib/src/main/java/lib/models/ErrorDetails.java b/cygnus-lib/src/main/java/lib/models/MessageDetails.java similarity index 70% rename from cygnus-lib/src/main/java/lib/models/ErrorDetails.java rename to cygnus-lib/src/main/java/lib/models/MessageDetails.java index c57584d..0ccdfcd 100644 --- a/cygnus-lib/src/main/java/lib/models/ErrorDetails.java +++ b/cygnus-lib/src/main/java/lib/models/MessageDetails.java @@ -1,6 +1,6 @@ package lib.models; -import lib.constants.ApplicationError; +import lib.constants.ApplicationMessage; import java.io.Serial; import java.io.Serializable; import java.time.Instant; @@ -10,37 +10,37 @@ import lombok.Getter; /** Dependency-free error information shared across Cygnus modules. */ @Getter -public final class ErrorDetails implements Serializable { +public final class MessageDetails implements Serializable { @Serial private static final long serialVersionUID = 1L; private final int httpStatus; - private final String errorCode; + private final String code; private final String title; private final String message; private final String description; private final String referenceId; private final Instant timestamp; - public ErrorDetails(ApplicationError error) { - this(error.getHttpStatus(), error.getCode(), error.getTitle(), - error.getMessage(), error.getDescription(), + public MessageDetails(ApplicationMessage message) { + this(message.getHttpStatus(), message.getCode(), message.getTitle(), + message.getMessage(), message.getDescription(), UUID.randomUUID().toString(), Instant.now()); } - private ErrorDetails( + private MessageDetails( int httpStatus, - String errorCode, + String code, String title, String message, String description, String referenceId, Instant timestamp) { - if (httpStatus < 400 || httpStatus > 599) { - throw new IllegalArgumentException("HTTP error status must be between 400 and 599"); + if (httpStatus < 100 || httpStatus > 599) { + throw new IllegalArgumentException("HTTP status must be between 100 and 599"); } this.httpStatus = httpStatus; - this.errorCode = required(errorCode, "errorCode"); + this.code = required(code, "code"); this.title = required(title, "title"); this.message = required(message, "message"); this.description = description == null ? "" : description.trim(); diff --git a/cygnus-lib/src/test/java/lib/models/ErrorDetailsTest.java b/cygnus-lib/src/test/java/lib/models/ErrorDetailsTest.java deleted file mode 100644 index ef9ad9c..0000000 --- a/cygnus-lib/src/test/java/lib/models/ErrorDetailsTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package lib.models; - -import lib.constants.ApplicationError; -import static org.junit.jupiter.api.Assertions.assertEquals; - -import org.junit.jupiter.api.Test; - -class ErrorDetailsTest { - @Test - void createsAReusableErrorContract() { - ErrorDetails details = new ErrorDetails(ApplicationError.ACCESS_DENIED); - assertEquals(403, details.getHttpStatus()); - assertEquals("AUTH-403", details.getErrorCode()); - } - - @Test - void mapsHttpStatusToCanonicalError() { - assertEquals(ApplicationError.PAGE_NOT_FOUND, ApplicationError.fromHttpStatus(404)); - assertEquals(ApplicationError.INTERNAL_SERVER_ERROR, - ApplicationError.fromHttpStatus(599)); - } -} diff --git a/cygnus-lib/src/test/java/lib/models/MessageDetailsTest.java b/cygnus-lib/src/test/java/lib/models/MessageDetailsTest.java new file mode 100644 index 0000000..a15c9d0 --- /dev/null +++ b/cygnus-lib/src/test/java/lib/models/MessageDetailsTest.java @@ -0,0 +1,22 @@ +package lib.models; + +import lib.constants.ApplicationMessage; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class MessageDetailsTest { + @Test + void createsAReusableErrorContract() { + MessageDetails details = new MessageDetails(ApplicationMessage.ACCESS_DENIED); + assertEquals(403, details.getHttpStatus()); + assertEquals("AUTH-403", details.getCode()); + } + + @Test + void mapsHttpStatusToCanonicalError() { + assertEquals(ApplicationMessage.PAGE_NOT_FOUND, ApplicationMessage.fromHttpStatus(404)); + assertEquals(ApplicationMessage.INTERNAL_SERVER_ERROR, + ApplicationMessage.fromHttpStatus(599)); + } +} diff --git a/cygnus-lib/target/classes/lib/constants/ApplicationError.class b/cygnus-lib/target/classes/lib/constants/ApplicationError.class deleted file mode 100644 index 71c961f..0000000 Binary files a/cygnus-lib/target/classes/lib/constants/ApplicationError.class and /dev/null differ diff --git a/cygnus-lib/target/classes/lib/constants/ApplicationMessage.class b/cygnus-lib/target/classes/lib/constants/ApplicationMessage.class new file mode 100644 index 0000000..54e9e74 Binary files /dev/null and b/cygnus-lib/target/classes/lib/constants/ApplicationMessage.class differ diff --git a/cygnus-lib/target/classes/lib/exceptions/ApplicationException.class b/cygnus-lib/target/classes/lib/exceptions/ApplicationException.class new file mode 100644 index 0000000..a93c0c8 Binary files /dev/null and b/cygnus-lib/target/classes/lib/exceptions/ApplicationException.class differ diff --git a/cygnus-lib/target/classes/lib/models/ApiResponse.class b/cygnus-lib/target/classes/lib/models/ApiResponse.class new file mode 100644 index 0000000..d91e2bd Binary files /dev/null and b/cygnus-lib/target/classes/lib/models/ApiResponse.class differ diff --git a/cygnus-lib/target/classes/lib/models/ApplicationDetails.class b/cygnus-lib/target/classes/lib/models/ApplicationDetails.class new file mode 100644 index 0000000..b8a861a Binary files /dev/null and b/cygnus-lib/target/classes/lib/models/ApplicationDetails.class differ diff --git a/cygnus-lib/target/classes/lib/models/ApplicationSaveData.class b/cygnus-lib/target/classes/lib/models/ApplicationSaveData.class new file mode 100644 index 0000000..11214f8 Binary files /dev/null and b/cygnus-lib/target/classes/lib/models/ApplicationSaveData.class differ diff --git a/cygnus-lib/target/classes/lib/models/ApplicationSaveResult.class b/cygnus-lib/target/classes/lib/models/ApplicationSaveResult.class new file mode 100644 index 0000000..08c844c Binary files /dev/null and b/cygnus-lib/target/classes/lib/models/ApplicationSaveResult.class differ diff --git a/cygnus-lib/target/classes/lib/models/CasePunching.class b/cygnus-lib/target/classes/lib/models/CasePunching.class index 4a094cf..dd70729 100644 Binary files a/cygnus-lib/target/classes/lib/models/CasePunching.class and b/cygnus-lib/target/classes/lib/models/CasePunching.class differ diff --git a/cygnus-lib/target/classes/lib/models/CaseSaveRequest.class b/cygnus-lib/target/classes/lib/models/CaseSaveRequest.class new file mode 100644 index 0000000..240ed4a Binary files /dev/null and b/cygnus-lib/target/classes/lib/models/CaseSaveRequest.class differ diff --git a/cygnus-lib/target/classes/lib/models/ErrorDetails.class b/cygnus-lib/target/classes/lib/models/ErrorDetails.class deleted file mode 100644 index 76ad449..0000000 Binary files a/cygnus-lib/target/classes/lib/models/ErrorDetails.class and /dev/null differ diff --git a/cygnus-lib/target/classes/lib/models/MessageDetails.class b/cygnus-lib/target/classes/lib/models/MessageDetails.class new file mode 100644 index 0000000..51836cf Binary files /dev/null and b/cygnus-lib/target/classes/lib/models/MessageDetails.class differ diff --git a/cygnus-lib/target/classes/lib/models/Option.class b/cygnus-lib/target/classes/lib/models/Option.class index 2df6df0..0b26128 100644 Binary files a/cygnus-lib/target/classes/lib/models/Option.class and b/cygnus-lib/target/classes/lib/models/Option.class differ diff --git a/cygnus-lib/target/classes/lib/models/UserSession$UserSessionBuilder.class b/cygnus-lib/target/classes/lib/models/UserSession$UserSessionBuilder.class index af44226..eabc2fc 100644 Binary files a/cygnus-lib/target/classes/lib/models/UserSession$UserSessionBuilder.class and b/cygnus-lib/target/classes/lib/models/UserSession$UserSessionBuilder.class differ diff --git a/cygnus-lib/target/classes/lib/models/UserSession.class b/cygnus-lib/target/classes/lib/models/UserSession.class index 5fb4f06..a6faf69 100644 Binary files a/cygnus-lib/target/classes/lib/models/UserSession.class and b/cygnus-lib/target/classes/lib/models/UserSession.class differ diff --git a/cygnus-lib/target/cygnus-lib-1.0.0-SNAPSHOT.jar b/cygnus-lib/target/cygnus-lib-1.0.0-SNAPSHOT.jar index de0f13b..7feaa46 100644 Binary files a/cygnus-lib/target/cygnus-lib-1.0.0-SNAPSHOT.jar and b/cygnus-lib/target/cygnus-lib-1.0.0-SNAPSHOT.jar differ diff --git a/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 3d4bcd3..9d7b257 100644 --- a/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,3 +1,12 @@ -lib/models/ErrorDetails.class +lib/models/MessageDetails.class lib/models/CasePunching.class -lib/constants/ApplicationError.class +lib/exceptions/ApplicationException.class +lib/models/Option.class +lib/models/UserSession.class +lib/models/ApiResponse.class +lib/models/ApplicationSaveResult.class +lib/constants/ApplicationMessage.class +lib/models/ApplicationSaveData.class +lib/models/UserSession$UserSessionBuilder.class +lib/models/CaseSaveRequest.class +lib/models/ApplicationDetails.class diff --git a/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 7251d26..0ccd846 100644 --- a/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/cygnus-lib/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,5 +1,11 @@ -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/constants/ApplicationError.java +/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/constants/ApplicationMessage.java +/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/exceptions/ApplicationException.java +/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/ApiResponse.java +/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/ApplicationDetails.java +/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/ApplicationSaveData.java +/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/ApplicationSaveResult.java /Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/CasePunching.java -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/ErrorDetails.java +/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/CaseSaveRequest.java +/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/MessageDetails.java /Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/Option.java /Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/UserSession.java diff --git a/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst index f236490..f382137 100644 --- a/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst +++ b/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst @@ -1 +1 @@ -lib/models/ErrorDetailsTest.class +lib/models/MessageDetailsTest.class diff --git a/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst index 15f82d3..5b52a0d 100644 --- a/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ b/cygnus-lib/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -1 +1 @@ -/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/test/java/lib/models/ErrorDetailsTest.java +/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/test/java/lib/models/MessageDetailsTest.java diff --git a/cygnus-lib/target/surefire-reports/TEST-lib.models.ErrorDetailsTest.xml b/cygnus-lib/target/surefire-reports/TEST-lib.models.ErrorDetailsTest.xml deleted file mode 100644 index 0ea63ab..0000000 --- a/cygnus-lib/target/surefire-reports/TEST-lib.models.ErrorDetailsTest.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cygnus-lib/target/surefire-reports/lib.models.ErrorDetailsTest.txt b/cygnus-lib/target/surefire-reports/lib.models.ErrorDetailsTest.txt deleted file mode 100644 index 18dfcf8..0000000 --- a/cygnus-lib/target/surefire-reports/lib.models.ErrorDetailsTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: lib.models.ErrorDetailsTest -------------------------------------------------------------------------------- -Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.028 s -- in lib.models.ErrorDetailsTest diff --git a/cygnus-lib/target/test-classes/lib/models/ErrorDetailsTest.class b/cygnus-lib/target/test-classes/lib/models/ErrorDetailsTest.class deleted file mode 100644 index 01b853f..0000000 Binary files a/cygnus-lib/target/test-classes/lib/models/ErrorDetailsTest.class and /dev/null differ diff --git a/cygnus-lib/target/test-classes/lib/models/MessageDetailsTest.class b/cygnus-lib/target/test-classes/lib/models/MessageDetailsTest.class new file mode 100644 index 0000000..1d4fbe1 Binary files /dev/null and b/cygnus-lib/target/test-classes/lib/models/MessageDetailsTest.class differ diff --git a/cygnus-onprem-app/build/WebContent/WEB-INF/app/edp/punching/initcase.jsp b/cygnus-onprem-app/build/WebContent/WEB-INF/app/edp/punching/initcase.jsp index 6a7f76e..74586ee 100644 --- a/cygnus-onprem-app/build/WebContent/WEB-INF/app/edp/punching/initcase.jsp +++ b/cygnus-onprem-app/build/WebContent/WEB-INF/app/edp/punching/initcase.jsp @@ -17,10 +17,12 @@ - - + + + - + + @@ -75,7 +77,7 @@
- @@ -701,7 +703,7 @@ - + @@ -710,9 +712,9 @@ - - - + + +
@@ -728,10 +730,10 @@ } InitPage(); - var errorCode = document.getElementById("page-error-code"); + var code = document.getElementById("page-error-code"); var errorMessage = document.getElementById("page-error-message"); - if (errorCode && errorMessage) { - CallMessage(errorCode.textContent + ":error:" + errorMessage.textContent, 3000, 200, 300); + if (code && errorMessage) { + CallMessage(code.textContent + ":error:" + errorMessage.textContent, 3000, 200, 300); } }()); diff --git a/cygnus-onprem-app/build/WebContent/WEB-INF/app/error.jsp b/cygnus-onprem-app/build/WebContent/WEB-INF/app/error.jsp index 5d6c6b0..620760d 100644 --- a/cygnus-onprem-app/build/WebContent/WEB-INF/app/error.jsp +++ b/cygnus-onprem-app/build/WebContent/WEB-INF/app/error.jsp @@ -10,9 +10,9 @@ - Cygnus 1.0 | <c:out value="${empty errorDetails.title ? 'Page unavailable' : errorDetails.title}" /> + Cygnus 1.0 | <c:out value="${empty messageDetails.title ? 'Page unavailable' : messageDetails.title}" /> - + <%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %> @@ -25,20 +25,20 @@