Search in sources :

Example 6 with SIPNode

use of com.virjar.sipsoup.model.SIPNode in project vscrawler by virjar.

the class Converters method registerString.

private static void registerString() {
    register(StringNode.class, StringNode.class, new NodeConvert<StringNode, StringNode>() {

        @Override
        public StringNode convert(StringNode from) {
            return from;
        }
    });
    register(JsonNode.class, StringNode.class, new NodeConvert<JsonNode, StringNode>() {

        private List<String> genDefault(List<JSON> fromModel) {
            return Lists.transform(fromModel, new Function<JSON, String>() {

                @Override
                public String apply(JSON input) {
                    return input.toJSONString();
                }
            });
        }

        @Override
        public StringNode convert(JsonNode from) {
            StringNode ret = new StringNode(from.getBaseUrl(), null);
            List<String> tempRet = Lists.newLinkedList();
            List<JSON> fromModel = from.createOrGetModel();
            for (JSON json : fromModel) {
                if (json instanceof JSONArray) {
                    JSONArray jsonArray = (JSONArray) json;
                    for (Object o : jsonArray) {
                        if (o instanceof CharSequence) {
                            tempRet.add(o.toString());
                        } else {
                            ret.setModel(genDefault(fromModel));
                            return ret;
                        }
                    }
                } else {
                    ret.setModel(genDefault(fromModel));
                    return ret;
                }
            }
            ret.setModel(tempRet);
            return ret;
        }
    });
    register(RawNode.class, StringNode.class, new NodeConvert<RawNode, StringNode>() {

        @Override
        public StringNode convert(RawNode from) {
            return new StringNode(from.getBaseUrl(), from.createOrGetModel());
        }
    });
    register(XpathNode.class, StringNode.class, new NodeConvert<XpathNode, StringNode>() {

        @Override
        public StringNode convert(XpathNode from) {
            StringNode ret = new StringNode(from.getBaseUrl(), null);
            ret.setModel(Lists.transform(from.createOrGetModel(), new Function<SIPNode, String>() {

                @Override
                public String apply(SIPNode input) {
                    return input.isText() ? input.getTextVal() : input.getElement().html();
                }
            }));
            return ret;
        }
    });
}
Also used : JSONArray(com.alibaba.fastjson.JSONArray) XpathNode(com.virjar.vscrawler.core.selector.combine.selectables.XpathNode) JsonNode(com.virjar.vscrawler.core.selector.combine.selectables.JsonNode) JSON(com.alibaba.fastjson.JSON) Function(com.google.common.base.Function) StringNode(com.virjar.vscrawler.core.selector.combine.selectables.StringNode) List(java.util.List) RawNode(com.virjar.vscrawler.core.selector.combine.selectables.RawNode) SIPNode(com.virjar.sipsoup.model.SIPNode)

Aggregations

SIPNode (com.virjar.sipsoup.model.SIPNode)6 XpathNode (com.virjar.vscrawler.core.selector.combine.selectables.XpathNode)5 JsonNode (com.virjar.vscrawler.core.selector.combine.selectables.JsonNode)4 RawNode (com.virjar.vscrawler.core.selector.combine.selectables.RawNode)4 StringNode (com.virjar.vscrawler.core.selector.combine.selectables.StringNode)4 JSON (com.alibaba.fastjson.JSON)3 Function (com.google.common.base.Function)3 SipNodes (com.virjar.sipsoup.model.SipNodes)3 List (java.util.List)2 JSONArray (com.alibaba.fastjson.JSONArray)1 AbstractSelectable (com.virjar.vscrawler.core.selector.combine.AbstractSelectable)1 RawTextStringFactory (com.virjar.vscrawler.core.selector.combine.RawTextStringFactory)1 Document (org.jsoup.nodes.Document)1 Element (org.jsoup.nodes.Element)1