package net.formio.validation.constraints; import java.util.Arrays; /** * Validation of file extension. * * @author Karel Stefan */ public class FileExtensionValidation { private FileExtensionValidation() { throw new AssertionError("Not instantiable, use static members"); } public static boolean hasFileExtension(String fileName, String[] allowedExtensions, boolean ignoreCase) { if (fileName == null || fileName.isEmpty() || allowedExtensions == null) { return false; } String extension = getFileExtension(fileName); if (ignoreCase) { extension = extension.toLowerCase(); allowedExtensions = convertExtensionsToLowerCase(allowedExtensions); } return Arrays.asList(allowedExtensions).contains(extension); } public static boolean hasFileExtension(String fileName, String[] allowedExtensions) { return hasFileExtension(fileName, allowedExtensions, true); } private static String getFileExtension(String fileName) { int index = fileName.lastIndexOf('.') + 1; if (index == 0 || index == fileName.length()) { // File without extension e.g. "test" or "." return ""; } return fileName.substring(index); } private static String[] convertExtensionsToLowerCase(String[] extensions) { String[] converted = new String[extensions.length]; for (int i = 0; i < extensions.length; i++) { converted[i] = extensions[i] != null ? extensions[i].toLowerCase() : null; } return converted; } }