--- /dev/null
+package com.pentila.entSavoie.utils;
+
+import java.text.Normalizer;
+import java.util.regex.Pattern;
+
+import com.liferay.portal.kernel.util.CharPool;
+import com.liferay.portal.kernel.util.Validator;
+
+public class FileNameUtil {
+
+ // Validator for name/title
+ static char[] INVALID_CHARACTERS = new char[] {
+ CharPool.AMPERSAND, CharPool.APOSTROPHE, CharPool.AT,
+ CharPool.BACK_SLASH, CharPool.CLOSE_BRACKET, CharPool.CLOSE_CURLY_BRACE,
+ CharPool.COLON, CharPool.COMMA, CharPool.EQUAL, CharPool.GREATER_THAN,
+ CharPool.FORWARD_SLASH, CharPool.LESS_THAN, CharPool.NEW_LINE,
+ CharPool.OPEN_BRACKET, CharPool.OPEN_CURLY_BRACE, CharPool.PERCENT,
+ CharPool.PIPE, CharPool.PLUS, CharPool.POUND, CharPool.QUESTION,
+ CharPool.QUOTE, CharPool.RETURN, CharPool.SEMICOLON, CharPool.SLASH,
+ CharPool.STAR, CharPool.TILDE, '\u00b0' // This last one is the degree sign
+ };
+
+ public static String replaceAccent(String str) {
+ String nfdNormalizedString = Normalizer.normalize(str, Normalizer.Form.NFD);
+ Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
+ return pattern.matcher(nfdNormalizedString).replaceAll("");
+ }
+
+ public static String getValidName(String str) {
+ // valid le nom et remplace les caractere interdits par des '_' au cas ou
+ String result = "";
+ if (Validator.isNull(str)) {
+ return "objet";
+ }
+ else {
+ char[] wordCharArray = str.toCharArray();
+
+ boolean invalidFlag = false;
+ boolean firstChar = true;
+ for (char c : wordCharArray) {
+ invalidFlag = false;
+ for (char invalidChar : INVALID_CHARACTERS) {
+ if (c == invalidChar) {
+ invalidFlag = true;
+ break;
+ }
+ }
+
+ result += (firstChar && invalidFlag ? "" : (invalidFlag?"_" : c));
+ firstChar = firstChar && invalidFlag;
+ }
+ }
+
+ if(result.isEmpty()){
+ result = "objet";
+ }
+
+ return result;
+ }
+
+ public static String getValidName(String str, boolean replaceSpaces, boolean replaceAccent){
+ str = getValidName(str);
+ if(replaceSpaces){
+ str = replaceAccent(str.trim().replaceAll("\\s+", "_"));
+ }
+ if(replaceAccent){
+ str = replaceAccent(str);
+ }
+ // Check that the file name does not end with '_' characters
+ while (str.endsWith("_")) {
+ str = str.substring(0, str.length() - 1);
+ }
+
+ return str;
+ }
+}