Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9af57b47 authored by David A. Velasco's avatar David A. Velasco
Browse files

Back to save cached SimpleDateFormat instances to parse dates from server, to...

Back to save cached SimpleDateFormat instances to parse dates from server, to avoid huge performance problem in Android 2.x devices
parent 0f23df1b
Loading
Loading
Loading
Loading
+17 −10
Original line number Diff line number Diff line
@@ -35,15 +35,17 @@ import android.net.Uri;
public class WebdavUtils {
    public static final SimpleDateFormat DISPLAY_DATE_FORMAT = new SimpleDateFormat(
            "dd.MM.yyyy hh:mm");
    private static final String DATETIME_FORMATS[] = {
            "yyyy-MM-dd'T'HH:mm:ss'Z'",
            "EEE, dd MMM yyyy HH:mm:ss zzz",
            "yyyy-MM-dd'T'HH:mm:ss.sss'Z'",
            "yyyy-MM-dd'T'HH:mm:ssZ",
            "EEE MMM dd HH:mm:ss zzz yyyy",
            "EEEEEE, dd-MMM-yy HH:mm:ss zzz",
            "EEE MMMM d HH:mm:ss yyyy",
            "yyyy-MM-dd hh:mm:ss" };
    
    private static final SimpleDateFormat DATETIME_FORMATS[] = {
    	new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US),
    	new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US),	
		new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sss'Z'", Locale.US),
		new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US),
		new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US),
		new SimpleDateFormat("EEEEEE, dd-MMM-yy HH:mm:ss zzz", Locale.US),
		new SimpleDateFormat("EEE MMMM d HH:mm:ss yyyy", Locale.US),
		new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.US)
	};

    public static String prepareXmlForPropFind() {
        String ret = "<?xml version=\"1.0\" ?><D:propfind xmlns:D=\"DAV:\"><D:allprop/></D:propfind>";
@@ -56,11 +58,16 @@ public class WebdavUtils {

    public static Date parseResponseDate(String date) {
        Date returnDate = null;
        SimpleDateFormat format = null;
        for (int i = 0; i < DATETIME_FORMATS.length; ++i) {
            try {
                returnDate = new SimpleDateFormat (DATETIME_FORMATS[i], Locale.US).parse(date);
            	format = DATETIME_FORMATS[i];
            	synchronized(format) {
            		returnDate = format.parse(date);
            	}
                return returnDate;
            } catch (ParseException e) {
            	// this is not the format
            }
        }
        return null;