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.
tasks/app/src/main/java/org/tasks/backup/XmlReader.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);
}
}
}