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.
68 lines
1.8 KiB
Java
68 lines
1.8 KiB
Java
package org.tasks.backup;
|
|
|
|
import com.todoroo.astrid.backup.TasksXmlExporter;
|
|
|
|
import org.xmlpull.v1.XmlPullParser;
|
|
|
|
import static com.todoroo.astrid.backup.TasksXmlExporter.XML_NULL;
|
|
|
|
public class XmlReader {
|
|
|
|
public interface ValueWriter<T> {
|
|
void write(T value);
|
|
}
|
|
|
|
private final XmlPullParser xpp;
|
|
|
|
public XmlReader(XmlPullParser xpp) {
|
|
this.xpp = xpp;
|
|
}
|
|
|
|
public Long readLong(String name) {
|
|
String value = xpp.getAttributeValue(null, name);
|
|
return value == null || XML_NULL.equals(value) ? null : Long.parseLong(value);
|
|
}
|
|
|
|
public void readLong(String name, ValueWriter<Long> writer) {
|
|
Long value = readLong(name);
|
|
if(value != null) {
|
|
writer.write(value);
|
|
}
|
|
}
|
|
|
|
public Integer readInteger(String name) {
|
|
String value = xpp.getAttributeValue(null, name);
|
|
return value == null || XML_NULL.equals(value) ? null : Integer.parseInt(value);
|
|
}
|
|
|
|
public void readInteger(String name, ValueWriter<Integer> writer) {
|
|
Integer value = readInteger(name);
|
|
if(value != null) {
|
|
writer.write(value);
|
|
}
|
|
}
|
|
|
|
public String readString(String name) {
|
|
return xpp.getAttributeValue(null, name);
|
|
}
|
|
|
|
public void readString(String name, ValueWriter<String> writer) {
|
|
String value = readString(name);
|
|
if (value != null) {
|
|
writer.write(value);
|
|
}
|
|
}
|
|
|
|
public Double readDouble(String name) {
|
|
String value = xpp.getAttributeValue(null, name);
|
|
return value == null || XML_NULL.equals(value) ? null : Double.parseDouble(value);
|
|
}
|
|
|
|
public void readDouble(String name, ValueWriter<Double> writer) {
|
|
Double value = readDouble(name);
|
|
if (value != null) {
|
|
writer.write(value);
|
|
}
|
|
}
|
|
}
|