// skip id(0)
long v = parseLongSafe(values.get(1)); // verify version - don't update older version
if (version > 0) if (v < version) return;
version = v;
if ("-".equals(values.get(2))) _modified = null;
else _modified = new Time(values.get(2),TSFORMAT);
for (int i = 3; i < flds.size(); i++) {
String val = null;
try {
val = values.get(i);
} catch (Exception e) {
log.error("ERROR: " + e);
log.error(" " + join(flds) + " = " + join(values));
}
//log.debug("parse " + id() +": "+ flds.get(i) + "=" + val);
if (empty(val)) continue;
String fld = flds.get(i);
Field f = fld(fld);
if (val.equals(""+NULLCHAR)) val = null;
Object o = null;
if (f.getAnnotation(Fld.class) != null) {
if (val != null) {
if (f.getType() == Time.class) {
o = new Time(val,TSFORMAT);
} else if (f.getType() == Money.class) {
o = new Money(parseIntSafe(val));
} else if (f.getType() == String.class) {
if (val.equals(""+NULLCHAR+NULLCHAR)) val = ""+NULLCHAR;
o = val;