@Override public FilterMorphScriptBuilder apply(final Task task) throws DMPConverterException { final Optional<Filter> optionalSkipFilter = Optional.ofNullable(task.getJob().getSkipFilter()); if (!optionalSkipFilter.isPresent()) { LOG.debug("there is no skip filter at job '{}' of task '{}'", task.getJob().getUuid(), task.getUuid()); return this; } final Filter skipFilter = optionalSkipFilter.get(); final Optional<String> optionalSkipFilterExpression = Optional.ofNullable(skipFilter.getExpression()); if (!optionalSkipFilterExpression.isPresent()) { LOG.debug("there is no filter expression in skip filter '{}' of job '{}' of task '{}'", skipFilter.getUuid(), task.getJob().getUuid(), task.getUuid()); return this; } final String filterExpressionString = optionalSkipFilterExpression.get(); final Map<String, FilterExpression> filterExpressionMap = extractFilterExpressions(filterExpressionString); if (filterExpressionMap == null || filterExpressionMap.isEmpty()) { LOG.debug("there are no filter conditions in filter expression in skip filter '{}' of job '{}' of task '{}'", skipFilter.getUuid(), task.getJob().getUuid(), task.getUuid()); return this; } super.apply(task); metaName.setTextContent(SKIP_FILTER + task.getJob().getUuid()); final String attributePathStringXMLEscaped = Iterators.getLast(filterExpressionMap.keySet().iterator()); addFilter(attributePathStringXMLEscaped, COMBINE_VALUE_VARIABLE, filterExpressionMap, rules, false); return this; }