Search in sources :

Example 1 with Result

use of com.codename1.rad.processing.Result in project CodeRAD by shannah.

the class ResultParser method parse.

/**
 * Parses a list of Maps or Elements into an EntityList.
 * @param rows The rows to parse.
 * @param out The entity list to append to.
 * @return The resulting entity list (same as input parameter).
 * @throws IOException If parsing failed.
 */
public EntityList parse(List rows, EntityList out) throws IOException {
    for (Object row : rows) {
        Entity rowEntity = null;
        rowEntity = EntityType.createEntityForClass(out.getRowType().getEntityClass());
        if (rowEntity == null) {
            rowEntity = out.getRowType().newInstance();
        }
        Result rowResult;
        if (row instanceof Element) {
            rowResult = Result.fromContent((Element) row);
        } else if (row instanceof Map) {
            rowResult = Result.fromContent((Map) row);
        } else {
            throw new IOException("Row type " + row.getClass() + " not supported.  Expected Map or Element.");
        }
        Entity parsed = parseRow(rowResult, rowEntity);
        if (parsed != null) {
            out.add(parsed);
        }
    }
    return out;
}
Also used : Entity(com.codename1.rad.models.Entity) Element(com.codename1.xml.Element) HashMap(java.util.HashMap) Map(java.util.Map) Result(com.codename1.rad.processing.Result)

Example 2 with Result

use of com.codename1.rad.processing.Result in project CodeRAD by shannah.

the class ResultParser method createGetter.

/**
 * Creates a getter for a given property.
 * @param property
 * @return
 */
private static Getter createGetter(Property property) {
    Getter getter = null;
    ContentType propType = property.getContentType();
    if (propType == ContentType.BooleanType) {
        getter = (rs, sel) -> {
            return rs.getAsBoolean(sel);
        };
    } else if (propType == ContentType.DateType) {
        getter = (rs, sel) -> {
            return rs.getAsString(sel);
        };
    } else if (propType == ContentType.DoubleType || propType == ContentType.FloatType) {
        getter = (rs, sel) -> {
            return rs.getAsDouble(sel);
        };
    } else if (propType == ContentType.IntegerType) {
        getter = (rs, sel) -> {
            return rs.getAsInteger(sel);
        };
    } else if (propType == ContentType.LongType) {
        getter = (rs, sel) -> {
            return rs.getAsLong(sel);
        };
    } else if (propType == ContentType.Text) {
        getter = (rs, sel) -> {
            return rs.getAsString(sel);
        };
    } else if (propType.isEntityList()) {
        getter = (rs, sel) -> {
            try {
                return rs.getAsArray(sel);
            } catch (Throwable t) {
                Log.p("Failed to get selector " + sel + " from result " + rs);
                Log.e(t);
                return null;
            }
        };
    } else if (propType.isEntity()) {
        getter = (rs, sel) -> {
            return rs.get(sel);
        };
    }
    return getter;
}
Also used : EntityType(com.codename1.rad.models.EntityType) SimpleDateFormat(com.codename1.l10n.SimpleDateFormat) CharArrayReader(com.codename1.io.CharArrayReader) Date(java.util.Date) EntityList(com.codename1.rad.models.EntityList) HashMap(java.util.HashMap) Element(com.codename1.xml.Element) JSONParser(com.codename1.io.JSONParser) Log(com.codename1.io.Log) ParseException(com.codename1.l10n.ParseException) ArrayList(java.util.ArrayList) List(java.util.List) java.io(java.io) Map(java.util.Map) EntityProperty(com.codename1.rad.models.EntityProperty) Result(com.codename1.rad.processing.Result) Entity(com.codename1.rad.models.Entity) EntityFactory(com.codename1.rad.models.EntityFactory) Tag(com.codename1.rad.models.Tag) ContentType(com.codename1.rad.models.ContentType) Property(com.codename1.rad.models.Property) ContentType(com.codename1.rad.models.ContentType)

Example 3 with Result

use of com.codename1.rad.processing.Result in project CodeRAD by shannah.

the class ResultParser method parseJSON.

public EntityList parseJSON(Reader json, EntityList dest, EntityType rowType) throws IOException {
    JSONParser jsonParser = new JSONParser();
    Map result = jsonParser.parseJSON(json);
    List list = (List) result.get("root");
    dest.setRowType(entityType);
    parse(list, dest);
    return dest;
}
Also used : JSONParser(com.codename1.io.JSONParser) EntityList(com.codename1.rad.models.EntityList) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) Map(java.util.Map)

Example 4 with Result

use of com.codename1.rad.processing.Result in project CodeRAD by shannah.

the class ResultParserTest method testGetTagBodyAsString.

private void testGetTagBodyAsString() throws Exception {
    String xml = "<?xml version=\"1.0\"?>\n<content>This is text content</content>";
    Result r = Result.fromContent(xml, Result.XML);
    String content = "This is text content";
    assertEqual(content, r.getAsString("/content"));
    assertEqual(content, r.getAsString("/content/text()"));
    assertEqual(content, r.get("/content/text()"));
    assertEqual(content, r.getAsString("./text()"));
    assertEqual(content, r.getAsString("."));
    xml = "<?xml version=\"1.0\"?>\n<a><b><c>Hello</c><d>World</d></b</a>";
    r = Result.fromContent(xml, Result.XML);
    assertEqual("Hello", r.getAsString("./b/c"));
    assertEqual("World", r.getAsString("./b/d"));
    assertEqual("Hello", r.getAsString("/a/b/c"));
    assertEqual("Hello", r.getAsString("//a/b/c"));
    assertEqual("Hello", r.get("./b/c/text()"));
}
Also used : Result(com.codename1.rad.processing.Result)

Example 5 with Result

use of com.codename1.rad.processing.Result in project CodeRAD by shannah.

the class ElementSelector method getDate.

/**
 * Gets a date value on this selector.  This uses a notation that allows you to target
 * the current result, or a subselection.
 * @param key The key.  E.g. "@attname" for attribute.  "tagname" for subtag.  "subselector/@attname", "subselector/tagname"
 * @param formats DateFormats to attempt to parse date with.
 * @return
 */
public Date getDate(String key, DateFormat... formats) {
    String o = getString(key, null);
    if (o == null) {
        return null;
    }
    String strval = String.valueOf(o);
    if (strval.isEmpty()) {
        return null;
    }
    for (DateFormat fmt : formats) {
        try {
            return fmt.parse(strval);
        } catch (Throwable t) {
        }
    }
    throw new RuntimeException("Failed to parse key " + key + " value " + o + " using any of the provided date formatters.");
}
Also used : DateFormat(com.codename1.l10n.DateFormat)

Aggregations

IOException (java.io.IOException)19 ArrayList (java.util.ArrayList)14 Form (com.codename1.ui.Form)12 Button (com.codename1.ui.Button)11 Map (java.util.Map)9 Date (java.util.Date)8 HashMap (java.util.HashMap)8 Label (com.codename1.ui.Label)7 BorderLayout (com.codename1.ui.layouts.BorderLayout)7 List (java.util.List)7 Container (com.codename1.ui.Container)6 ByteArrayInputStream (java.io.ByteArrayInputStream)6 OutputStream (java.io.OutputStream)6 JSONParser (com.codename1.io.JSONParser)5 Result (com.codename1.rad.processing.Result)5 ActionEvent (com.codename1.ui.events.ActionEvent)5 File (java.io.File)5 Cursor (com.codename1.db.Cursor)4 ConnectionRequest (com.codename1.io.ConnectionRequest)4 Entity (com.codename1.rad.models.Entity)4