Search in sources :

Example 11 with Scenario

use of org.finos.waltz.model.scenario.Scenario in project waltz by khartec.

the class ScenarioRatingImporter method addMissingRows.

private void addMissingRows(List<Measurable> measurables, List<ScenarioRatingRow> ratingRows, Roadmap roadmap, ScenarioAxisItemDao scenarioAxisItemDao, Map<String, ScenarioAxisItem> scenarioAxesByName, Scenario scenario) {
    List<String> rows = ratingRows.stream().map(r -> lower(r.row())).distinct().collect(toList());
    Map<String, Measurable> allRowMeasurables = measurables.stream().filter(m -> m.categoryId() == roadmap.rowType().id()).collect(toMap(m -> lower(m.name()), m -> m, (m1, m2) -> m2.concrete() ? m2 : m1));
    for (String row : rows) {
        if (!scenarioAxesByName.containsKey(row)) {
            Measurable measurable = allRowMeasurables.get(row);
            checkNotNull(measurable, String.format("measurable with name [%s] not found", row));
            scenarioAxisItemDao.add(scenario.id().get(), AxisOrientation.ROW, measurable.entityReference(), 0);
        }
    }
}
Also used : ICsvMapReader(org.supercsv.io.ICsvMapReader) ScenarioAxisItemDao(org.finos.waltz.data.scenario.ScenarioAxisItemDao) APPLICATION(org.finos.waltz.schema.tables.Application.APPLICATION) EntityKind(org.finos.waltz.model.EntityKind) RatingScheme(org.finos.waltz.model.rating.RatingScheme) DIConfiguration(org.finos.waltz.service.DIConfiguration) StringUtilities.lower(org.finos.waltz.common.StringUtilities.lower) CsvPreference(org.supercsv.prefs.CsvPreference) Scenario(org.finos.waltz.model.scenario.Scenario) ArrayList(java.util.ArrayList) Checks.checkTrue(org.finos.waltz.common.Checks.checkTrue) Measurable(org.finos.waltz.model.measurable.Measurable) RatingSchemeItem(org.finos.waltz.model.rating.RatingSchemeItem) SCENARIO_RATING_ITEM(org.finos.waltz.schema.tables.ScenarioRatingItem.SCENARIO_RATING_ITEM) Map(java.util.Map) DSLContext(org.jooq.DSLContext) Application(org.finos.waltz.model.application.Application) MeasurableDao(org.finos.waltz.data.measurable.MeasurableDao) ScenarioDao(org.finos.waltz.data.scenario.ScenarioDao) Collection(java.util.Collection) IOException(java.io.IOException) AxisOrientation(org.finos.waltz.model.AxisOrientation) InputStreamReader(java.io.InputStreamReader) Collectors(java.util.stream.Collectors) AnnotationConfigApplicationContext(org.springframework.context.annotation.AnnotationConfigApplicationContext) MapUtilities.indexBy(org.finos.waltz.common.MapUtilities.indexBy) ScenarioRatingItemRecord(org.finos.waltz.schema.tables.records.ScenarioRatingItemRecord) CsvMapReader(org.supercsv.io.CsvMapReader) ApplicationDao(org.finos.waltz.data.application.ApplicationDao) List(java.util.List) Checks.checkNotNull(org.finos.waltz.common.Checks.checkNotNull) ExternalIdValue(org.finos.waltz.model.external_identifier.ExternalIdValue) ScenarioAxisItem(org.finos.waltz.model.scenario.ScenarioAxisItem) Tuple(org.jooq.lambda.tuple.Tuple) DateTimeUtilities(org.finos.waltz.common.DateTimeUtilities) RatingSchemeDAO(org.finos.waltz.data.rating_scheme.RatingSchemeDAO) RoadmapDao(org.finos.waltz.data.roadmap.RoadmapDao) Roadmap(org.finos.waltz.model.roadmap.Roadmap) Measurable(org.finos.waltz.model.measurable.Measurable)

Example 12 with Scenario

use of org.finos.waltz.model.scenario.Scenario in project waltz by khartec.

the class ScenarioRatingImporter method importScenarioRatings.

public void importScenarioRatings(String filename) throws IOException {
    List<Application> allApps = dsl.select().from(APPLICATION).fetch(ApplicationDao.TO_DOMAIN_MAPPER);
    assetCodeToApplicationMap = indexBy(a -> ExternalIdValue.orElse(a.assetCode(), null), allApps);
    List<ScenarioRatingRow> ratingRows = parseData(filename);
    Map<String, Map<String, List<ScenarioRatingRow>>> rowsGroupedByRoadmapByScenario = ratingRows.stream().collect(groupingBy(ScenarioRatingRow::roadmap, groupingBy(ScenarioRatingRow::scenario)));
    // get roadmap id
    Map<String, Roadmap> roadmapNameToIdMap = getNameToRoadmapMap(roadmapDao);
    List<Measurable> measurables = measurableDao.findAll();
    rowsGroupedByRoadmapByScenario.forEach((String roadmapName, Map<String, List<ScenarioRatingRow>> scenarioAndRows) -> {
        // get roadmap
        Roadmap roadmap = roadmapNameToIdMap.get(lower(roadmapName));
        checkNotNull(roadmap, "roadmap [" + roadmapName + "] cannot be null");
        // get rating scheme
        RatingScheme ratingScheme = ratingSchemeDao.getById(roadmap.ratingSchemeId());
        checkNotNull(ratingScheme, "ratingScheme cannot be null");
        Map<String, RatingSchemeItem> ratingsByName = indexBy(r -> lower(r.name()), ratingScheme.ratings());
        // index available scenarios
        Map<String, Scenario> scenariosByName = indexBy(s -> lower(s.name()), scenarioDao.findForRoadmapId(roadmap.id().get()));
        scenarioAndRows.forEach((scenarioName, rows) -> updateRatingsForScenario(measurables, roadmap, ratingsByName, rows, scenariosByName, scenarioName));
    });
}
Also used : ICsvMapReader(org.supercsv.io.ICsvMapReader) ScenarioAxisItemDao(org.finos.waltz.data.scenario.ScenarioAxisItemDao) APPLICATION(org.finos.waltz.schema.tables.Application.APPLICATION) EntityKind(org.finos.waltz.model.EntityKind) RatingScheme(org.finos.waltz.model.rating.RatingScheme) DIConfiguration(org.finos.waltz.service.DIConfiguration) StringUtilities.lower(org.finos.waltz.common.StringUtilities.lower) CsvPreference(org.supercsv.prefs.CsvPreference) Scenario(org.finos.waltz.model.scenario.Scenario) ArrayList(java.util.ArrayList) Checks.checkTrue(org.finos.waltz.common.Checks.checkTrue) Measurable(org.finos.waltz.model.measurable.Measurable) RatingSchemeItem(org.finos.waltz.model.rating.RatingSchemeItem) SCENARIO_RATING_ITEM(org.finos.waltz.schema.tables.ScenarioRatingItem.SCENARIO_RATING_ITEM) Map(java.util.Map) DSLContext(org.jooq.DSLContext) Application(org.finos.waltz.model.application.Application) MeasurableDao(org.finos.waltz.data.measurable.MeasurableDao) ScenarioDao(org.finos.waltz.data.scenario.ScenarioDao) Collection(java.util.Collection) IOException(java.io.IOException) AxisOrientation(org.finos.waltz.model.AxisOrientation) InputStreamReader(java.io.InputStreamReader) Collectors(java.util.stream.Collectors) AnnotationConfigApplicationContext(org.springframework.context.annotation.AnnotationConfigApplicationContext) MapUtilities.indexBy(org.finos.waltz.common.MapUtilities.indexBy) ScenarioRatingItemRecord(org.finos.waltz.schema.tables.records.ScenarioRatingItemRecord) CsvMapReader(org.supercsv.io.CsvMapReader) ApplicationDao(org.finos.waltz.data.application.ApplicationDao) List(java.util.List) Checks.checkNotNull(org.finos.waltz.common.Checks.checkNotNull) ExternalIdValue(org.finos.waltz.model.external_identifier.ExternalIdValue) ScenarioAxisItem(org.finos.waltz.model.scenario.ScenarioAxisItem) Tuple(org.jooq.lambda.tuple.Tuple) DateTimeUtilities(org.finos.waltz.common.DateTimeUtilities) RatingSchemeDAO(org.finos.waltz.data.rating_scheme.RatingSchemeDAO) RoadmapDao(org.finos.waltz.data.roadmap.RoadmapDao) Roadmap(org.finos.waltz.model.roadmap.Roadmap) RatingSchemeItem(org.finos.waltz.model.rating.RatingSchemeItem) Scenario(org.finos.waltz.model.scenario.Scenario) Measurable(org.finos.waltz.model.measurable.Measurable) Roadmap(org.finos.waltz.model.roadmap.Roadmap) RatingScheme(org.finos.waltz.model.rating.RatingScheme) Application(org.finos.waltz.model.application.Application) Map(java.util.Map)

Example 13 with Scenario

use of org.finos.waltz.model.scenario.Scenario in project waltz by khartec.

the class ScenarioRatingImporter method updateRatingsForScenario.

private void updateRatingsForScenario(List<Measurable> measurables, Roadmap roadmap, Map<String, RatingSchemeItem> ratingsByName, List<ScenarioRatingRow> rows, Map<String, Scenario> scenariosByName, String scenarioName) {
    // fetch scenario and axis items
    Scenario scenario = scenariosByName.get(lower(scenarioName));
    checkNotNull(scenario, "scenario [" + scenarioName + "] cannot be null");
    // ensure all scenario axes
    ensureScenarioAxes(measurables, roadmap, scenario, rows);
    // convert rows to scenario rating items
    List<ScenarioRatingItemRecord> records = mkScenarioRatingRecords(measurables, ratingsByName, rows, scenario);
    removeExistingRatings(dsl, scenario);
    // insert new ones
    int[] inserts = dsl.batchInsert(records).execute();
    System.out.printf("Inserted %s records for scenario %s \n", inserts.length, scenarioName);
}
Also used : ScenarioRatingItemRecord(org.finos.waltz.schema.tables.records.ScenarioRatingItemRecord) Scenario(org.finos.waltz.model.scenario.Scenario)

Example 14 with Scenario

use of org.finos.waltz.model.scenario.Scenario in project waltz by khartec.

the class ScenarioDao method cloneScenario.

public Scenario cloneScenario(CloneScenarioCommand command) {
    Scenario orig = getById(command.scenarioId());
    Scenario clone = ImmutableScenario.copyOf(orig).withName(command.newName()).withEntityLifecycleStatus(EntityLifecycleStatus.PENDING).withReleaseStatus(ReleaseLifecycleStatus.DRAFT).withLastUpdatedAt(nowUtc()).withLastUpdatedBy(command.userId());
    ScenarioRecord clonedRecord = TO_RECORD_MAPPER.apply(clone, dsl);
    clonedRecord.store();
    return ImmutableScenario.copyOf(clone).withId(clonedRecord.getId());
}
Also used : ScenarioRecord(org.finos.waltz.schema.tables.records.ScenarioRecord) Scenario(org.finos.waltz.model.scenario.Scenario) ImmutableScenario(org.finos.waltz.model.scenario.ImmutableScenario)

Aggregations

Scenario (org.finos.waltz.model.scenario.Scenario)14 RoadmapDao (org.finos.waltz.data.roadmap.RoadmapDao)6 ScenarioDao (org.finos.waltz.data.scenario.ScenarioDao)6 Application (org.finos.waltz.model.application.Application)6 Roadmap (org.finos.waltz.model.roadmap.Roadmap)6 ScenarioRatingItemRecord (org.finos.waltz.schema.tables.records.ScenarioRatingItemRecord)6 Collectors (java.util.stream.Collectors)5 DateTimeUtilities (org.finos.waltz.common.DateTimeUtilities)5 MeasurableDao (org.finos.waltz.data.measurable.MeasurableDao)5 ScenarioAxisItemDao (org.finos.waltz.data.scenario.ScenarioAxisItemDao)5 AxisOrientation (org.finos.waltz.model.AxisOrientation)5 EntityKind (org.finos.waltz.model.EntityKind)5 Measurable (org.finos.waltz.model.measurable.Measurable)5 RatingSchemeItem (org.finos.waltz.model.rating.RatingSchemeItem)5 ScenarioAxisItem (org.finos.waltz.model.scenario.ScenarioAxisItem)5 DSLContext (org.jooq.DSLContext)5 IOException (java.io.IOException)4 InputStreamReader (java.io.InputStreamReader)4 ArrayList (java.util.ArrayList)4 Collection (java.util.Collection)4