package at.gv.egovernment.moa.id.configuration.validation; import java.net.MalformedURLException; import java.net.URL; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.log4j.Logger; public class ValidationHelper { private static final Logger log = Logger.getLogger(ValidationHelper.class); public static boolean validateOAID(String oaIDObj) { if (oaIDObj != null) { try { long oaID = Long.valueOf(oaIDObj); if (oaID > 0 && oaID < Long.MAX_VALUE) return true; } catch (Throwable t) { log.warn("No valid DataBase OAID received! " + oaIDObj); } } return false; } public static boolean validateNumber(String value) { log.debug("Validate Number " + value); try { float num = Float.valueOf(value); return true; } catch (NumberFormatException e) { return false; } } public static boolean validateURL(String urlString) { log.debug("Validate URL " + urlString); if (urlString.startsWith("http") || urlString.startsWith("https")) { try { URL url =new URL(urlString); return true; } catch (MalformedURLException e) { } } return false; } public static boolean isValidTarget(String target) { log.debug("Ueberpruefe Parameter Target"); Pattern pattern = Pattern.compile("[a-zA-Z-]{1,5}"); Matcher matcher = pattern.matcher(target); boolean b = matcher.matches(); if (b) { log.debug("Parameter Target erfolgreich ueberprueft"); return true; } else { log.error("Fehler Ueberpruefung Parameter Target. Target entspricht nicht den Kriterien (nur Zeichen a-z, A-Z und -, sowie 1-5 Zeichen lang)"); return false; } } public static boolean isValidSourceID(String sourceID) { log.debug("Ueberpruefe Parameter sourceID"); Pattern pattern = Pattern.compile("[\\w-_]{1,20}"); Matcher matcher = pattern.matcher(sourceID); boolean b = matcher.matches(); if (b) { log.debug("Parameter sourceID erfolgreich ueberprueft"); return true; } else { log.error("Fehler Ueberpruefung Parameter sourceID. SourceID entspricht nicht den Kriterien (nur Zeichen a-z, A-Z, - und _, sowie 1-20 Zeichen lang)"); return false; } } public static boolean isDateFormat(String dateString) { SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); try { sdf.parse(dateString); return true; } catch (ParseException e) { return false; } } public static boolean isEmailAddressFormat(String address) { if (address == null) { return false; } return Pattern.compile("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$").matcher(address).matches(); } public static boolean isValidOAIdentifier(String param) { if (param == null) { return false; } return param.indexOf(";") != -1 || param.indexOf("%") != -1 || param.indexOf("\"") != -1 || param.indexOf("'") != -1 || param.indexOf("?") != -1 || param.indexOf("`") != -1 || param.indexOf(",") != -1 || param.indexOf("<") != -1 || param.indexOf(">") != -1 || param.indexOf("\\") != -1; } public static String getNotValidOAIdentifierCharacters() { return "; % \" ' ` , < > \\"; } public static boolean containsPotentialCSSCharacter(String param, boolean commaallowed) { if (param == null) { return false; } return param.indexOf(";") != -1 || param.indexOf("%") != -1 || param.indexOf("\"") != -1 || param.indexOf("'") != -1 || param.indexOf("?") != -1 || param.indexOf("`") != -1 || ( param.indexOf(",") != -1 && !commaallowed ) || param.indexOf("<") != -1 || param.indexOf(">") != -1 || param.indexOf("\\") != -1 || param.indexOf("/") != -1; } public static String getPotentialCSSCharacter(boolean commaallowed) { if (commaallowed) return "; % \" ' ` < > \\ /"; else return "; % \" ' ` , < > \\ /"; } }