protected abstract TerminalPathSegment buildTerminalPathSegment()

in persistence-commons/persistence-commons-reporting-parent/persistence-commons-reporting-api/src/main/java/org/kie/kogito/persistence/reporting/database/BaseDatabaseManagerImpl.java [79:133]


    protected abstract TerminalPathSegment<T, J, M> buildTerminalPathSegment(final String segment,
            final PathSegment parent,
            final M mapping);

    @Override
    public void createArtifacts(final D mappingDefinition) {
        try {
            final ObjectWriter objectWriter = CloudEventUtils.Mapper.mapper().writerWithDefaultPrettyPrinter();
            if (LOGGER.isInfoEnabled()) {
                LOGGER.info(String.format("Creating artifacts for:%n%s", objectWriter.writeValueAsString(mappingDefinition)));
            }

            LOGGER.info("Building Context...");
            final C context = createContext(mappingDefinition);

            LOGGER.info("Creating TABLE...");
            final String sourceTableName = mappingDefinition.getSourceTableName();
            getEntityManager(sourceTableName)
                    .createNativeQuery(tableSqlBuilder.createTableSql(context))
                    .executeUpdate();

            LOGGER.info("Creating INDEXES...");
            getEntityManager(sourceTableName)
                    .createNativeQuery(indexesSqlBuilder.createTableIndexesSql(context))
                    .executeUpdate();

            LOGGER.info("Creating INSERT TRIGGER FUNCTION...");
            getEntityManager(sourceTableName)
                    .createNativeQuery(triggerInsertSqlBuilder.createInsertTriggerFunctionSql(context))
                    .executeUpdate();

            LOGGER.info("Creating INSERT TRIGGER...");
            getEntityManager(sourceTableName)
                    .createNativeQuery(triggerInsertSqlBuilder.createInsertTriggerSql(context))
                    .executeUpdate();

            LOGGER.info("Creating DELETE TRIGGER FUNCTION...");
            getEntityManager(sourceTableName)
                    .createNativeQuery(triggerDeleteSqlBuilder.createDeleteTriggerFunctionSql(context))
                    .executeUpdate();

            LOGGER.info("Creating DELETE TRIGGER...");
            getEntityManager(sourceTableName)
                    .createNativeQuery(triggerDeleteSqlBuilder.createDeleteTriggerSql(context))
                    .executeUpdate();

            LOGGER.info("Applying mappings to existing data...");
            getEntityManager(sourceTableName)
                    .createNativeQuery(applyMappingSqlBuilder.apply(context))
                    .executeUpdate();

        } catch (JsonProcessingException jpe) {
            LOGGER.error(jpe.getMessage());
        }
    }