All Downloads are FREE. Search and download functionalities are using the official Maven repository.

us.codecraft.xsoup.bridge.DefaultXElements Maven / Gradle / Ivy

package us.codecraft.xsoup.bridge;

import java.util.ArrayList;
import java.util.List;

import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.virjar.sipsoup.model.SIPNode;

import us.codecraft.xsoup.XElement;
import us.codecraft.xsoup.XElements;

/**
 * Created by virjar on 17/6/19.
 */
public class DefaultXElements extends ArrayList implements XElements {

    private List sipNodes;

    public DefaultXElements(List sipNodes) {
        this.sipNodes = sipNodes;
        initList();
    }

    private void initList() {
        for (SIPNode element : sipNodes) {
            this.add(new DefaultXElement(element));
        }
    }

    @Override
    public String get() {
        if (size() < 1) {
            return null;
        } else {
            return get(0).get();
        }
    }

    @Override
    public List list() {
        List resultStrings = new ArrayList();
        for (XElement xElement : this) {
            String text = xElement.get();
            if (text != null) {
                resultStrings.add(text);
            }
        }
        return resultStrings;
    }

    @Override
    public String toString() {
        return get();
    }

    @Override
    public Elements getElements() {
        return new Elements(Lists.newLinkedList(Iterables.transform(Iterables.filter(sipNodes, new Predicate() {
            @Override
            public boolean apply(SIPNode input) {
                return !input.isText();
            }
        }), new Function() {
            @Override
            public Element apply(SIPNode input) {
                return input.getElement();
            }
        })));
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy