@Override
	public Map<File, File> getVideoWithSubtitlesPairs(File inputFolder)
			throws NotFolderException {
		Map<File, File> filePairs = new HashMap<File, File>();
		if (!inputFolder.isDirectory()) {
			throw new NotFolderException(inputFolder.getAbsolutePath());
		}
		ExtentionFileFilterFactory extentionFileFilterFactory = new ExtentionFileFilterFactoryImpl();
		FilenameFilter videoFileNameFilter = extentionFileFilterFactory
				.getVideoFileFilter();
		FilenameFilter sybtitleFileNameFilter = extentionFileFilterFactory
				.getSybtitlesFileFilter();
		List<File> videoFilesList = Arrays.asList(inputFolder
				.listFiles(videoFileNameFilter));
		List<File> sybtitleFilesList = Arrays.asList(inputFolder
				.listFiles(sybtitleFileNameFilter));
		String videoFileNameVithoutExtention = null;
		String sybtitleFileNameVithoutExtention = null;
		String videoFileExtention = PropertiesReaderServiceImpl
				.getInstance()
				.getPropertyValue(ApplicationSetting.INPUT_VIDEO_FILE_EXTENTION);
		String sybtitleFileExtention = PropertiesReaderServiceImpl
				.getInstance().getPropertyValue(
						ApplicationSetting.SYBTITLE_FILE_EXTENTION);
		for (File videoFile : videoFilesList) {
			for (File sybtitleFile : sybtitleFilesList) {
				try {
					videoFileNameVithoutExtention = getFileNameWithoutExtention(
							videoFile.getName(), videoFileExtention);
					sybtitleFileNameVithoutExtention = getFileNameWithoutExtention(
							sybtitleFile.getName(), sybtitleFileExtention);
					if (videoFileNameVithoutExtention
							.equals(sybtitleFileNameVithoutExtention)) {
						filePairs.put(videoFile, sybtitleFile);
					}
				} catch (IllegalArgumentException e) {
					LOGGER.debug(ILLEGALE_ARGUMENT_TEMPLATE);
					LOGGER.debug(ApplicationConstants.EXCEPTION_LOGGER_TEMPLATE,
							e);
				} catch (WrongFileNameLengthException e) {
					LOGGER.debug(WRONG_FILENAME_LENGTH, e.getMessage());
					LOGGER.debug(ApplicationConstants.EXCEPTION_LOGGER_TEMPLATE,
							e);
				} catch (WrongExtentionLengthException e) {
					LOGGER.debug(WRONG_EXTENTION_LENGTH, e.getMessage());
					LOGGER.debug(ApplicationConstants.EXCEPTION_LOGGER_TEMPLATE,
							e);
				} catch (FileException e) {
					LOGGER.debug(WRONG_FILE_NAME, e.getMessage());
					LOGGER.debug(ApplicationConstants.EXCEPTION_LOGGER_TEMPLATE,
							e);
				}
			}
		}

		return filePairs;
	}