package org.xdams.utility;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.swing.text.html.HTML;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.StrSubstitutor;
//import static com.regesta.cms.utility.SimpleLogic.*;
public class CommonUtils {
public static final Pattern htmlTagPattern = Pattern.compile("<\\s*\\/?\\s*(\\w*?)((\\s+.*?)|(\\s*))\\/?\\s*>");
public static final Pattern titleUrlPattern = Pattern.compile("<\\s*\\/?\\s*(\\w*?)((\\s+.*?)|(\\s*))\\/?\\s*>");
public static final String escapeCharacters = "#;&,.+*~':\"!^$[]()=>|/";
public static String OS = System.getProperty("os.name").toLowerCase();
public static List<String> collectionExt = Arrays.asList(".doc", ".docx", ".log", ".msg", ".pages", ".rtf", ".txt", ".wpd", ".wps", ".csv", ".dat", ".efx", ".gbr", ".key", ".pps", ".ppt", ".pptx", ".sdf", ".tax2010", ".vcf", ".xml", ".aif", ".iff", ".m3u", ".m4a", ".mid", ".mp3", ".mpa", ".ra",
".wav", ".wma", ".3g2", ".3gp", ".asf", ".asx", ".avi", ".flv", ".mov", ".mp4", ".mpg", ".rm", ".swf", ".vob", ".wmv", ".3dm", ".max", ".bmp", ".gif", ".jpg", ".jpeg", ".png", ".psd", ".pspimage", ".thm", ".tif", ".tiff", ".yuv", ".ai", ".drw", ".eps", ".ps", ".svg", ".indd", ".pct",
".pdf", ".qxd", ".qxp", ".rels", ".xlr", ".xls", ".xlsx", ".accdb", ".db", ".dbf", ".mdb", ".pdb", ".sql", ".app", ".bat", ".cgi", ".com", ".exe", ".gadget", ".jar", ".pif", ".vb", ".wsf", ".gam", ".nes", ".rom", ".sav", ".dwg", ".dxf", ".gpx", ".kml", ".asp", ".cer", ".csr", ".css",
".htm", ".html", ".js", ".jsp", ".php", ".rss", ".xhtml", ".8bi", ".plugin", ".xll", ".fnt", ".fon", ".otf", ".ttf", ".cab", ".cpl", ".cur", ".dll", ".dmp", ".drv", ".lnk", ".sys", ".cfg", ".ini", ".keychain", ".prf", ".bin", ".hqx", ".mim", ".uue", ".7z", ".deb", ".gz", ".pkg", ".rar",
".rpm", ".sit", ".sitx", ".tar.gz", ".zip", ".zipx", ".dmg", ".iso", ".toast", ".vcd", ".c", ".class", ".cpp", ".cs", ".dtd", ".fla", ".java", ".m", ".pl", ".py", ".bak", ".gho", ".ori", ".tmp", ".dbx", ".msi", ".part", ".torrent");
public static void main(String[] args) {
// System.out.println(CommonUtils.escapeJqueryName(".c.did.dao[@type='documenti grafici'][1].resource.text()"));
System.out.println(checkExt("<isattach>/alcorn/2.2_UA50.001.jpg�/alcorn/2.2_UA50.002.jpg�/alcorn/2.2_UA50.003.jpg�/alcorn/2.2_UA50.004.jpg�/alcorn/2.2_UA50.005.jpg�/alcorn/2.2_UA50.006.jpg�/alcorn/2.2_UA50.007.jpg�/alcorn/2.2_UA50.008.jpg�/alcorn/2.2_UA50.009.jpg�/alcorn/2.2_UA50.010.jpg�/alcorn/2.2_UA50.011.jpg�/alcorn/2.2_UA50.012.jpg�/alcorn/2.2_UA50.013.jpg�/alcorn/2.2_UA50.014.jpg�/alcorn/2.2_UA50.015.jpg�/alcorn/2.2_UA50.016.jpg�/alcorn/2.2_UA50.017.jpg�/alcorn/2.2_UA50.018.jpg�/alcorn/2.2_UA50.019.jpg�/alcorn/2.2_UA50.020.jpg�/alcorn/2.2_UA50.021.jpg�/alcorn/2.2_UA50.022.jpg�/alcorn/2.2_UA50.023.jpg�/alcorn/2.2_UA50.024.jpg�/alcorn/2.2_UA50.025.jpg�/alcorn/2.2_UA50.026.jpg�/alcorn/2.2_UA50.027.jpg�/alcorn/2.2_UA50.028.jpg�/alcorn/2.2_UA50.029.jpg�/alcorn/2.2_UA50.030.jpg�/alcorn/2.2_UA50.031.jpg�/alcorn/2.2_UA50.032.jpg�/alcorn/2.2_UA50.033.jpg�/alcorn/2.2_UA50.034.jpg�/alcorn/2.2_UA50.035.jpg�/alcorn/2.2_UA50.036.jpg�/alcorn/2.2_UA50.037.jpg�/alcorn/2.2_UA50.038.jpg�/alcorn/2.2_UA50.039.jpg�/alcorn/2.2_UA50.040.jpg�/alcorn/2.2_UA50.041.jpg�/alcorn/2.2_UA50.042.jpg�/alcorn/2.2_UA50.043.jpg�/alcorn/2.2_UA50.044.jpg�/alcorn/2.2_UA50.045.jpg�/alcorn/2.2_UA50.046.jpg�/alcorn/2.2_UA50.047.jpg�/alcorn/2.2_UA50.048.jpg�/alcorn/2.2_UA50.049.jpg�/alcorn/2.2_UA50.050.jpg�/alcorn/2.2_UA50.051.jpg�/alcorn/2.2_UA50.052.jpg�/alcorn/2.2_UA50.053.jpg�/alcorn/2.2_UA50.054.jpg�/alcorn/2.2_UA50.055.jpg�/alcorn/2.2_UA50.056.jpg�/alcorn/2.2_UA50.057.jpg�/alcorn/2.2_UA50.058.jpg�/alcorn/2.2_UA50.059.jpg�/alcorn/2.2_UA50.060.jpg�/alcorn/2.2_UA50.061.jpg�/alcorn/2.2_UA50.062.jpg�/alcorn/2.2_UA50.063.jpg�/alcorn/2.2_UA50.064.jpg�/alcorn/2.2_UA50.065.jpg�/alcorn/2.2_UA50.066.jpg�/alcorn/2.2_UA50.067.jpg�/alcorn/2.2_UA50.068.jpg�/alcorn/2.2_UA50.069.jpg�/alcorn/2.2_UA50.070.jpg�/alcorn/2.2_UA50.071.jpg�/alcorn/2.2_UA50.072.jpg�/alcorn/2.2_UA50.073.jpg�/alcorn/2.2_UA50.074.jpg�/alcorn/2.2_UA50.075.jpg�/alcorn/2.2_UA50.076.jpg�/alcorn/2.2_UA50.077.jpg�/alcorn/2.2_UA50.078.jpg�/alcorn/2.2_UA50.079.jpg�/alcorn/2.2_UA50.080.jpg�/alcorn/2.2_UA50.081.jpg�/alcorn/2.2_UA50.082.jpg�/alcorn/2.2_UA50.083.jpg�/alcorn/2.2_UA50.084.jpg�/alcorn/2.2_UA50.085.jpg�/alcorn/2.2_UA50.086.jpg�/alcorn/2.2_UA50.087.jpg�/alcorn/2.2_UA50.088.jpg�/alcorn/2.2_UA50.089.jpg�/alcorn/2.2_UA50.090.jpg�/alcorn/2.2_UA50.091.jpg�/alcorn/2.2_UA50.092.jpg�/alcorn/2.2_UA50.093.jpg�/alcorn/2.2_UA50.094.jpg�/alcorn/2.2_UA50.095.jpg�/alcorn/2.2_UA50.096.jpg�/alcorn/2.2_UA50.097.jpg�/alcorn/2.2_UA50.098.jpg�/alcorn/2.2_UA50.099.jpg�/alcorn/2.2_UA50.100.jpg�/alcorn/2.2_UA50.101.jpg�/alcorn/2.2_UA50.102.jpg�/alcorn/2.2_UA50.103.jpg�/alcorn/2.2_UA50.104.jpg�/alcorn/2.2_UA50.105.jpg�/alcorn/2.2_UA50.106.jpg�/alcorn/2.2_UA50.107.jpg�/alcorn/2.2_UA50.108.jpg�/alcorn/2.2_UA50.109.jpg�/alcorn/2.2_UA50.110.jpg�/alcorn/2.2_UA50.111.jpg�/alcorn/2.2_UA50.112.jpg�/alcorn/2.2_UA50.113 copia.jpg�/alcorn/2.2_UA50.114 copia.jpg�/alcorn/2.2_UA50.115 copia.jpg�/alcorn/2.2_UA50.116 copia.jpg�/alcorn/2.2_UA50.117 copia.jpg�/alcorn/2.2_UA50.118 copia.jpg�/alcorn/2.2_UA50.119 copia.jpg�/alcorn/2.2_UA50.120 copia.jpg�/alcorn/2.2_UA50.121 copia.jpg�/alcorn/2.2_UA50.122 copia.jpg�/alcorn/2.2_UA50.123 copia.jpg�/alcorn/2.2_UA50.124 copia.jpg�/alcorn/2.2_UA50.125 copia.jpg�/alcorn/2.2_UA50.126 copia.jpg�/alcorn/2.2_UA50.127 copia.jpg�/alcorn/2.2_UA50.128 copia.jpg</isattach>"));
}
static public boolean checkExt(String fileName) {
String extension = "." + StringUtils.substringAfterLast(fileName, ".");
if (!extension.equals("")) {
Iterator<String> itr = collectionExt.iterator();
while (itr.hasNext()) {
String element = itr.next();
if (extension.toLowerCase().indexOf(element) != -1) {
return true;
}
}
}
return false;
}
public static boolean isWindows() {
return (OS.indexOf("win") >= 0);
}
public static boolean isMac() {
return (OS.indexOf("mac") >= 0);
}
public static boolean isUnix() {
return (OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0);
}
public static boolean isSolaris() {
return (OS.indexOf("sunos") >= 0);
}
public static boolean isValidMD5(String s) {
return s.matches("[a-fA-F0-9]{32}");
}
public static boolean isValidSHA1(String s) {
return s.matches("[a-fA-F0-9]{40}");
}
public static String escapeJqueryName(String value) {
for (int i = 0; i < escapeCharacters.length(); i++) {
String replace = Character.toString(escapeCharacters.charAt(i));
if (value.contains(replace))
value = value.replace(replace, "\\\\" + replace);
}
return value;
}
public static String titleUrl(String urlStr, String encodeType, Integer maxChar) {
if (urlStr == null) {
return "";
}
// System.out.println("CommonUtils.titleUrl() maxChar " + maxChar);
if (maxChar == null) {
maxChar = 120;
}
if (encodeType == null) {
encodeType = "UTF-8";
}
try {
// System.out.println("1 "+urlStr);
urlStr = StringEscapeUtils.unescapeXml(urlStr);
// System.out.println("2 "+urlStr);
urlStr = deleteHTMLTag(urlStr, "");
// System.out.println("3 "+urlStr);
urlStr = StringUtils.abbreviate(urlStr, maxChar);
// System.out.println("4 "+urlStr);
urlStr = stripPunctuation(urlStr, '-');
// System.out.println("5 "+urlStr);
return URLEncoder.encode(String.valueOf(urlStr), encodeType);
} catch (Exception uee) {
return "";
}
}
public static String stripPunctuation(String s, char separator) {
StringBuilder sb = new StringBuilder();
char[] cs = s.toCharArray();
for (int i = 0; i < cs.length; i++) {
if (Character.isLetterOrDigit(cs[i])) {
sb.append(cs[i]);
} else {
if (sb.length() > 1 && sb.charAt(sb.length() - 1) != separator) {
if (Character.isSpaceChar(cs[i])) {
sb.append(separator);
}
}
}
}
return sb.toString();
}
public static String deleteHTMLTag(String str, String replacement) {
if (str == null) {
return "";
}
Matcher m = htmlTagPattern.matcher(str);
StringBuffer result = new StringBuffer();
while (m.find()) {
if (HTML.getTag(m.group(1).toLowerCase()) != null) {
m.appendReplacement(result, replacement);
}
}
m.appendTail(result);
return result.toString();
// for (HTML.Tag tag : HTML.getAllTags()) {
// if (str == null) {
// return "";
// }
// String regex = "<\\s*\\/?\\s*" + tag.toString() + "((\\s+.*?)|(\\s*))\\/?\\s*>";
// Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
// Matcher matcher = p.matcher(str);
// if (matcher.find()) {
// str = matcher.replaceAll(replacement);
// }
// // var pattern:RegExp = new RegExp("<\\s*\\/?\\s*"+tagsList[i]+"((\\s+.*?)|(\\s*))\\/?\\s*>", "gi");
// // htmlString = htmlString.replace(pattern, "");
// }
// return str;
}
public static String join(String sep, String... values) {
if (values == null || values.length == 0)
return "";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < values.length; i++) {
if (StringUtils.isBlank(values[i]))
continue;
sb.append(values[i]).append(sep);
}
if (sb.length() > 0) {
int sepidx = sb.length() - sep.length();
if (sb.substring(sepidx).equals(sep))
sb.delete(sepidx, sb.length());
}
return sb.toString();
}
public static String join(String sep, List<String> values) {
return join(sep, values.toArray(new String[values.size()]));
}
public static String joinMulti(String seps, String... values) {
if (values == null || values.length == 0)
return "";
StringBuilder sb = new StringBuilder();
Pattern p = Pattern.compile("[^\\\\]?\\((.*?[^\\\\]?)\\)");// revisare.. ce un bug.. esempio ( $\\) ) non prende il parentesi ma ( $\\)) si lo fa...
Matcher m = p.matcher(seps);
boolean found = m.find();
String lastGroup = null;
for (int i = 0; i < values.length; i++) {
if (StringUtils.isBlank(values[i]))
continue;
if (!found && lastGroup == null)
throw new RuntimeException("non ci sono sufficenti separatori");
try {
m.group(1);
lastGroup = m.group(1).replaceAll("\\\\\\)", ")").replaceAll("\\\\\\(", "(");
} catch (java.lang.IllegalStateException e) {
}
sb.append(values[i]).append(lastGroup);
found = m.find();
}
if (sb.length() > 0) {
int sepidx = sb.length() - lastGroup.length();
if (sb.substring(sepidx).equals(lastGroup))
sb.delete(sepidx, sb.length());
}
return sb.toString();
}
public static String joinMulti(String sep, List<String> values) {
return join(sep, values.toArray(new String[values.size()]));
}
public static String formatStringDate(String date, String from, String to) {
SimpleDateFormat formatter = new SimpleDateFormat(from);
SimpleDateFormat formatter_2 = new SimpleDateFormat(to, Locale.ITALIAN);
Date dataConvertita = null;
String dataString = "";
try {
dataConvertita = formatter.parse(date);
dataString = formatter_2.format(dataConvertita);
} catch (Exception e) {
// TODO
}
return dataString;
}
public static Map<String, String> buildMapFromRequestParameters(HttpServletRequest request) {
Map<String, String> valuesMap = new HashMap<String, String>();
for (Enumeration<String> e = request.getParameterNames(); e.hasMoreElements();) {
String name = e.nextElement();
valuesMap.put(name, request.getParameter(name));
}
return valuesMap;
}
public static Map<String, String> buildMapFromRequest(HttpServletRequest request) {
Map<String, String> valuesMap = new HashMap<String, String>();
for (Enumeration<String> e = request.getParameterNames(); e.hasMoreElements();) {
String name = e.nextElement();
valuesMap.put(name, request.getParameter(name));
}
for (Enumeration<Object> e = request.getAttributeNames(); e.hasMoreElements();) {
String name = e.nextElement().toString();
valuesMap.put(name, request.getAttribute(name).toString());
}
return valuesMap;
}
public static String GenericAdvIfNotEmpty(String templateString, String... strings) {
Map<String, String> valuesMap = new HashMap<String, String>();
String resolvedString = "";
try {
for (int i = 0; i < strings.length; i++) {
if (StringUtils.substringBetween(strings[i], "${", "}$") != null) {
// String labelVal = StringUtils.substringBetween(strings[i], "${", "}$");
String[] strings2 = StringUtils.substringsBetween(strings[i], "${", "}$");
String beforeVal = "";
String afterVal = "";
try {
beforeVal = strings2[0];
afterVal = strings2[1];
} catch (Exception e) {
// e.printStackTrace();
}
try {
// System.out.println("prim: "+strings[i]);
strings[i] = strings[i].replaceAll("\\$\\{.*?\\}\\$", "");
// System.out.println("dopo: "+strings[i]);
// System.out.println(labelVal);
} catch (Exception e) {
e.printStackTrace();
}
if (strings[i] != null && !strings[i].trim().equals("null") && !strings[i].trim().equals("")) {
// System.out.println("UtilityVari.AdvIfNotEmpty()");
strings[i] = beforeVal + strings[i] + afterVal;
}
}
if (strings[i] == null || strings[i].equals("null")) {
strings[i] = "";
}
valuesMap.put("" + (i) + "", strings[i]);
}
// System.out.println(valuesMap);
boolean isEmptyValue = true;
for (String string : valuesMap.values()) {
// System.out.println(string);
if (!string.equals("")) {
isEmptyValue = false;
break;
}
}
if (isEmptyValue) {
return "";
}
StrSubstitutor sub = new StrSubstitutor(valuesMap);
resolvedString = sub.replace(templateString);
} catch (Exception e) {
resolvedString = "";
}
return resolvedString;
}
}