From 1e4c579f55d3d56529a3863f9bde0bfe470011be Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Thu, 19 Mar 2015 17:22:50 -0700 Subject: #472 Un-normalize dates for Subsonic 5.1+ --- src/github/daneren2005/dsub/domain/Bookmark.java | 6 ++++ src/github/daneren2005/dsub/domain/Share.java | 9 ++++++ .../dsub/service/parser/BookmarkParser.java | 31 +++++++++++++++++--- .../dsub/service/parser/ShareParser.java | 34 ++++++++++++++++++++-- 4 files changed, 73 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/domain/Bookmark.java b/src/github/daneren2005/dsub/domain/Bookmark.java index 4a86b1bd..df3535d0 100644 --- a/src/github/daneren2005/dsub/domain/Bookmark.java +++ b/src/github/daneren2005/dsub/domain/Bookmark.java @@ -80,6 +80,9 @@ public class Bookmark implements Serializable { this.created = null; } } + public void setCreated(Date created) { + this.created = created; + } public Date getChanged() { return changed; @@ -96,4 +99,7 @@ public class Bookmark implements Serializable { this.changed = null; } } + public void setChanged(Date changed) { + this.changed = changed; + } } diff --git a/src/github/daneren2005/dsub/domain/Share.java b/src/github/daneren2005/dsub/domain/Share.java index 31ab7b8d..aa22956d 100644 --- a/src/github/daneren2005/dsub/domain/Share.java +++ b/src/github/daneren2005/dsub/domain/Share.java @@ -97,6 +97,9 @@ public class Share implements Serializable { this.created = null; } } + public void setCreated(Date created) { + this.created = created; + } public Date getLastVisited() { return lastVisited; @@ -113,6 +116,9 @@ public class Share implements Serializable { this.lastVisited = null; } } + public void setLastVisited(Date lastVisited) { + this.lastVisited = lastVisited; + } public Date getExpires() { return expires; @@ -129,6 +135,9 @@ public class Share implements Serializable { this.expires = null; } } + public void setExpires(Date expires) { + this.expires = expires; + } public Long getVisitCount() { return visitCount; diff --git a/src/github/daneren2005/dsub/service/parser/BookmarkParser.java b/src/github/daneren2005/dsub/service/parser/BookmarkParser.java index 332172a3..8e04749c 100644 --- a/src/github/daneren2005/dsub/service/parser/BookmarkParser.java +++ b/src/github/daneren2005/dsub/service/parser/BookmarkParser.java @@ -22,11 +22,17 @@ import android.content.Context; import github.daneren2005.dsub.R; import github.daneren2005.dsub.domain.Bookmark; import github.daneren2005.dsub.domain.MusicDirectory; +import github.daneren2005.dsub.domain.ServerInfo; import github.daneren2005.dsub.util.ProgressListener; import org.xmlpull.v1.XmlPullParser; import java.io.Reader; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Locale; +import java.util.TimeZone; /** * @author Scott Jackson @@ -42,8 +48,14 @@ public class BookmarkParser extends MusicDirectoryEntryParser { List bookmarks = new ArrayList(); Bookmark bookmark = null; int eventType; - - do { + + boolean isDateNormalized = ServerInfo.checkServerVersion(context, "1.11"); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH); + if(isDateNormalized) { + dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + } + + do { eventType = nextParseEvent(); if (eventType == XmlPullParser.START_TAG) { @@ -51,8 +63,19 @@ public class BookmarkParser extends MusicDirectoryEntryParser { if ("bookmark".equals(name)) { bookmark = new Bookmark(); - bookmark.setChanged(get("changed")); - bookmark.setCreated(get("created")); + + try { + bookmark.setCreated(dateFormat.parse(get("created"))); + } catch (Exception e) { + bookmark.setCreated((Date) null); + } + + try { + bookmark.setChanged(dateFormat.parse(get("changed"))); + } catch (Exception e) { + bookmark.setChanged((Date) null); + } + bookmark.setComment(get("comment")); bookmark.setPosition(getInteger("position")); bookmark.setUsername(get("username")); diff --git a/src/github/daneren2005/dsub/service/parser/ShareParser.java b/src/github/daneren2005/dsub/service/parser/ShareParser.java index e18e1414..fdad8375 100644 --- a/src/github/daneren2005/dsub/service/parser/ShareParser.java +++ b/src/github/daneren2005/dsub/service/parser/ShareParser.java @@ -22,6 +22,7 @@ import android.content.Context; import android.content.SharedPreferences; import github.daneren2005.dsub.R; +import github.daneren2005.dsub.domain.ServerInfo; import github.daneren2005.dsub.domain.Share; import github.daneren2005.dsub.util.Constants; import github.daneren2005.dsub.util.ProgressListener; @@ -29,8 +30,13 @@ import github.daneren2005.dsub.util.Util; import org.xmlpull.v1.XmlPullParser; import java.io.Reader; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Locale; +import java.util.TimeZone; /** * @author Joshua Bahnsen @@ -56,6 +62,12 @@ public class ShareParser extends MusicDirectoryEntryParser { serverUrl += '/'; } serverUrl += "share/"; + + boolean isDateNormalized = ServerInfo.checkServerVersion(context, "1.11"); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH); + if(isDateNormalized) { + dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + } do { eventType = nextParseEvent(); @@ -65,12 +77,28 @@ public class ShareParser extends MusicDirectoryEntryParser { if ("share".equals(name)) { share = new Share(); - share.setCreated(get("created")); + + try { + share.setCreated(dateFormat.parse(get("created"))); + } catch (Exception e) { + share.setCreated((Date) null); + } share.setUrl(get("url").replaceFirst(".*/([^/?]+).*", serverUrl + "$1")); share.setDescription(get("description")); - share.setExpires(get("expires")); + + try { + share.setExpires(dateFormat.parse(get("expires"))); + } catch (Exception e) { + share.setExpires((Date) null); + } share.setId(get("id")); - share.setLastVisited(get("lastVisited")); + + try { + share.setLastVisited(dateFormat.parse(get("lastVisited"))); + } catch (Exception e) { + share.setLastVisited((Date) null); + } + share.setUsername(get("username")); share.setVisitCount(getLong("visitCount")); dir.add(share); -- cgit v1.2.3