private boolean doDeleteTmpFiles() { boolean success = true; for (CustomParameterValue tmpParam : contextProvider.getTmpContext().getAllParameters()) { if (tmpParam.isDeleteOnExit()) { success &= doDeleteTmpFile(tmpParam.getValue()); } } for (CustomParameterValue paramValue : contextProvider.getDynamicContext().getAllParameters()) { if (paramValue.isDeleteOnExit()) { success &= doDeleteTmpFile(paramValue.getValue()); } } return success; }
/** * Appends a dynamic parameter value. * <ul> * <li>All template parameters within the parameter value and name are resolved.</li> * <li>The parameter value is appended to the previous parameter value.</li> * </ul> * * @param paramName parameter name * @param paramValue parameter value * @param deleteOnExit whether a file defined by the parameter value must be deleted on exit (must be true for tmp files). * @param useWhitespace whether to add a whitespace between concatenated values. * @param contextInfo a context info to resolved template parameters within the given parameter value. * @return this dynamic parameter context. */ public DynamicTemplateParameterContext appendParameter(String paramName, String paramValue, boolean deleteOnExit, boolean useWhitespace, ContextInfo contextInfo) { paramName = parameterResolver.resolveTemplateParameter(paramName, contextInfo); paramValue = parameterResolver.resolveTemplateParameter(paramValue, contextInfo); if (!params.containsKey(paramName)) { params.put(paramName, new CustomParameterValue(paramValue, deleteOnExit)); } else { String separator = useWhitespace ? " " : ""; paramValue = params.get(paramName).getValue() + separator + paramValue; params.put(paramName, new CustomParameterValue(paramValue, deleteOnExit)); } return this; }
@Test public void testDynamicContextMediaInfoInputNotForDelete() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCPLContext( 2, 2, 2, EnumSet.of(SequenceType.VIDEO, SequenceType.AUDIO)); new TestMediaInfoContextBuilder(contextProvider).build(); DynamicTemplateParameterContext dynamicContext = contextProvider.getDynamicContext(); CustomParameterValue input = dynamicContext.getParameterValue(DynamicContextParameters.MEDIA_INFO_INPUT); // input not in context for delete on exit! assertNotNull(input); assertFalse(input.isDeleteOnExit()); }
/** * Gets a parameter value as a string. * * @param templateParameter a enum defining the parameter name * @return a parameter value as a string */ public String getParameterValueAsString(TemplateParameter templateParameter) { return getParameterValue(templateParameter).getValue(); }
/** * Gets all parameter value instances with additional information besides parameter value string. * * @return gets all parameter value instances with additional information besides parameter value string. */ public Collection<CustomParameterValue> getAllParameters() { return format.getTmpContext().getMap().values().stream() .map((TmpParamType param) -> new CustomParameterValue(param.getValue(), param.isDeleteOnExit())) .collect(Collectors.toList()); }
@Test public void testAddDynamicParameterDeleteOnExit() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); contextProvider.getDynamicContext() .addParameter("addDynamicSimple1", "addDynamicValue1", false, ContextInfo.EMPTY) .addParameter("addDynamicSimple2", "addDynamicValue2", true, ContextInfo.EMPTY); assertFalse(contextProvider.getDynamicContext().getParameterValue("addDynamicSimple1").isDeleteOnExit()); assertTrue(contextProvider.getDynamicContext().getParameterValue("addDynamicSimple2").isDeleteOnExit()); }
/** * Gets the parameter value as a string. All template parameters within the parameter value are resolved. * * @param templateParameter template parameter instance. * @return a parameter value as a string. */ public String getParameterValueAsString(TemplateParameter templateParameter) { return getParameterValue(templateParameter).getValue(); }
/** * Adds a dynamic parameter value. * <ul> * <li>All template parameters within the parameter value and name are resolved.</li> * <li>The parameter value replaces the previous parameter value.</li> * </ul> * * @param paramName parameter name * @param paramValue parameter value * @param deleteOnExit whether a file defined by the parameter value must be deleted on exit (must be true for tmp files). * @param contextInfo a context info to resolved template parameters within the given parameter value. * @return this dynamic parameter context. */ public DynamicTemplateParameterContext addParameter(String paramName, String paramValue, boolean deleteOnExit, ContextInfo contextInfo) { paramName = parameterResolver.resolveTemplateParameter(paramName, contextInfo); paramValue = parameterResolver.resolveTemplateParameter(paramValue, contextInfo); params.put(paramName, new CustomParameterValue(paramValue, deleteOnExit)); return this; }
assertTrue(outputVideo1.isDeleteOnExit()); assertEquals( MediaInfoContextBuilder.getOutputFile(SequenceType.VIDEO, essenceVideo1, contextProvider.getWorkingDir()).getAbsolutePath(), outputVideo1.getValue()); assertTrue(outputVideo2.isDeleteOnExit()); assertEquals( MediaInfoContextBuilder.getOutputFile(SequenceType.VIDEO, essenceVideo2, contextProvider.getWorkingDir()).getAbsolutePath(), outputVideo2.getValue()); assertTrue(outputAudio1.isDeleteOnExit()); assertEquals( MediaInfoContextBuilder.getOutputFile(SequenceType.AUDIO, essenceAudio1, contextProvider.getWorkingDir()).getAbsolutePath(), outputAudio1.getValue()); assertTrue(outputAudio2.isDeleteOnExit()); assertEquals( MediaInfoContextBuilder.getOutputFile(SequenceType.AUDIO, essenceAudio2, contextProvider.getWorkingDir()).getAbsolutePath(), outputAudio2.getValue());
@Test public void testDynamicParametersFilled() throws Exception { TemplateParameterContextProvider contextProvider = createContextProvider(); // build media info TestExecutorLogger testExecutorLogger = new TestExecutorLogger(); new TestMediaInfoBuilder(contextProvider, testExecutorLogger, SimpleMediaInfoUtils.getMediaInfoFile()) .setCommandName("other1") .setInputDynamicParam("mediaInfoInput1") .setOutputDynamicParam("mediaInfoOutput1") .build(TestUtils.getTestFile()); DynamicTemplateParameterContext dynamicContext = contextProvider.getDynamicContext(); assertEquals(TestUtils.getTestFile().getAbsolutePath(), dynamicContext.getParameterValueAsString("mediaInfoInput1")); assertEquals(SimpleMediaInfoUtils.getMediaInfoFile().getAbsolutePath(), dynamicContext.getParameterValueAsString("mediaInfoOutput1")); assertTrue(dynamicContext.getParameterValue("mediaInfoOutput1").isDeleteOnExit()); }
/** * Increments parameter value assumes that parameter value is integer. * * @param paramName parameter name * @param addedValueStr added value as string * @param contextInfo a context info to resolved template parameters within the given parameter value */ private void incrementParameter(String paramName, String addedValueStr, ContextInfo contextInfo) { String paramValue; paramName = parameterResolver.resolveTemplateParameter(paramName, contextInfo); addedValueStr = parameterResolver.resolveTemplateParameter(addedValueStr, contextInfo); paramValue = (!params.containsKey(paramName)) ? "0" : params.get(paramName).getValue(); try { paramValue = String.valueOf(Integer.parseInt(paramValue) + Integer.parseInt(addedValueStr)); } catch (NumberFormatException e) { throw new ConversionException("Parameter to increment should be an integer type.", e); } params.put(paramName, new CustomParameterValue(paramValue)); } }
/** * Gets the parameter value as {@link CustomParameterValue} instance. * The returned parameter value contains additional information about the parameter, such as whether it should be deleted on exit. * * @param templateParameter a enum defining the parameter name * @return a parameter value instance with additional information besides parameter value string. */ public CustomParameterValue getParameterValue(TemplateParameter templateParameter) { if (format.getTmpContext() == null) { throw new TemplateParameterNotFoundException( templateParameter.toString(), "Conversion.xml doesn't contain any tmp context parameters."); } TmpParamType param = format.getTmpContext().getMap().get(templateParameter.getName()); if (param == null) { throw new TemplateParameterNotFoundException( templateParameter.toString(), "Conversion.xml doesn't contain '%s' tmp parameter."); } String paramValue = param.getValue(); if (StringUtils.isEmpty(paramValue)) { throw new TemplateParameterNotFoundException( templateParameter.toString(), "Conversion.xml contains an empty '%s' tmp parameter value."); } paramValue = paramValue.trim(); if (StringUtils.isEmpty(paramValue)) { throw new TemplateParameterNotFoundException( templateParameter.toString(), "Conversion.xml contains an empty '%s' tmp parameter value."); } return new CustomParameterValue(paramValue, param.isDeleteOnExit()); }
@Test public void testAddDynamicParameterFromConversionXml() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); DynamicParameterConcatType dynamicParameter1 = new DynamicParameterConcatType(); dynamicParameter1.setName("addDynamicSimple1"); dynamicParameter1.setValue("addDynamicValue1"); dynamicParameter1.setDeleteOnExit(false); DynamicParameterConcatType dynamicParameter2 = new DynamicParameterConcatType(); dynamicParameter2.setName("addDynamicSimple2"); dynamicParameter2.setValue("addDynamicValue2"); dynamicParameter2.setDeleteOnExit(true); contextProvider.getDynamicContext().addParameter(dynamicParameter1, ContextInfo.EMPTY, false); contextProvider.getDynamicContext().addParameter(dynamicParameter2, ContextInfo.EMPTY, false); assertEquals(DEFAULT_PARAMETERS_COUNT + 2, contextProvider.getDynamicContext().getAllParametersAsString().size()); assertEquals("addDynamicValue1", contextProvider.getDynamicContext().getParameterValueAsString("addDynamicSimple1")); assertEquals("addDynamicValue2", contextProvider.getDynamicContext().getParameterValueAsString("addDynamicSimple2")); assertFalse(contextProvider.getDynamicContext().getParameterValue("addDynamicSimple1").isDeleteOnExit()); assertTrue(contextProvider.getDynamicContext().getParameterValue("addDynamicSimple2").isDeleteOnExit()); }
.getParameterValueAsString("appendDynamicSimple3_ws")); assertTrue(contextProvider.getDynamicContext().getParameterValue("addDynamicSimple1").isDeleteOnExit()); assertTrue(contextProvider.getDynamicContext().getParameterValue("appendDynamicSimple3").isDeleteOnExit()); assertFalse(contextProvider.getDynamicContext().getParameterValue("appendDynamicSimple3_ws").isDeleteOnExit());