mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
3.2 KiB
Java
121 lines
3.2 KiB
Java
14 years ago
|
/*
|
||
|
* Copyright 2007, MetaDimensional Technologies Inc.
|
||
|
*
|
||
|
*
|
||
|
* This file is part of the RememberTheMilk Java API.
|
||
|
*
|
||
|
* The RememberTheMilk Java API is free software; you can redistribute it
|
||
|
* and/or modify it under the terms of the GNU Lesser General Public License
|
||
|
* as published by the Free Software Foundation; either version 3 of the
|
||
|
* License, or (at your option) any later version.
|
||
|
*
|
||
|
* The RememberTheMilk Java API 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 Lesser
|
||
|
* General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU Lesser General Public License
|
||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||
|
*/
|
||
|
package org.weloveastrid.rmilk.api.data;
|
||
|
|
||
|
import java.text.DateFormat;
|
||
|
import java.text.ParseException;
|
||
|
import java.text.SimpleDateFormat;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.Date;
|
||
|
import java.util.List;
|
||
|
import java.util.TimeZone;
|
||
|
|
||
|
import org.w3c.dom.Element;
|
||
|
import org.w3c.dom.Node;
|
||
|
import org.w3c.dom.NodeList;
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @author Will Ross Jun 21, 2007
|
||
|
*/
|
||
|
@SuppressWarnings("nls")
|
||
|
public abstract class RtmData
|
||
|
{
|
||
|
|
||
|
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
|
||
|
|
||
|
public RtmData() {
|
||
|
//
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* The method is not optimized at most, but circumvents a bug in Android runtime.
|
||
|
*/
|
||
|
public static Element child(Element elt, String nodeName)
|
||
|
{
|
||
|
NodeList childNodes = elt.getChildNodes();
|
||
|
for (int index = 0; index < childNodes.getLength(); index++)
|
||
|
{
|
||
|
Node child = childNodes.item(index);
|
||
|
if (child.getNodeType() == Node.ELEMENT_NODE && child.getNodeName().equals(nodeName))
|
||
|
{
|
||
|
return (Element) child;
|
||
|
}
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* The method is not optimized at most, but circumvents a bug in Android runtime.
|
||
|
*/
|
||
|
public static List<Element> children(Element elt, String nodeName)
|
||
|
{
|
||
|
List<Element> result = new ArrayList<Element>();
|
||
|
NodeList childNodes = elt.getChildNodes();
|
||
|
for (int index = 0; index < childNodes.getLength(); index++)
|
||
|
{
|
||
|
Node child = childNodes.item(index);
|
||
|
if (child.getNodeType() == Node.ELEMENT_NODE && child.getNodeName().equals(nodeName))
|
||
|
{
|
||
|
result.add((Element) child);
|
||
|
}
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
protected String text(Element elt)
|
||
|
{
|
||
|
StringBuilder result = new StringBuilder();
|
||
|
Node child = elt.getFirstChild();
|
||
|
while (child != null)
|
||
|
{
|
||
|
switch (child.getNodeType())
|
||
|
{
|
||
|
case Node.TEXT_NODE:
|
||
|
case Node.CDATA_SECTION_NODE:
|
||
|
result.append(child.getNodeValue());
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
child = child.getNextSibling();
|
||
|
}
|
||
|
return result.toString();
|
||
|
}
|
||
|
|
||
|
public synchronized static Date parseDate(String s)
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
Date d = DATE_FORMAT.parse(s);
|
||
|
return new Date(d.getTime() + TimeZone.getDefault().getOffset(d.getTime()));
|
||
|
}
|
||
|
catch (ParseException e)
|
||
|
{
|
||
|
throw new RuntimeException(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public synchronized static String formatDate(Date d)
|
||
|
{
|
||
|
return DATE_FORMAT.format(new Date(d.getTime() - TimeZone.getDefault().getOffset(d.getTime()))) + "Z";
|
||
|
}
|
||
|
}
|