use of org.finos.waltz.common.StreamUtilities.Siphon in project waltz by khartec.
the class PersonResolver method main.
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(DIBaseConfiguration.class);
DSLContext dsl = ctx.getBean(DSLContext.class);
InvolvementNameToIdResolver involvementNameToIdResolver = new InvolvementNameToIdResolver(dsl);
PersonNameToEmpIdResolver personNameToEmpIdResolver = new PersonNameToEmpIdResolver(dsl);
OrgNameToIdResolver orgNameToIdResolver = new OrgNameToIdResolver(dsl);
Siphon<Tuple4<String, String, Optional<Long>, Optional<String>>> noOrgSiphon = mkSiphon(t -> !t.v3.isPresent());
Siphon<Tuple4<String, String, Optional<Long>, Optional<String>>> noPersonSiphon = mkSiphon(t -> !t.v4.isPresent());
Set<Tuple3<Long, String, Long>> orgEmpInvTuples = involvementNameToIdResolver.resolve(involvementKindName).map(involvementKindId -> data.stream().flatMap(t -> Stream.of(t.v2.split(" / ")).map(name -> tuple(t.v1, name))).distinct().map(t -> t.concat(orgNameToIdResolver.resolve(t.v1))).map(t -> t.concat(personNameToEmpIdResolver.resolve(t.v2))).filter(noOrgSiphon).filter(noPersonSiphon).map(t -> t.skip2().map1(// empId
Optional::get).map2(// orgId
Optional::get).concat(involvementKindId)).collect(Collectors.toSet())).orElseThrow(() -> new IllegalArgumentException(format("Cannot find involvement kind: %s", involvementKindName)));
dump("No Org", noOrgSiphon, t -> t.v1);
dump("No Person", noPersonSiphon, t -> t.v2);
Set<InvolvementRecord> records = map(orgEmpInvTuples, t -> new InvolvementRecord(EntityKind.ORG_UNIT.name(), t.v1, t.v2, provenance, t.v3, true));
dsl.batchInsert(records).execute();
}
use of org.finos.waltz.common.StreamUtilities.Siphon in project waltz by khartec.
the class InvolvementImporter method main.
public static void main(String[] args) throws IOException {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(DIConfiguration.class);
ApplicationService applicationService = ctx.getBean(ApplicationService.class);
PersonService personService = ctx.getBean(PersonService.class);
Map<String, Application> appsByExtId = indexBy(a -> ExternalIdValue.orElse(a.assetCode(), null), applicationService.findAll());
Map<String, Person> peopleByName = indexBy(p -> toSurnameFirstname(p.displayName()).toLowerCase(), personService.all());
Siphon<String[]> incorrectSizeSiphon = mkSiphon(arr -> arr.length != 3);
Siphon<Tuple2<String, ?>> unknownAppSiphon = mkSiphon(t -> !appsByExtId.containsKey(t.v1));
Siphon<Tuple2<?, String>> unknownPersonSiphon = mkSiphon(t -> !peopleByName.containsKey(t.v2.toLowerCase()));
Siphon<Tuple2<Application, ?>> retiredAppSiphon = mkSiphon(t -> t.v1.lifecyclePhase() == LifecyclePhase.RETIRED);
List<Tuple2<Application, Person>> r = IOUtilities.streamLines(classLoader.getResourceAsStream(fileName)).map(line -> line.split("\t")).filter(d -> incorrectSizeSiphon.test(d)).map(arr -> Tuple.tuple(arr[1], arr[0])).filter(t -> unknownAppSiphon.test(t)).map(t -> t.map1(extId -> appsByExtId.get(extId))).filter(t -> retiredAppSiphon.test(t)).filter(t -> unknownPersonSiphon.test(t)).map(t -> t.map2(n -> peopleByName.get(n.toLowerCase()))).collect(Collectors.toList());
Set<Application> distinctApps = r.stream().map(t -> t.v1).distinct().collect(Collectors.toSet());
Set<Person> distinctPeople = r.stream().map(t -> t.v2).distinct().collect(Collectors.toSet());
System.out.println("----");
System.out.println("Wrong size count: " + incorrectSizeSiphon.getResults().size());
System.out.println("Apps not found count: " + unknownAppSiphon.getResults().size());
System.out.println("Retired app count: " + retiredAppSiphon.getResults().size());
System.out.println("Person not found count: " + unknownPersonSiphon.getResults().size());
System.out.println("----");
System.out.println("Good record count: " + r.size());
System.out.println("Distinct App count: " + distinctApps.size());
System.out.println("Distinct People count: " + distinctPeople.size());
Map<String, Long> unknownPersonCounts = countBy(Tuple2::v2, unknownPersonSiphon.getResults());
DebugUtilities.dump(unknownPersonCounts);
}
Aggregations