package eu.smartlm.abs.portal.util; import java.text.DateFormat; import java.text.Format; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.HashSet; import java.util.Set; import java.util.StringTokenizer; import eu.smartlm.abs.portal.view.data.ABSQuery; /** * Collection of repetitive string parse methods for the Portal * @author David García Pérez - CESGA * */ public class StringUtil { public static String MARKER = "#######################"; /** * Takes a list of strings and gives back an unique string containing all the strings putting * a blank space between them * @param listOfStrings * @return */ public static String listToString(Set listOfStrings) { String result = ""; for(String piece : listOfStrings) { result = result + " " + piece; } // We remove the first blank space if(result.length() > 1) result = result.substring(1); return result; } public static String listToStringWithMarker(Set listOfStrings) { String result = ""; for(String piece : listOfStrings) { result = result + MARKER + piece; } // We remove the first blank space if(result.length() > 1) result = result.substring(MARKER.length()); return result; } /** * Takes a list of strings and gives back an unique string containing all the strings putting * a comma space between them * @param listOfStrings * @return */ public static String listToStringWithCommas(Set listOfStrings) { String result = ""; for(String piece : listOfStrings) { result = result + ", " + piece; } // We remove the first blank space if(result.length() > 2) result = result.substring(2); return result; } /** * Takes a string separated by spaces and converts it back to a list of strings * @param toBeParsed String to be converted to a list of strings * @return */ public static Set stringToList(String toBeParsed) { Set result = new HashSet(); String pattern = " "; String[] fields = toBeParsed.split(pattern); for(int i = 0; i < fields.length; i++) { if(fields[i] != "") result.add(fields[i]); } Set toRemove = new HashSet(); for(String text : result) { if(text.equals("")) toRemove.add(text); } result.removeAll(toRemove); return result; } /** * Takes a string separated by spaces and converts it back to a list of strings * @param toBeParsed String to be converted to a list of strings * @return */ public static Set stringToListWithMarker(String toBeParsed) { Set result = new HashSet(); String pattern = MARKER; String[] fields = toBeParsed.split(pattern); for(int i = 0; i < fields.length; i++) { if(fields[i] != "") result.add(fields[i]); } Set toRemove = new HashSet(); for(String text : result) { if(text.equals("")) toRemove.add(text); } result.removeAll(toRemove); return result; } /** * Parses a Date from the main webpage to a Java.util.Date * @param date String to be parsed * @param add24 adds 24 hours to the date * @return the date object */ public static Date getDate(String date, boolean add24) { try { // Parse with a custom format DateFormat formatter = new SimpleDateFormat(ABSQuery.DATE_FORMAT); Date newDate = (Date) formatter.parse(date); System.out.println("DATE 1 - " + newDate); if(add24) { Calendar calendar = new GregorianCalendar(); calendar.setTime(newDate); calendar.add(Calendar.HOUR, 23); calendar.add(Calendar.MINUTE, 59); calendar.add(Calendar.SECOND, 59); newDate = calendar.getTime(); } System.out.println("DATE 2 - " + newDate); return newDate; } catch (ParseException e) { return new Date(); } } /** * String list copy * @param originalList Original list to be copied * @return a copied list */ public static Set copyStringList(Set originalList) { Set copyList = new HashSet(); for(String string : originalList) copyList.add(string); return copyList; } public static String removeSpaces(String s) { StringTokenizer st = new StringTokenizer(s," ",false); String t=""; while (st.hasMoreElements()) t += st.nextElement(); return t; } public static String sortString(String toSort) { String result = ""; StringTokenizer st = new StringTokenizer(toSort); while (st.hasMoreTokens()) { String token = st.nextToken(); if(token.length() > 20) token = token.substring(0, 12) + "..."; result = result + " " + token; } return result.substring(1, result.length()); } public static String dateToString(Date date) { Format formatter = new SimpleDateFormat(ABSQuery.DATE_FORMAT); return formatter.format(date); } }