package fr.openwide.core.jpa.more.util.image.model;
import java.io.Serializable;
import java.util.List;
import java.util.regex.Pattern;
import com.google.common.collect.Lists;
import fr.openwide.core.commons.util.mime.MediaType;
import fr.openwide.core.spring.util.StringUtils;
public class ImageThumbnailFormat implements Serializable {
private static final long serialVersionUID = -2325299250310910619L;
private static final Pattern NAME_PATTERN = Pattern.compile("[a-z0-9_-]+", Pattern.CASE_INSENSITIVE);
private static final List<String> AUTHORIZED_THUMBNAIL_EXTENSIONS = Lists.newArrayList(
MediaType.IMAGE_JPEG.extension(),
MediaType.IMAGE_GIF.extension(),
MediaType.IMAGE_PNG.extension()
);
private static final String DEFAULT_THUMBNAIL_EXTENSION = MediaType.IMAGE_JPEG.extension();
private String name;
/**
* A n'utiliser que si on veut forcer l'extension, sinon on conserve l'extension du fichier original
*/
private String extension;
private int width;
private int height;
private int quality;
private boolean allowEnlarge;
public ImageThumbnailFormat(String name, int width, int height) {
this(name, width, height, false, 80, null);
}
public ImageThumbnailFormat(String name, int width, int height, boolean allowEnlarge) {
this(name, width, height, allowEnlarge, 80, null);
}
public ImageThumbnailFormat(String name, int width, int height, int quality, String extension) {
this(name, width, height, false, quality, extension);
}
public ImageThumbnailFormat(String name, int width, int height, boolean allowEnlarge, int quality, String extension) {
if (!NAME_PATTERN.matcher(name).matches()) {
throw new IllegalArgumentException("Thumbnail format name must respect the following pattern: '[a-z0-9_-]+'.");
}
this.name = name;
this.width = width;
this.height = height;
this.allowEnlarge = allowEnlarge;
this.quality = quality;
this.extension = extension;
}
public String getName() {
return name;
}
public int getWidth() {
return width;
}
public int getHeight() {
return height;
}
public boolean isAllowEnlarge() {
return allowEnlarge;
}
public int getQuality() {
return quality;
}
public String getExtension(String originalFileExtension) {
String thumbnailExtension = extension;
if (thumbnailExtension == null) {
if (AUTHORIZED_THUMBNAIL_EXTENSIONS.contains(StringUtils.lowerCase(originalFileExtension))) {
thumbnailExtension = originalFileExtension;
} else {
thumbnailExtension = DEFAULT_THUMBNAIL_EXTENSION;
}
}
return StringUtils.lowerCase(thumbnailExtension);
}
public String getJavaFormatName(String originalFileExtension) {
return getExtension(originalFileExtension);
}
}