/* * Copyright 2011 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.android.apps.iosched.io.gdocs.util; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import android.text.format.DateUtils; import java.io.IOException; import static com.google.android.apps.iosched.io.gdocs.util.ParserUtils.AtomTags.HREF; import static com.google.android.apps.iosched.io.gdocs.util.ParserUtils.AtomTags.LINK; import static com.google.android.apps.iosched.io.gdocs.util.ParserUtils.AtomTags.REL; import static com.google.android.apps.iosched.io.gdocs.util.ParserUtils.AtomTags.TITLE; import static com.google.android.apps.iosched.io.gdocs.util.ParserUtils.AtomTags.UPDATED; import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT; import static org.xmlpull.v1.XmlPullParser.END_TAG; import static org.xmlpull.v1.XmlPullParser.START_TAG; import static org.xmlpull.v1.XmlPullParser.TEXT; public class WorksheetEntry { private static final String REL_LISTFEED = "http://schemas.google.com/spreadsheets/2006#listfeed"; private long mUpdated; private String mTitle; private String mListFeed; public long getUpdated() { return mUpdated; } public String getTitle() { return mTitle; } public String getListFeed() { return mListFeed; } @Override public String toString() { return "title=" + mTitle + ", updated=" + mUpdated + " (" + DateUtils.getRelativeTimeSpanString(mUpdated) + ")"; } public static WorksheetEntry fromParser(XmlPullParser parser) throws XmlPullParserException, IOException { final int depth = parser.getDepth(); final WorksheetEntry entry = new WorksheetEntry(); String tag = null; int type; while (((type = parser.next()) != END_TAG || parser.getDepth() > depth) && type != END_DOCUMENT) { if (type == START_TAG) { tag = parser.getName(); if (LINK.equals(tag)) { final String rel = parser.getAttributeValue(null, REL); final String href = parser.getAttributeValue(null, HREF); if (REL_LISTFEED.equals(rel)) { entry.mListFeed = href; } } } else if (type == END_TAG) { tag = null; } else if (type == TEXT) { final String text = parser.getText(); if (TITLE.equals(tag)) { entry.mTitle = text; } else if (UPDATED.equals(tag)) { entry.mUpdated = ParserUtils.parseTime(text); } } } return entry; } }