class DdTapeLibraryService implements TapeReadWriteService {

    @Override
    public TapeResponse readFromTape(String outputPath) {
        ParametersChecker.checkParameter("Arguments outputPath is required", outputPath);

        List<String> args = Lists.newArrayList(IF + tapeDriveConf.getDevice(),
            OF + Paths.get(this.getOutputDirectory()).resolve(outputPath).toAbsolutePath());

        LOGGER.debug("Execute script : {},timeout: {}, args : {}", tapeDriveConf.getDdPath(),
            tapeDriveConf.getTimeoutInMilliseconds(),
            args);
        Output output =
            getExecutor()
                .execute(tapeDriveConf.getDdPath(), tapeDriveConf.isUseSudo(), tapeDriveConf.getTimeoutInMilliseconds(),
                    args);

        return parseCommonResponse(output);

    }

    public  DdTapeLibraryService(TapeDriveConf tapeDriveConf, ProcessExecutor processExecutor,
        String inputDirectory, String outputDirectory);

}