private static Optional<Map<String, Integer>> generateInputSchemaMap(final Task task) { return Optional.ofNullable(task) .flatMap(task1 -> Optional.ofNullable(task1.getInputDataModel())) .flatMap(inputDataModel -> Optional.ofNullable(inputDataModel.getSchema())) .flatMap(MorphScriptBuilder::generateSchemaMap); }
@Override public MorphScriptBuilder apply(final Task task) throws DMPConverterException { super.apply(task); final List<String> metas = new ArrayList<>(); final Optional<Map<String, Integer>> optionalInputSchemaMap = generateInputSchemaMap(task); final Optional<DataModel> optionalInputDataModel = Optional.ofNullable(task) .flatMap(task2 -> Optional.ofNullable(task2.getInputDataModel())); final Optional<Schema> optionalInputSchema = optionalInputDataModel .flatMap(inputDataModel -> Optional.ofNullable(inputDataModel.getSchema())); final boolean isXmlSchema = isXmlSchema(optionalInputDataModel); final List<Tuple5<Optional<String>, javaslang.collection.List<String>, String, Element, Optional<String>>> mappingOutputs = new ArrayList<>(); for (final Mapping mapping : task.getJob().getMappings()) { metas.add(MorphScriptBuilder.MAPPING_PREFIX + mapping.getUuid()); final Optional<String> optionalDeepestMappingInput = determineDeepestMappingInputAttributePath(mapping, optionalInputSchemaMap); final Optional<Boolean> optionalSelectValueFromSameSubEntity = determineFilterUseCase(mapping, optionalInputSchema); final Optional<String> optionalCommonAttributePathOfMappingInputs = determineCommonAttributePathOfMappingInputs(mapping, optionalInputSchema, isXmlSchema); createTransformation(rules, mapping, optionalDeepestMappingInput, optionalSelectValueFromSameSubEntity, optionalCommonAttributePathOfMappingInputs) .ifPresent(currentMappingOutputs -> currentMappingOutputs .forEach(currentMappingOutput -> mappingOutputs.add(Tuple.of(currentMappingOutput._1, currentMappingOutput._2, currentMappingOutput._3, currentMappingOutput._4, optionalCommonAttributePathOfMappingInputs)))); createLookupTable(maps, mapping.getTransformation()); } createMappingOutputs(mappingOutputs, rules, doc); metaName.setTextContent(Joiner.on(", ").join(metas)); return this; }
@Override public boolean completeEquals(final Object obj) { return Task.class.isInstance(obj) && super.completeEquals(obj) && DMPPersistenceUtil.getDataModelUtils().completeEquals(((Task) obj).getInputDataModel(), getInputDataModel()) && DMPPersistenceUtil.getDataModelUtils().completeEquals(((Task) obj).getOutputDataModel(), getOutputDataModel()) && DMPPersistenceUtil.getJobUtils().completeEquals(((Task) obj).getJob(), getJob()); } }
public MonitoringHelper startExecution(final Task task) { final EntityIdentification identification = EntityIdentification.of(task); final MDCCloseable mdc = identification.putMDC(); task.getJob().getMappings().forEach(this::monitorEntity); monitorEntity(task.getInputDataModel(), "source"); monitorEntity(task.getOutputDataModel(), "target"); return startMonitoring(executionsTimer, identification, mdc); }