use of org.finos.waltz.model.physical_flow.PhysicalFlow in project waltz by khartec.
the class FlowDiagramService method makeForPhysicalSpecification.
private Long makeForPhysicalSpecification(EntityReference ref, String userId, String providedTitle) {
PhysicalSpecification spec = physicalSpecificationDao.getById(ref.id());
Select<Record1<Long>> logicalFlowSelector = logicalFlowIdSelectorFactory.apply(mkOpts(ref, HierarchyQueryScope.EXACT));
List<LogicalFlow> logicalFlows = logicalFlowDao.findBySelector(logicalFlowSelector);
List<PhysicalFlow> physicalFlows = physicalFlowDao.findBySpecificationId(ref.id());
List<EntityReference> nodes = logicalFlows.stream().flatMap(f -> Stream.of(f.source(), f.target())).distinct().collect(toList());
List<FlowDiagramEntity> entities = ListUtilities.concat(map(logicalFlows, d -> mkDiagramEntity(d)), map(physicalFlows, d -> mkDiagramEntity(d)), newArrayList(mkDiagramEntity(spec)), map(nodes, d -> mkDiagramEntity(d)));
String title = isEmpty(providedTitle) ? spec.name() + " flows" : providedTitle;
return mkNewFlowDiagram(title, userId, entities, emptyList());
}
use of org.finos.waltz.model.physical_flow.PhysicalFlow in project waltz by khartec.
the class ChangeLogService method writeChangeLogEntries.
public void writeChangeLogEntries(EntityReference ref, String userId, String postamble, Operation operation) {
switch(ref.kind()) {
case PHYSICAL_FLOW:
PhysicalFlow physicalFlow = physicalFlowDao.getById(ref.id());
writeChangeLogEntries(physicalFlow, userId, postamble, operation);
break;
case LOGICAL_DATA_FLOW:
LogicalFlow logicalFlow = logicalFlowDao.getByFlowId(ref.id());
writeChangeLogEntries(logicalFlow, userId, postamble, operation);
break;
case MEASURABLE_RATING_REPLACEMENT:
MeasurableRatingReplacement measurableRatingReplacement = measurableRatingReplacementdao.getById(ref.id());
writeChangeLogEntries(measurableRatingReplacement, userId, postamble, operation);
break;
case MEASURABLE_RATING_PLANNED_DECOMMISSION:
MeasurableRatingPlannedDecommission measurableRatingPlannedDecommission = measurableRatingPlannedDecommissionDao.getById(ref.id());
writeChangeLogEntries(measurableRatingPlannedDecommission, userId, postamble, operation);
default:
}
}
use of org.finos.waltz.model.physical_flow.PhysicalFlow in project waltz by khartec.
the class ChangeLogService method findByParentReferenceForPhysicalFlow.
// //////////////////// PRIVATE HELPERS //////////////////////////////////////////
private List<ChangeLog> findByParentReferenceForPhysicalFlow(EntityReference ref, Optional<Date> date, Optional<Integer> limit) {
checkNotNull(ref, "ref must not be null");
checkTrue(ref.kind() == EntityKind.PHYSICAL_FLOW, "ref should refer to a Physical Flow");
Future<List<ChangeLog>> flowLogsFuture = dbExecutorPool.submit(() -> changeLogDao.findByParentReference(ref, date, limit));
Future<List<ChangeLog>> specLogsFuture = dbExecutorPool.submit(() -> {
PhysicalFlow flow = physicalFlowDao.getById(ref.id());
return changeLogDao.findByParentReference(mkRef(EntityKind.PHYSICAL_SPECIFICATION, flow.specificationId()), date, limit);
});
return Unchecked.supplier(() -> {
List<ChangeLog> flowLogs = flowLogsFuture.get();
List<ChangeLog> specLogs = specLogsFuture.get();
List<ChangeLog> all = new ArrayList<>();
all.addAll(flowLogs);
all.addAll(specLogs);
return CollectionUtilities.sort(all, Comparator.comparing(ChangeLog::createdAt).reversed());
}).get();
}
use of org.finos.waltz.model.physical_flow.PhysicalFlow in project waltz by khartec.
the class FlowDiagramService method makeForPhysicalFlow.
private Long makeForPhysicalFlow(EntityReference ref, String userId, String providedTitle) {
PhysicalFlow physFlow = physicalFlowDao.getById(ref.id());
LogicalFlow logicalFlow = logicalFlowDao.getByFlowId(physFlow.logicalFlowId());
PhysicalSpecification spec = physicalSpecificationDao.getById(physFlow.specificationId());
String title = isEmpty(providedTitle) ? spec.name() + " flows" : providedTitle;
ArrayList<FlowDiagramEntity> entities = newArrayList(mkDiagramEntity(logicalFlow), mkDiagramEntity(physFlow), mkDiagramEntity(spec), mkDiagramEntity(logicalFlow.source()), mkDiagramEntity(logicalFlow.target()));
return mkNewFlowDiagram(title, userId, entities, emptyList());
}
use of org.finos.waltz.model.physical_flow.PhysicalFlow in project waltz by khartec.
the class ChangeUnitGenerator method create.
@Override
public Map<String, Integer> create(ApplicationContext ctx) {
DSLContext dsl = getDsl(ctx);
LocalDateTime now = LocalDateTime.now();
List<Long> changeSetIds = dsl.select(CHANGE_SET.ID).from(CHANGE_SET).fetch(CHANGE_SET.ID);
List<PhysicalFlow> physicalFlows = dsl.select(PHYSICAL_FLOW.fields()).from(PHYSICAL_FLOW).fetch(PhysicalFlowDao.TO_DOMAIN_MAPPER);
AtomicInteger counter = new AtomicInteger(0);
List<ChangeUnitRecord> groupRecords = changeSetIds.stream().flatMap(id -> randomlySizedIntStream(0, 5).mapToObj(idx -> randomPick(physicalFlows)).distinct().map(flow -> {
ChangeUnitRecord record = dsl.newRecord(CHANGE_UNIT);
record.setChangeSetId(id);
record.setSubjectEntityKind(EntityKind.PHYSICAL_FLOW.name());
record.setSubjectEntityId(flow.id().get());
record.setSubjectInitialStatus(flow.entityLifecycleStatus().name());
record.setExecutionStatus(ExecutionStatus.PENDING.name());
record.setLastUpdatedAt(Timestamp.valueOf(now));
record.setLastUpdatedBy("admin");
record.setExternalId(String.format("change-unit-ext-%s", counter.addAndGet(1)));
record.setProvenance(SAMPLE_DATA_PROVENANCE);
// if flow pending -> activate, activating flow, desc
// if flow active -> retire or modify
// if modify -> create attribute changes
ChangeAction action = mkChangeAction(flow);
record.setAction(action.name());
record.setName(mkName(flow, action));
record.setDescription("Description: " + mkName(flow, action));
return record;
})).collect(toList());
dsl.batchStore(groupRecords).execute();
List<AttributeChangeRecord> attributeChangeRecords = mkAttributeChanges(dsl, physicalFlows);
dsl.batchStore(attributeChangeRecords).execute();
return null;
}
Aggregations