All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.spikeify.ffmpeg.modelmapper.Mapper Maven / Gradle / Ivy

package com.spikeify.ffmpeg.modelmapper;

import com.spikeify.ffmpeg.builder.FFmpegOutputBuilder;
import com.spikeify.ffmpeg.options.AudioEncodingOptions;
import com.spikeify.ffmpeg.options.EncodingOptions;
import com.spikeify.ffmpeg.options.MainEncodingOptions;
import com.spikeify.ffmpeg.options.VideoEncodingOptions;
import org.modelmapper.ModelMapper;
import org.modelmapper.config.Configuration;
import org.modelmapper.convention.NameTokenizers;

/**
 * Copies values from one type of object to another
 *
 * @author bramp
 */
public class Mapper {

	final private static ModelMapper mapper = newModelMapper();

	private static ModelMapper newModelMapper() {
		ModelMapper mapper = new ModelMapper();

		Configuration config = mapper.getConfiguration().copy()
				.setFieldMatchingEnabled(true)
				.setSourceNameTokenizer(NameTokenizers.UNDERSCORE);

		mapper.createTypeMap(MainEncodingOptions.class,  FFmpegOutputBuilder.class, config);
		mapper.createTypeMap(AudioWrapper.class,  FFmpegOutputBuilder.class, config);
		mapper.createTypeMap(VideoWrapper.class, FFmpegOutputBuilder.class, config);

		return mapper;
	}

	/**
	 * Simple wrapper object, to inject the word "audio" in the property name
	 */
	static class AudioWrapper {
		public final AudioEncodingOptions audio;

		AudioWrapper(AudioEncodingOptions audio) {
			this.audio = audio;
		}
	}

	/**
	 * Simple wrapper object, to inject the word "video" in the property name
	 */
	static class VideoWrapper {
		public final VideoEncodingOptions video;

		VideoWrapper(VideoEncodingOptions video) {
			this.video = video;
		}
	}

	public static void map(MainEncodingOptions opts, FFmpegOutputBuilder dest) {
		mapper.map(opts, dest);
	}

	public static void map(AudioEncodingOptions opts, FFmpegOutputBuilder dest) {
		mapper.map(new AudioWrapper(opts), dest);
	}

	public static void map(VideoEncodingOptions opts, FFmpegOutputBuilder dest) {
		mapper.map(new VideoWrapper(opts), dest);
	}

	public static void map(EncodingOptions opts, FFmpegOutputBuilder dest) {
		map(opts.getMain(), dest);
		map(opts.getAudio(), dest);
		map(opts.getVideo(), dest);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy