Example usage for org.jsoup.nodes Element getElementsContainingOwnText

List of usage examples for org.jsoup.nodes Element getElementsContainingOwnText

Introduction

In this page you can find the example usage for org.jsoup.nodes Element getElementsContainingOwnText.

Prototype

public Elements getElementsContainingOwnText(String searchText) 

Source Link

Document

Find elements that directly contain the specified string.

Usage

From source file:com.seleniumtests.uipage.htmlelements.CachedHtmlElement.java

@Override
public List<WebElement> findElements(By by) {
    List<WebElement> foundElements = new ArrayList<>();
    if (by instanceof By.ById) {
        Field field;//from  w  ww .  ja v a 2  s  .  co m
        try {
            field = By.ById.class.getDeclaredField("id");
            field.setAccessible(true);
            foundElements.add(new CachedHtmlElement(cachedElement.getElementById((String) field.get(by))));
        } catch (NoSuchFieldException | SecurityException | IllegalArgumentException
                | IllegalAccessException e) {
            throw new CustomSeleniumTestsException(
                    "problem searching By field during reflection: core should be checked", e);
        }
    } else if (by instanceof By.ByTagName) {
        Field field;
        try {
            field = By.ByTagName.class.getDeclaredField("tagName");
            field.setAccessible(true);
            foundElements.addAll(cachedElement.getElementsByTag((String) field.get(by)).stream()
                    .map(CachedHtmlElement::new).collect(Collectors.toList()));
        } catch (NoSuchFieldException | SecurityException | IllegalArgumentException
                | IllegalAccessException e) {
            throw new CustomSeleniumTestsException(
                    "problem searching By field during reflection: core should be checked", e);
        }
    } else if (by instanceof By.ByClassName) {
        Field field;
        try {
            field = By.ByClassName.class.getDeclaredField("className");
            field.setAccessible(true);
            foundElements.addAll(cachedElement.getElementsByClass((String) field.get(by)).stream()
                    .map(CachedHtmlElement::new).collect(Collectors.toList()));
        } catch (NoSuchFieldException | SecurityException | IllegalArgumentException
                | IllegalAccessException e) {
            throw new CustomSeleniumTestsException(
                    "problem searching By field during reflection: core should be checked", e);
        }
    } else if (by instanceof By.ByName) {
        Field field;
        try {
            field = By.ByName.class.getDeclaredField("name");
            field.setAccessible(true);
            foundElements.addAll(cachedElement.getElementsByAttributeValue("name", (String) field.get(by))
                    .stream().map(CachedHtmlElement::new).collect(Collectors.toList()));
        } catch (NoSuchFieldException | SecurityException | IllegalArgumentException
                | IllegalAccessException e) {
            throw new CustomSeleniumTestsException(
                    "problem searching By field during reflection: core should be checked", e);
        }
    } else if (by instanceof By.ByLinkText || by instanceof By.ByPartialLinkText) {
        Field field;
        try {
            field = By.ByLinkText.class.getDeclaredField("linkText");
            field.setAccessible(true);
            for (Element el : cachedElement.getElementsByTag("a")) {
                try {
                    el.getElementsContainingOwnText((String) field.get(by)).get(0);
                    foundElements.add(new CachedHtmlElement(el));
                } catch (IndexOutOfBoundsException e) {
                    // nothing to do
                }
            }
        } catch (NoSuchFieldException | SecurityException | IllegalArgumentException
                | IllegalAccessException e) {
            throw new CustomSeleniumTestsException(
                    "problem searching By field during reflection: core should be checked", e);
        }
    } else {
        throw new NotImplementedException(
                String.format("%s is not implemented in cached element", by.getClass()));
    }

    return foundElements;
}

From source file:com.rickendirk.rsgwijzigingen.ZoekService.java

private void addDagEnDatum(Wijzigingen wijzigingen, Document doc) {
    //Dag waarvoor wijzigingen zijn ophalen
    Element dag = doc.select("body > div > div:nth-child(2) > p > b > span").first();
    //Compatibiliteit met andere opmaak, om NPE te voorkomen
    if (dag == null) {
        dag = doc.select("body > center:nth-child(2) > div").first();
    }//from   ww w.  j  av  a  2 s .c o m
    String dagStr = dag.text().toLowerCase();
    // Woorden staan verkeerd om: omwisselen
    int indexVanSpatie = dagStr.indexOf(" ");
    String datum = dagStr.substring(0, indexVanSpatie);
    String rest = dagStr.substring(indexVanSpatie + 1);
    String dagGoed = rest + " " + datum;
    wijzigingen.setDagEnDatum(dagGoed);

    //Stand ophalen: staat in 1e tabel van HTML
    Element tableDate = doc.select("table").get(0);
    String dateFullText = tableDate.getElementsContainingOwnText("Stand:").text();
    //Deel achter "Stand:" pakken
    String FullTextSplit[] = dateFullText.split("Stand:");
    wijzigingen.setStandZin("Stand van" + FullTextSplit[1]);
}

From source file:com.rickendirk.rsgwijzigingen.ZoekService.java

private ArrayList<String> checkerKlas() {
    ArrayList<String> tempList = new ArrayList<>();
    //String halen uit SP
    String klasTextS = PreferenceManager.getDefaultSharedPreferences(getApplicationContext())
            .getString("pref_klas", "");
    //Checken of klas niet leeg is
    if (klasTextS.equals("")) {
        tempList.add("geenKlas");
        return tempList;
    }//from   w  ww.  j ava2  s  .  c o m
    //Eerste teken klas mag geen letter zijn
    if (Character.isLetter(klasTextS.charAt(0))) {
        tempList.add("EersteTekenLetter");
        return tempList;
    }
    //String opsplitsen in 2 delen, om naar hoofdletters te converteren
    char charcijfer = klasTextS.charAt(0);
    String klascijfer = String.valueOf(charcijfer);
    char charafdeling = klasTextS.charAt(1);
    String klasafdelingBig = String.valueOf(charafdeling).toUpperCase();
    //Onderstaand voor hoofdlettercorrectie
    String klasCorrect; //KlasCorrect is klas na hoofdlettercorrectie
    switch (klasTextS.length()) {
    case 2:
        klasCorrect = klascijfer + klasafdelingBig;
        break;
    case 3:
        char klasabc = klasTextS.charAt(2);
        String klasabcSmall = String.valueOf(klasabc).toLowerCase();
        klasCorrect = klascijfer + klasafdelingBig + klasabcSmall;
        break;
    case 4:
        char klasafdeling2 = klasTextS.charAt(2);
        String klasafdeling2Big = String.valueOf(klasafdeling2).toUpperCase();
        klasabc = klasTextS.charAt(3);
        klasabcSmall = String.valueOf(klasabc).toLowerCase();

        klasCorrect = klascijfer + klasafdelingBig + klasafdeling2Big + klasabcSmall;
        break;
    default:
        tempList.add("klasMeerDan4Tekens");
        return tempList;
    }

    //Try en catch in het geval dat de internetverbinding mist
    try {
        String url = "http://www.rsgtrompmeesters.nl/roosters/roosterwijzigingen/Lijsterbesstraat/subst_001.htm";
        Document doc = Jsoup.connect(url).get();
        Elements tables = doc.select("table");
        if (tables.size() < 2) {
            //Geen geschikte tabel aanwezig
            tempList.add("geenTabel");
            return tempList;
        }
        Element table = tables.get(1);
        Elements rows = table.select("tr");
        //Loop genereren, voor elke row kijken of het de goede tekst bevat
        //Beginnen bij 4e, bovenstaande is niet belangrijk
        for (int i = 2; i < rows.size(); i++) {
            Element row = rows.get(i);
            Elements cols = row.select("td");

            if (cols.get(0).text().contains(klasCorrect)) {
                String vakOud = Jsoup.parse(cols.get(2).toString()).text();
                String docentOud = Jsoup.parse(cols.get(3).toString()).text();
                String vakNieuw = Jsoup.parse(cols.get(4).toString()).text();
                String docentNieuw = Jsoup.parse(cols.get(5).toString()).text();
                //If in geval van uitval, else ingeval van wijziging
                if (Jsoup.parse(cols.get(6).toString()).text().contains("--")) {
                    //2 opties: wordt verplaatst of valt uit
                    if (Jsoup.parse(cols.get(8).toString()).text().contains("Uitval")) {
                        String wijziging = Jsoup.parse(cols.get(1).toString()).text() + "e uur "
                                + Jsoup.parse(cols.get(2).toString()).text() + " valt uit";
                        tempList.add(wijziging);
                    } else {
                        //Uur wordt verplaatst
                        String wijziging = Jsoup.parse(cols.get(1).toString()).text() + "e uur "
                                + "wordt verplaatst naar " + Jsoup.parse(cols.get(8).toString()).text();
                        tempList.add(wijziging);
                    }
                } else if (vakOud.equals(vakNieuw) && docentOud.equals(docentNieuw)) {
                    String wijziging = Jsoup.parse(cols.get(1).toString()).text() + "e uur " + vakOud
                            + " wordt verplaatst naar " + Jsoup.parse(cols.get(6).toString()).text();
                    tempList.add(wijziging);
                } else {
                    String wijzigingKaal;
                    if (vakOud.equals(vakNieuw) && !docentOud.equals(docentNieuw)) {
                        // Opvang door andere docent: dit staat alleen bij klas omdat
                        // dit amper gebeurt bij clusters
                        wijzigingKaal = Jsoup.parse(cols.get(1).toString()).text() + "e uur " + docentOud
                                + " wordt opgevangen door " + docentNieuw;
                    } else { //Geen opvang door andere docent, lokaalwijziging oid
                        wijzigingKaal =
                                // Voegt alle kolommen samen tot 1 string
                                // .text() zorgt voor leesbare text
                                // Spaties voor leesbaarheid
                                Jsoup.parse(cols.get(1).toString()).text() + "e uur "
                                        + Jsoup.parse(cols.get(2).toString()).text() + " "
                                        + Jsoup.parse(cols.get(3).toString()).text() + " wordt "
                                        + Jsoup.parse(cols.get(4).toString()).text() + " "
                                        + Jsoup.parse(cols.get(5).toString()).text() + " in "
                                        + Jsoup.parse(cols.get(6).toString()).text();
                    }
                    //ipv en naar bevatten een "/" ivm uren (ma 12-04 / 4)
                    String ipv = "";
                    if (Jsoup.parse(cols.get(7).toString()).text().contains("/")) {
                        ipv = "ipv " + Jsoup.parse(cols.get(7).toString()).text();
                    }
                    String naar = "";
                    if (Jsoup.parse(cols.get(8).toString()).text().contains("/")) {
                        naar = "naar " + Jsoup.parse(cols.get(8).toString()).text() + " ";
                    }
                    String vervangingsTekst = "";
                    //&nbsp; staat in lege cell, encoding enz, zie volgende link:
                    // http://stackoverflow.com/questions/26837034/how-to-tell-if-a-html-table-has-an-empty-cell-nbsp-using-jsoup
                    //Soms veregeten ze de opmerkingen, dan krijg je size = 9 en error
                    if (cols.size() > 9) {
                        if (!Jsoup.parse(cols.get(9).toString()).text().equals("\u00a0")) {
                            vervangingsTekst = "(" + Jsoup.parse(cols.get(9).toString()).text() + ")";
                        }
                    }
                    String wijziging = wijzigingKaal + " " + ipv + " " + naar + " " + vervangingsTekst;
                    tempList.add(wijziging);

                }

            }
            //Geen wijzigingen pas bij laatste rij
            if (i == rows.size() - 1) {
                //Checken of tempList leeg is, zo ja 1 ding toevoegen
                if (tempList.isEmpty()) {
                    tempList.add("Er zijn geen wijzigingen");
                }
                //Dag waarvoor wijzigingen zijn ophalen
                Element dag = doc.select("body > div > div:nth-child(2) > p > b > span").first();
                //Compatibiliteit met andere opmaak, om NPE te voorkomen
                if (dag == null) {
                    dag = doc.select("body > center:nth-child(2) > div").first();
                }
                String dagStr = dag.text().toLowerCase();
                // Woorden staan verkeerd om: omwisselen
                int indexVanSpatie = dagStr.indexOf(" ");
                String datum = dagStr.substring(0, indexVanSpatie);
                String rest = dagStr.substring(indexVanSpatie + 1);
                String dagGoed = rest + " " + datum;
                tempList.add(dagGoed);

                //Stand ophalen: staat in 1e tabel van HTML
                Element tableDate = doc.select("table").get(0);
                String dateFullText = tableDate.getElementsContainingOwnText("Stand:").text();
                //Deel achter "Stand:" pakken
                String FullTextSplit[] = dateFullText.split("Stand:");
                tempList.add(FullTextSplit[1]);
                return tempList;
            }
        }
    } catch (java.io.IOException e) {
        //Error toevoegen aan tempList, dat wordt weergegeven in messagebox
        tempList.clear();
        tempList.add("verbindFout");
        return tempList;
    }
    //Zover hoort de method NOOIT te komen
    tempList.add("andereFout");
    return tempList;
}

From source file:com.rickendirk.rsgwijzigingen.ZoekService.java

private ArrayList<String> checkerClusters() {
    ArrayList<String> tempList = new ArrayList<>();
    //String van klas halen uit SP
    String klasTextS = PreferenceManager.getDefaultSharedPreferences(getApplicationContext())
            .getString("pref_klas", "");
    String url = "http://www.rsgtrompmeesters.nl/roosters/roosterwijzigingen/Lijsterbesstraat/subst_001.htm";
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    //Clusters ophalen uit SP
    ArrayList<String> clusters = new ArrayList<>();
    for (int a = 1; a < 15; a++) {
        //String initializen, anders kan hij hem niet toevoegen
        String clusterLowCase = "";
        String cluster = sp.getString("pref_cluster" + a, "");
        //If om nullpointer te voorkomen
        if (!cluster.equals("")) {
            clusterLowCase = cluster.substring(0, 1).toLowerCase() + cluster.substring(1);
        }//from   w  w w .j  a  va2s.  c o  m
        clusters.add(clusterLowCase);
    }

    //Lege clusters weghalen uit arraylist TODO: Kijken of singleton werkt/wat het is
    clusters.removeAll(Collections.singleton(""));
    //Er moeten wel clusters zijn ingevoerd: Zo nee, komt AlertDialog via onPostExecute
    if (clusters.isEmpty()) {
        tempList.add("geenClusters");
        return tempList;
    }
    //Checken of klas niet leeg is
    if (klasTextS.equals("")) {
        tempList.add("geenKlas");
        return tempList;
    }
    //Eerste teken klas mag geen letter zijn
    if (Character.isLetter(klasTextS.charAt(0))) {
        tempList.add("EersteTekenLetter");
        return tempList;
    }
    //String opsplitsen in 2 delen, om naar hoofdletters te converteren
    char charcijfer = klasTextS.charAt(0);
    String klascijfer = String.valueOf(charcijfer);
    char charafdeling = klasTextS.charAt(1);
    String klasafdelingBig = String.valueOf(charafdeling).toUpperCase();
    //Onderstaand voor hoofdlettercorrectie
    String klasCorrect; //KlasCorrect is klas na hoofdlettercorrectie
    switch (klasTextS.length()) {
    case 2:
        klasCorrect = klascijfer + klasafdelingBig;
        break;
    case 3:
        char klasabc = klasTextS.charAt(2);
        String klasabcSmall = String.valueOf(klasabc).toLowerCase();
        klasCorrect = klascijfer + klasafdelingBig + klasabcSmall;
        break;
    case 4:
        char klasafdeling2 = klasTextS.charAt(2);
        String klasafdeling2Big = String.valueOf(klasafdeling2).toUpperCase();
        klasabc = klasTextS.charAt(3);
        klasabcSmall = String.valueOf(klasabc).toLowerCase();

        klasCorrect = klascijfer + klasafdelingBig + klasafdeling2Big + klasabcSmall;
        break;
    default:
        tempList.add("klasMeerDan4Tekens");
        return tempList;
    }
    //Try en catch in het geval dat de internetverbinding mist
    try {
        Document doc = Jsoup.connect(url).get();
        Elements tables = doc.select("table");
        if (tables.size() < 1) {
            //Geen geschikte tabel aanwezig
            tempList.add("geenTabel");
            return tempList;
        }
        Element table = tables.get(1);
        Elements rows = table.select("tr");
        //Eerste loop is om 2e loop te herhalen voor iedere cluster, tweede loop
        //doorzoekt dan op zowel klas als cluster
        for (int b = 0; b < clusters.size(); b++) {
            for (int i = 2; i < rows.size(); i++) {
                Element row = rows.get(i);
                Elements cols = row.select("td");

                if (cols.get(0).text().contains(klasCorrect) && cols.get(2).text().contains(clusters.get(b))) {
                    String vakOud = Jsoup.parse(cols.get(2).toString()).text();
                    String docentOud = Jsoup.parse(cols.get(3).toString()).text();
                    String vakNieuw = Jsoup.parse(cols.get(4).toString()).text();
                    String docentNieuw = Jsoup.parse(cols.get(5).toString()).text();
                    //If in geval van uitval, else ingeval van wijziging
                    if (Jsoup.parse(cols.get(6).toString()).text().contains("--")) {
                        //2 opties: wordt verplaatst of valt uit
                        if (Jsoup.parse(cols.get(8).toString()).text().contains("Uitval")) {
                            String wijziging = Jsoup.parse(cols.get(1).toString()).text() + "e uur "
                                    + Jsoup.parse(cols.get(2).toString()).text() + " valt uit";
                            tempList.add(wijziging);
                        } else {
                            //Uur wordt verplaatst
                            String wijziging = Jsoup.parse(cols.get(1).toString()).text() + "e uur "
                                    + "wordt verplaatst naar " + Jsoup.parse(cols.get(8).toString()).text();
                            tempList.add(wijziging);
                        }
                    } else if (vakOud.equals(vakNieuw) && docentOud.equals(docentNieuw)) {
                        String wijziging = Jsoup.parse(cols.get(1).toString()).text() + "e uur " + vakOud
                                + " wordt verplaatst naar " + Jsoup.parse(cols.get(6).toString()).text();
                        tempList.add(wijziging);
                    } else {
                        String wijzigingKaal =
                                // Voegt alle kolommen samen tot 1 string
                                // .text() zorgt voor leesbare text
                                // Spaties voor leesbaarheid
                                Jsoup.parse(cols.get(1).toString()).text() + "e uur "
                                        + Jsoup.parse(cols.get(2).toString()).text() + " "
                                        + Jsoup.parse(cols.get(3).toString()).text() + " wordt "
                                        + Jsoup.parse(cols.get(4).toString()).text() + " "
                                        + Jsoup.parse(cols.get(5).toString()).text() + " in "
                                        + Jsoup.parse(cols.get(6).toString()).text();

                        //ipv en naar bevatten een "/" ivm uren (ma 12-04 / 4)
                        String ipv = "";
                        if (Jsoup.parse(cols.get(7).toString()).text().contains("/")) {
                            ipv = "ipv " + Jsoup.parse(cols.get(7).toString()).text();
                        }
                        String naar = "";
                        if (Jsoup.parse(cols.get(8).toString()).text().contains("/")) {
                            naar = "naar " + Jsoup.parse(cols.get(8).toString()).text() + " ";
                        }
                        String vervangingsTekst = "";
                        //&nbsp; staat in lege cell, encoding enz, zie volgende link:
                        // http://stackoverflow.com/questions/26837034/how-to-tell-if-a-html-table-has-an-empty-cell-nbsp-using-jsoup
                        if (cols.size() > 9) {
                            if (!Jsoup.parse(cols.get(9).toString()).text().equals("\u00a0")) {
                                vervangingsTekst = "(" + Jsoup.parse(cols.get(9).toString()).text() + ")";
                            }
                        }
                        String wijziging = wijzigingKaal + " " + ipv + " " + naar + " " + vervangingsTekst;
                        tempList.add(wijziging);
                    }

                }
                //Geen wijzigingen pas bij laatste rij en de laatste cluster
                if (i == rows.size() - 1 && b == clusters.size() - 1) {
                    //Checken of tempList leeg is, zo ja 1 ding toevoegen
                    if (tempList.isEmpty()) {
                        tempList.add("Er zijn geen wijzigingen");
                    }
                    //Dag waarvoor wijzigingen zijn ophalen
                    Element dag = doc.select("body > div > div:nth-child(2) > p > b > span").first();
                    //Compatibiliteit met andere opmaak, om NPE te voorkomen
                    if (dag == null) {
                        dag = doc.select("body > center:nth-child(2) > div").first();
                    }
                    String dagStr = dag.text().toLowerCase();
                    // Woorden staan verkeerd om: omwisselen
                    int indexVanSpatie = dagStr.indexOf(" ");
                    String datum = dagStr.substring(0, indexVanSpatie);
                    String rest = dagStr.substring(indexVanSpatie + 1);
                    String dagGoed = rest + " " + datum;
                    tempList.add(dagGoed);

                    //Stand ophalen: staat in 1e tabel van HTML
                    Element tableDate = doc.select("table").get(0);
                    String dateFullText = tableDate.getElementsContainingOwnText("Stand:").text();
                    //Deel achter "Stand:" pakken
                    String FullTextSplit[] = dateFullText.split("Stand:");
                    tempList.add(FullTextSplit[1]);
                    return tempList;

                }
            }
        }
    } catch (java.io.IOException e) {
        //Error toevoegen aan tempList, dat wordt weergegeven in messagebox
        tempList.clear();
        tempList.add("verbindFout");
        return tempList;
    }
    //Zover hoort de method NOOIT te komen
    tempList.add("andereFout");
    return tempList;
}