Skip to content

Commit

Permalink
Validation refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
filipelautert committed Sep 25, 2023
1 parent 25a4e78 commit 3dd4b95
Showing 1 changed file with 40 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -92,42 +92,7 @@ public void run(CommandResultsBuilder resultsBuilder) throws Exception {

final boolean isChangeSetIdentifierPassed = changeSetIdentifier != null;

final boolean isRequiredCompositeIdentifierMissing = (commandScope.getArgumentValue(CHANGESET_ID_ARG) == null ||
commandScope.getArgumentValue(CHANGESET_AUTHOR_ARG) == null || commandScope.getArgumentValue(CHANGESET_PATH_ARG) == null)
&& changeSetIdentifier == null;

final boolean isAmbiguousNumberOfIdentifierProvided = (commandScope.getArgumentValue(CHANGESET_ID_ARG) != null ||
commandScope.getArgumentValue(CHANGESET_AUTHOR_ARG) != null || commandScope.getArgumentValue(CHANGESET_PATH_ARG) != null)
&& changeSetIdentifier != null;

if (isAmbiguousNumberOfIdentifierProvided) {
String errorMessage = "Error encountered while parsing the command line. " +
"'--changeset-identifier' cannot be provided alongside other changeset arguments: " +
"'--changeset-id', '--changeset-path', '--changeset-author'.";
throw new LiquibaseException(new IllegalArgumentException(errorMessage));
}

if (isRequiredCompositeIdentifierMissing) {
String errorMessage = "Error encountered while parsing the command line. " +
"If --changeset-identifier is not provided than --changeset-id, --changeset-author and --changeset-path must be specified. " +
"Missing argument: ";

if (commandScope.getArgumentValue(CHANGESET_ID_ARG) == null) {
errorMessage = errorMessage + " '--changeset-id',";
}

if (commandScope.getArgumentValue(CHANGESET_AUTHOR_ARG) == null) {
errorMessage = errorMessage + " '--changeset-author',";
}

if (commandScope.getArgumentValue(CHANGESET_PATH_ARG) == null) {
errorMessage = errorMessage + " '--changeset-path',";
}

errorMessage = errorMessage.substring(0,errorMessage.length() - 1) + ".";

throw new LiquibaseException(new IllegalArgumentException(errorMessage));
}
validateIdentifierParameters(commandScope, changeSetIdentifier);

if (isChangeSetIdentifierPassed) {
List<String> parts = validateAndExtractParts(changeSetIdentifier, changeLogFile);
Expand Down Expand Up @@ -171,6 +136,45 @@ public void run(CommandResultsBuilder resultsBuilder) throws Exception {
);
}

private void validateIdentifierParameters(CommandScope commandScope, String changeSetIdentifier) throws LiquibaseException {
final boolean isAmbiguousNumberOfIdentifierProvided = (commandScope.getArgumentValue(CHANGESET_ID_ARG) != null ||
commandScope.getArgumentValue(CHANGESET_AUTHOR_ARG) != null || commandScope.getArgumentValue(CHANGESET_PATH_ARG) != null)
&& changeSetIdentifier != null;

if (isAmbiguousNumberOfIdentifierProvided) {
String errorMessage = "Error encountered while parsing the command line. " +
"'--changeset-identifier' cannot be provided alongside other changeset arguments: " +
"'--changeset-id', '--changeset-path', '--changeset-author'.";
throw new LiquibaseException(new IllegalArgumentException(errorMessage));
}

final boolean isRequiredCompositeIdentifierMissing = (commandScope.getArgumentValue(CHANGESET_ID_ARG) == null ||
commandScope.getArgumentValue(CHANGESET_AUTHOR_ARG) == null || commandScope.getArgumentValue(CHANGESET_PATH_ARG) == null)
&& changeSetIdentifier == null;

if (isRequiredCompositeIdentifierMissing) {
String errorMessage = "Error encountered while parsing the command line. " +
"If --changeset-identifier is not provided than --changeset-id, --changeset-author and --changeset-path must be specified. " +
"Missing argument: ";

if (commandScope.getArgumentValue(CHANGESET_ID_ARG) == null) {
errorMessage = errorMessage + " '--changeset-id',";
}

if (commandScope.getArgumentValue(CHANGESET_AUTHOR_ARG) == null) {
errorMessage = errorMessage + " '--changeset-author',";
}

if (commandScope.getArgumentValue(CHANGESET_PATH_ARG) == null) {
errorMessage = errorMessage + " '--changeset-path',";
}

errorMessage = errorMessage.substring(0,errorMessage.length() - 1) + ".";

throw new LiquibaseException(new IllegalArgumentException(errorMessage));
}
}

private List<String> validateAndExtractParts(String changeSetIdentifier, String changeLogFile) throws LiquibaseException {
if (StringUtil.isEmpty(changeSetIdentifier)) {
throw new LiquibaseException(new IllegalArgumentException(CHANGESET_IDENTIFIER_ARG.getName()));
Expand Down

0 comments on commit 3dd4b95

Please sign in to comment.