/* * Copyright (C) 2020, University of the Basque Country (UPV/EHU) * Contact for licensing options: * * The original file was part of Open Source IMSDROID * Copyright (C) 2010-2011, Mamadou Diop. * Copyright (C) 2011, Doubango Telecom. * * * Contact: Mamadou Diop * * This file is part of Open Source Doubango Framework. * * This is free software: you can redistribute it and/or modify it under the terms of * the GNU General Public License as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * This is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.doubango.ngn.utils; import java.math.BigInteger; import java.security.MessageDigest; public class NgnStringUtils { private static MessageDigest sMD5Digest; public static String emptyValue(){ return ""; } public static String nullValue(){ return "(null)"; } public static boolean isNullOrEmpty(String s){ return ((s == null) || ("".equals(s))); } public static boolean startsWith(String s, String prefix, boolean ignoreCase){ if(s != null && prefix != null){ if(ignoreCase){ return s.toLowerCase().startsWith(prefix.toLowerCase()); } else{ return s.startsWith(prefix); } } return s==null && prefix==null; } public static boolean equals(String s1, String s2, boolean ignoreCase){ if(s1 != null && s2 != null){ if(ignoreCase){ return s1.equalsIgnoreCase(s2); } else{ return s1.equals(s2); } } else{ return ((s1 == null && s2 == null)? true : false); } } public static String unquote(String s, String quote){ if(!NgnStringUtils.isNullOrEmpty(s) && !NgnStringUtils.isNullOrEmpty(quote)){ if(s.startsWith(quote) && s.endsWith(quote)){ return s.substring(1, s.length()-quote.length()); } } return s; } public static String quote(String s, String quote){ if(!NgnStringUtils.isNullOrEmpty(s) && !NgnStringUtils.isNullOrEmpty(quote)){ return quote.concat(s).concat(quote); } return s; } public static long parseLong(String value, long defaultValue){ try{ if(NgnStringUtils.isNullOrEmpty(value)){ return defaultValue; } return Long.parseLong(value); } catch(NumberFormatException e){ e.printStackTrace(); } return defaultValue; } public static int parseInt(String value, int defaultValue){ try{ if(NgnStringUtils.isNullOrEmpty(value)){ return defaultValue; } return Integer.parseInt(value); } catch(NumberFormatException e){ e.printStackTrace(); } return defaultValue; } public static String getMD5(String str){ if(str != null){ try{ final BigInteger bigInt; if(sMD5Digest == null){ sMD5Digest = MessageDigest.getInstance("MD5"); } synchronized (sMD5Digest) { sMD5Digest.reset(); bigInt = new BigInteger(1, sMD5Digest.digest(str.getBytes("UTF-8"))); } String hash = bigInt.toString(16); while(hash.length() < 32 ){ hash = "0" + hash; } return hash; } catch(Exception e){ e.printStackTrace(); return null; } } return null; } public static byte[] getMD5Digest(String str){ if(str != null){ try{ if(sMD5Digest == null){ sMD5Digest = MessageDigest.getInstance("MD5"); } synchronized (sMD5Digest) { sMD5Digest.reset(); return sMD5Digest.digest(str.getBytes("UTF-8")); } } catch(Exception e){ e.printStackTrace(); return null; } } return null; } public static boolean isValidMD5String(String md5String){ if(md5String != null){ return md5String.length() == 32; } return false; } }