private ValidationErrors validateDateTimePatternsForAutoGeneratedValues()

in src/main/java/com/epam/digital/data/platform/liquibase/extension/change/core/DdmAddColumnChange.java [174:199]


    private ValidationErrors validateDateTimePatternsForAutoGeneratedValues(List<DdmAddColumnConfig> generatedColumns) {
        ValidationErrors validationErrors = new ValidationErrors();
        for (DdmAddColumnConfig column : generatedColumns) {
            String pattern = column.getAutoGenerate();
            pattern = pattern.replace("{SEQ}", "SEQ");
            while (pattern.contains("{") && pattern.contains("}")
                && pattern.indexOf("{") < pattern.indexOf("}")) {

                int beginIndex = pattern.indexOf("{");
                int endIndex = pattern.indexOf("}");
                String dateTimePattern = pattern.substring(beginIndex + 1, endIndex);
                try {
                    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(dateTimePattern);
                    dateTimeFormatter.format(LocalDateTime.now());
                } catch (IllegalArgumentException e) {
                    validationErrors.addError(
                        String.format("Column '%s' contains a pattern '%s' that is not a date/time pattern", column.getName(), dateTimePattern));
                } catch (Exception ex) {
                    validationErrors.addError(
                        String.format("Column '%s' contains a pattern '%s' that cannot be applied to date/time formatting", column.getName(), dateTimePattern));
                }
                pattern = pattern.replace("{" + dateTimePattern + "}", "dateTime");
            }
        }
        return validationErrors;
    }