Example usage for org.jsoup.nodes Element parent

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

Introduction

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

Prototype

@Override
    public final Element parent() 

Source Link

Usage

From source file:me.vertretungsplan.parser.UntisInfoHeadlessParser.java

@Override
public SubstitutionSchedule getSubstitutionSchedule()
        throws IOException, JSONException, CredentialInvalidException {
    new LoginHandler(scheduleData, credential, cookieProvider).handleLogin(executor, cookieStore);

    SubstitutionSchedule v = SubstitutionSchedule.fromData(scheduleData);

    Document doc = Jsoup.parse(httpGet(url, data.optString(PARAM_ENCODING, null)));
    doc.setBaseUri(url);//from  ww w  .j  a v  a  2 s.c  o m
    Elements dayElems = doc.select("#vertretung > p > b, #vertretung > b");

    Elements frames = doc.select("frame[src*=w00]");
    if (dayElems.size() == 0 && frames.size() > 0) {
        // doc is embedded in frame
        doc = Jsoup.parse(httpGet(frames.get(0).absUrl("src"), data.optString(PARAM_ENCODING, null)));
        dayElems = doc.select("#vertretung > p > b, #vertretung > b");
    }

    for (Element dayElem : dayElems) {
        SubstitutionScheduleDay day = new SubstitutionScheduleDay();
        day.setLastChangeString("");

        String date = dayElem.text();
        day.setDateString(date);
        day.setDate(ParserUtils.parseDate(date));

        Element next;
        if (dayElem.parent().tagName().equals("p")) {
            next = dayElem.parent().nextElementSibling().nextElementSibling();
        } else {
            next = dayElem.parent().select("p").first().nextElementSibling();
        }
        parseDay(day, next, v, null);
    }
    v.setClasses(getAllClasses());
    v.setTeachers(getAllTeachers());
    return v;
}

From source file:com.johan.vertretungsplan.parser.UntisInfoParser.java

@Override
public Vertretungsplan getVertretungsplan() throws IOException, JSONException {
    new LoginHandler(schule).handleLogin(executor, cookieStore, username, password);

    Document navbarDoc = Jsoup.parse(getNavbarDoc().replace(" ", ""));
    Element select = navbarDoc.select("select[name=week]").first();

    Vertretungsplan v = new Vertretungsplan();
    List<VertretungsplanTag> tage = new ArrayList<VertretungsplanTag>();

    String info = navbarDoc.select(".description").text();
    String stand;//from  w w  w .  j  a  va  2 s  .co m
    try {
        stand = info.substring(info.indexOf("Stand:"));
    } catch (Exception e) {
        stand = "";
    }

    for (Element option : select.children()) {
        String week = option.attr("value");
        String letter = data.optString("letter", "w");
        if (data.optBoolean("single_classes", false)) {
            int classNumber = 1;
            for (String klasse : getAllClasses()) {
                String paddedNumber = String.format("%05d", classNumber);
                String url;
                if (data.optBoolean("w_after_number", false))
                    url = baseUrl + "/" + week + "/" + letter + "/" + letter + paddedNumber + ".htm";
                else
                    url = baseUrl + "/" + letter + "/" + week + "/" + letter + paddedNumber + ".htm";

                Document doc = Jsoup.parse(httpGet(url, schule.getData().getString("encoding")));
                Elements days = doc.select("#vertretung > p > b, #vertretung > b");
                for (Element day : days) {
                    VertretungsplanTag tag = getTagByDatum(tage, day.text());
                    tag.setStand(stand);
                    tag.setDatum(day.text());
                    Element next = null;
                    if (day.parent().tagName().equals("p")) {
                        next = day.parent().nextElementSibling().nextElementSibling();
                    } else
                        next = day.parent().select("p").first().nextElementSibling();
                    if (next.className().equals("subst")) {
                        //Vertretungstabelle
                        if (next.text().contains("Vertretungen sind nicht freigegeben"))
                            continue;
                        parseVertretungsplanTable(next, data, tag);
                    } else {
                        //Nachrichten
                        parseNachrichten(next, data, tag);
                        next = next.nextElementSibling().nextElementSibling();
                        parseVertretungsplanTable(next, data, tag);
                    }
                    writeTagByDatum(tage, tag);
                }

                classNumber++;
            }
        } else {
            String url;
            if (data.optBoolean("w_after_number", false))
                url = baseUrl + "/" + week + "/" + letter + "/" + letter + "00000.htm";
            else
                url = baseUrl + "/" + letter + "/" + week + "/" + letter + "00000.htm";
            Document doc = Jsoup.parse(httpGet(url, schule.getData().getString("encoding")));
            Elements days = doc.select("#vertretung > p > b, #vertretung > b");
            for (Element day : days) {
                VertretungsplanTag tag = getTagByDatum(tage, day.text());
                tag.setStand(stand);
                tag.setDatum(day.text());
                Element next = null;
                if (day.parent().tagName().equals("p")) {
                    next = day.parent().nextElementSibling().nextElementSibling();
                } else
                    next = day.parent().select("p").first().nextElementSibling();
                if (next.className().equals("subst")) {
                    //Vertretungstabelle
                    if (next.text().contains("Vertretungen sind nicht freigegeben"))
                        continue;
                    parseVertretungsplanTable(next, data, tag);
                } else {
                    //Nachrichten
                    parseNachrichten(next, data, tag);
                    next = next.nextElementSibling().nextElementSibling();
                    parseVertretungsplanTable(next, data, tag);
                }
                tage.add(tag);
            }
        }
        v.setTage(tage);
    }
    return v;
}

From source file:de.geeksfactory.opacclient.apis.Littera.java

protected SearchRequestResult executeSearch(List<SearchQuery> query, int pageIndex)
        throws IOException, OpacErrorException, JSONException {
    final String searchUrl;
    if (!initialised) {
        start();//from  www  . ja v a2 s . c o m
    }
    try {
        searchUrl = buildSearchUrl(query, pageIndex);
    } catch (URISyntaxException e) {
        throw new RuntimeException(e);
    }
    final String html = httpGet(searchUrl, getDefaultEncoding());
    final Document doc = Jsoup.parse(html);

    final Element navigation = doc.select(".result_view .navigation").first();
    final int totalResults = navigation != null ? parseTotalResults(navigation.text()) : 0;

    final Element ul = doc.select(".result_view ul.list").first();
    final List<SearchResult> results = new ArrayList<>();
    for (final Element li : ul.children()) {
        if (li.hasClass("zugangsmonat")) {
            continue;
        }
        final SearchResult result = new SearchResult();
        final Element title = li.select(".titelinfo a").first();
        result.setId(getQueryParamsFirst(title.attr("href")).get("id"));
        result.setInnerhtml(title.text() + "<br>" + title.parent().nextElementSibling().text());
        result.setNr(results.size());
        result.setPage(pageIndex);
        result.setType(MEDIA_TYPES.get(li.select(".statusinfo .ma").text()));
        result.setCover(getCover(li));
        final String statusImg = li.select(".status img").attr("src");
        result.setStatus(statusImg.contains("-yes") ? SearchResult.Status.GREEN
                : statusImg.contains("-no") ? SearchResult.Status.RED : null);
        results.add(result);
    }
    return new SearchRequestResult(results, totalResults, pageIndex);
}

From source file:me.vertretungsplan.parser.ESchoolParser.java

private void parseTable(Element table, SubstitutionScheduleDay day) {
    for (Element th : table.select("th[colspan=10]")) {
        String lesson;/*from ww  w  .  j  a v  a 2  s.c o  m*/

        Pattern pattern = Pattern.compile("(\\d+)\\. Stunde");
        Matcher matcher = pattern.matcher(th.text());
        if (matcher.find()) {
            lesson = matcher.group(1);
        } else {
            lesson = th.text();
        }

        // skip over table headers
        Element row = th.parent().nextElementSibling().nextElementSibling();
        while (row != null && row.select("th").size() == 0) {
            Substitution subst = new Substitution();
            subst.setLesson(lesson);

            Elements columns = row.select("td");

            String[] classes = columns.get(0).text().split(", |\\+");
            subst.setClasses(new HashSet<>(Arrays.asList(classes)));

            subst.setPreviousTeacher(getPreviousValue(columns.get(1)));
            subst.setTeacher(getNewValue(columns.get(1)));
            subst.setPreviousSubject(getPreviousValue(columns.get(2)));
            subst.setSubject(getNewValue(columns.get(2)));
            subst.setPreviousRoom(getPreviousValue(columns.get(3)));
            subst.setRoom(getNewValue(columns.get(3)));
            if (columns.get(4).text().isEmpty()) {
                subst.setType("Vertretung");
                subst.setColor(colorProvider.getColor("Vertretung"));
            } else {
                String desc = columns.get(4).text();
                subst.setDesc(desc);
                String recognizedType = recognizeType(desc);
                if (recognizedType == null)
                    recognizedType = "Vertretung";
                subst.setType(recognizedType);
                subst.setColor(colorProvider.getColor(recognizedType));
            }

            day.addSubstitution(subst);

            row = row.nextElementSibling();
        }
    }
}

From source file:edu.harvard.iq.safe.lockss.impl.LOCKSSPlatformStatusHtmlParser.java

/**
 *
 * @param is/*from www.ja v a  2 s  . c o  m*/
 */
@Override
public void getPlatformStatusData(InputStream is) {

    try {

        Document doc = DataUtil.load(is, "UTF-8", "");
        Element body = doc.body();

        // most of the target items are sandwitched by <b> tag
        // this can be used to reach each target item.
        String tmpCurrentTime = null;
        String tmpUpTime = null;
        String currentTime = null;
        Elements tags = body.getElementsByTag("b");

        for (Element tag : tags) {

            // get the current-time string: for 1.52.3 or older daemons
            // this is the ony place to get it.
            String tagText = tag.text();
            logger.log(Level.FINE, "working on tagText={0}", tagText);

            if (tagText.equals("Daemon Status")) {
                // find current time and up running
                currentTime = tag.parent().parent().text();
                logger.log(Level.INFO, "currentTime text=[{0}]", currentTime);
                // "currentTime =Daemon Status lockss.statelib.lib.in.us (usdocspln group) 01:25:55 03/01/12, up 7d5h21m"
                tmstmpMatcher = currentTimeStampPattern.matcher(currentTime);

                if (tmstmpMatcher.find()) {
                    logger.log(Level.INFO, "group 0={0}", tmstmpMatcher.group(0));
                    tmpCurrentTime = tmstmpMatcher.group(1);
                    logger.log(Level.INFO, "Current Time:group 1={0}", tmpCurrentTime);
                    tmpUpTime = tmstmpMatcher.group(2);
                    logger.log(Level.INFO, "UpTime:group 2={0}", tmpUpTime);
                }
            }

            // get the remaining key-value sets
            if (fieldNameSet.contains(tagText)) {

                Element parent = tag.parent();
                String fieldValue = parent.nextElementSibling().text();
                logger.log(Level.FINE, "{0}={1}", new Object[] { tagText, fieldValue });
                summaryInfoMap.put(tagText, fieldValue);
            }
        }

        // extract the daemon version and platform info that are located
        // at the bottom
        // these data are sandwitched by a <center> tag
        Elements ctags = body.getElementsByTag("center");
        String version = null;
        String platform = null;
        for (Element ctag : ctags) {
            String cText = ctag.text();
            logger.log(Level.FINE, "center tag Text={0}", cText);
            // cText is like this:
            // Daemon 1.53.3 built 28-Jan-12 01:06:36 on build7.lockss.org, Linux RPM 1
            if (StringUtils.isNotBlank(cText) && ctag.child(0).nodeName().equals("font")) {
                String[] versionPlatform = cText.split(", ");
                if (versionPlatform.length == 2) {
                    logger.log(Level.INFO, "daemon version={0};platform={1}", versionPlatform);
                    version = DaemonStatusDataUtil.getDaemonVersion(versionPlatform[0]);
                    platform = versionPlatform[1];
                } else {
                    // the above regex failed
                    logger.log(Level.WARNING, "String-formatting differs; use pattern matching");
                    version = DaemonStatusDataUtil.getDaemonVersion(cText);
                    int platformOffset = cText.lastIndexOf(", ") + 2;
                    platform = cText.substring(platformOffset);
                    logger.log(Level.INFO, "platform={0}", platform);

                }
            }
        }

        if (summaryInfoMap.containsKey("V3 Identity")) {
            String ipAddress = DaemonStatusDataUtil.getPeerIpAddress(summaryInfoMap.get("V3 Identity"));
            logger.log(Level.INFO, "ipAddress={0}", ipAddress);

            if (StringUtils.isNotBlank(ipAddress)) {
                boxInfoMap.put("host", ipAddress);
                if (!ipAddress.equals(summaryInfoMap.get("IP Address"))) {
                    summaryInfoMap.put("IP Address", ipAddress);
                }
            } else {
                logger.log(Level.WARNING, "host token is blank or null: use IP Address instead");
                logger.log(Level.INFO, "IP Address={0}", summaryInfoMap.get("IP Address"));
                boxInfoMap.put("host", summaryInfoMap.get("IP Address"));
            }
        }

        // for pre-1.53.3 versions
        boxInfoMap.put("time", tmpCurrentTime);
        if (!summaryInfoMap.containsKey("Current Time")) {
            summaryInfoMap.put("Current Time", tmpCurrentTime);
        }

        boxInfoMap.put("up", tmpUpTime);
        if (!summaryInfoMap.containsKey("Uptime")) {
            summaryInfoMap.put("Uptime", tmpUpTime);
        }

        boxInfoMap.put("version", version);
        if (!summaryInfoMap.containsKey("Daemon Version")) {
            summaryInfoMap.put("Daemon Version", version);
        }

        boxInfoMap.put("platform", platform);
        if (!summaryInfoMap.containsKey("Platform")) {
            summaryInfoMap.put("Platform", platform);
        }

    } catch (IOException ex) {
        logger.log(Level.SEVERE, "IO error", ex);
    }

    logger.log(Level.INFO, "boxInfoMap={0}", boxInfoMap);
    logger.log(Level.INFO, "summaryInfo={0}", summaryInfoMap);
}

From source file:cn.edu.hfut.dmic.contentextractor.ContentExtractor.java

protected String getTime(Element contentElement, String regex) throws Exception {
    Pattern pattern = Pattern.compile(regex);
    Element current = contentElement;
    for (int i = 0; i < 2; i++) {
        if (current != null && current != doc.body()) {
            Element parent = current.parent();
            if (parent != null) {
                current = parent;/*w ww  . j a va 2  s  .  c o  m*/
            }
        }
    }
    for (int i = 0; i < 6; i++) {
        if (current == null) {
            break;
        }
        String currentHtml = current.outerHtml();
        Matcher matcher = pattern.matcher(currentHtml);
        if (matcher.find()) {
            srcTime = matcher.group(0);
            StringBuilder sb = new StringBuilder(
                    matcher.group(1) + "-" + format(matcher.group(2)) + "-" + format(matcher.group(3)));
            if (matcher.groupCount() >= 4) {
                sb.append(" ").append(format(matcher.group(4)));
            }
            if (matcher.groupCount() >= 5) {
                sb.append(":").append(format(matcher.group(5)));
            }
            if (matcher.groupCount() >= 6) {
                sb.append(":").append(format(matcher.group(6)));
            }
            return sb.toString();
        }
        if (current != doc.body()) {
            current = current.parent();
        }
    }
    return "";
}

From source file:com.johan.vertretungsplan.parser.UntisCommonParser.java

/**
 * Parst eine Vertretungstabelle eines Untis-Vertretungsplans
 * //w ww  .  j  a v a 2  s  .c  o  m
 * @param table
 *            das <code>table</code>-Element des HTML-Dokuments, das geparst
 *            werden soll
 * @param data
 *            Daten von der Schule (aus <code>Schule.getData()</code>)
 * @param tag
 *            der {@link VertretungsplanTag} in dem die Vertretungen
 *            gespeichert werden sollen
 * @throws JSONException
 */
protected void parseVertretungsplanTable(Element table, JSONObject data, VertretungsplanTag tag)
        throws JSONException {
    if (data.optBoolean("class_in_extra_line")) {
        for (Element element : table.select("td.inline_header")) {
            String className = getClassName(element.text(), data);
            if (isValidClass(className)) {
                KlassenVertretungsplan kv = new KlassenVertretungsplan(className);

                Element zeile = null;
                try {
                    zeile = element.parent().nextElementSibling();
                    if (zeile.select("td") == null) {
                        zeile = zeile.nextElementSibling();
                    }
                    while (zeile != null && !zeile.select("td").attr("class").equals("list inline_header")) {
                        Vertretung v = new Vertretung();

                        int i = 0;
                        for (Element spalte : zeile.select("td")) {
                            if (!hasData(spalte.text())) {
                                i++;
                                continue;
                            }
                            String type = data.getJSONArray("columns").getString(i);
                            if (type.equals("lesson"))
                                v.setLesson(spalte.text());
                            else if (type.equals("subject"))
                                v.setSubject(spalte.text());
                            else if (type.equals("previousSubject"))
                                v.setPreviousSubject(spalte.text());
                            else if (type.equals("type"))
                                v.setType(spalte.text());
                            else if (type.equals("type-entfall")) {
                                if (spalte.text().equals("x"))
                                    v.setType("Entfall");
                                else
                                    v.setType("Vertretung");
                            } else if (type.equals("room"))
                                v.setRoom(spalte.text());
                            else if (type.equals("teacher"))
                                v.setTeacher(spalte.text());
                            else if (type.equals("previousTeacher"))
                                v.setPreviousTeacher(spalte.text());
                            else if (type.equals("desc"))
                                v.setDesc(spalte.text());
                            else if (type.equals("desc-type")) {
                                v.setDesc(spalte.text());
                                v.setType(recognizeType(spalte.text()));
                            } else if (type.equals("previousRoom"))
                                v.setPreviousRoom(spalte.text());
                            i++;
                        }

                        if (v.getDesc() != null && v.getLesson() == null && v.getPreviousRoom() == null
                                && v.getPreviousSubject() == null && v.getPreviousTeacher() == null
                                && v.getRoom() == null && v.getSubject() == null && v.getTeacher() == null
                                && v.getType() == null) {
                            // Beschreibung aus der letzten Zeile fortgesetzt
                            Vertretung previousVertretung = kv.getVertretung()
                                    .get(kv.getVertretung().size() - 1);
                            previousVertretung.setDesc(previousVertretung.getDesc() + " " + v.getDesc());
                            zeile = zeile.nextElementSibling();
                            continue;
                        }

                        if (v.getType() == null)
                            v.setType("Vertretung");

                        if (!v.getLesson().equals("")) {
                            kv.add(v);
                        }

                        zeile = zeile.nextElementSibling();

                    }
                    tag.getKlassen().put(className, kv);
                } catch (Throwable e) {

                    e.printStackTrace();
                }
            }
        }
    } else {
        boolean hasType = false;
        for (int i = 0; i < data.getJSONArray("columns").length(); i++) {
            if (data.getJSONArray("columns").getString(i).equals("type"))
                hasType = true;
        }
        Vertretung previousVertretung = null;
        for (Element zeile : table.select("tr.list.odd:not(:has(td.inline_header)), "
                + "tr.list.even:not(:has(td.inline_header)), " + "tr:has(td[align=center]:has(font[color]))")) {
            Vertretung v = new Vertretung();
            String klassen = "";
            int i = 0;
            for (Element spalte : zeile.select("td")) {
                if (!hasData(spalte.text())) {
                    i++;
                    continue;
                }
                String type = data.getJSONArray("columns").getString(i);
                if (type.equals("lesson"))
                    v.setLesson(spalte.text());
                else if (type.equals("subject"))
                    v.setSubject(spalte.text());
                else if (type.equals("previousSubject"))
                    v.setPreviousSubject(spalte.text());
                else if (type.equals("type"))
                    v.setType(spalte.text());
                else if (type.equals("type-entfall")) {
                    if (spalte.text().equals("x"))
                        v.setType("Entfall");
                    else if (!hasType)
                        v.setType("Vertretung");
                } else if (type.equals("room"))
                    v.setRoom(spalte.text());
                else if (type.equals("previousRoom"))
                    v.setPreviousRoom(spalte.text());
                else if (type.equals("desc"))
                    v.setDesc(spalte.text());
                else if (type.equals("desc-type")) {
                    v.setDesc(spalte.text());
                    v.setType(recognizeType(spalte.text()));
                } else if (type.equals("teacher"))
                    v.setTeacher(spalte.text());
                else if (type.equals("previousTeacher"))
                    v.setPreviousTeacher(spalte.text());
                else if (type.equals("class"))
                    klassen = getClassName(spalte.text(), data);
                i++;
            }

            if (v.getDesc() != null && v.getLesson() == null && v.getPreviousRoom() == null
                    && v.getPreviousSubject() == null && v.getPreviousTeacher() == null && v.getRoom() == null
                    && v.getSubject() == null && v.getTeacher() == null && v.getType() == null
                    && previousVertretung != null) {
                // Beschreibung aus der letzten Zeile fortgesetzt
                previousVertretung.setDesc(previousVertretung.getDesc() + " " + v.getDesc());
                continue;
            }

            if (v.getType() == null) {
                if (zeile.select("strike").size() > 0 || (v.getSubject() == null && v.getRoom() == null
                        && v.getTeacher() == null && v.getPreviousSubject() != null))
                    v.setType("Entfall");
                else
                    v.setType("Vertretung");
            }

            List<String> affectedClasses;

            // Detect things like "5-12"
            Pattern pattern = Pattern.compile("(\\d+) ?- ?(\\d+)");
            Matcher matcher = pattern.matcher(klassen);
            if (matcher.find()) {
                affectedClasses = new ArrayList<String>();
                int min = Integer.parseInt(matcher.group(1));
                int max = Integer.parseInt(matcher.group(2));
                try {
                    for (String klasse : getAllClasses()) {
                        Pattern pattern2 = Pattern.compile("\\d+");
                        Matcher matcher2 = pattern2.matcher(klasse);
                        if (matcher2.find()) {
                            int num = Integer.parseInt(matcher2.group());
                            if (min <= num && num <= max)
                                affectedClasses.add(klasse);
                        }
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } else {
                if (data.optBoolean("classes_separated", true)) {
                    affectedClasses = Arrays.asList(klassen.split(", "));
                } else {
                    affectedClasses = new ArrayList<String>();
                    try {
                        for (String klasse : getAllClasses()) { // TODO:
                            // Gibt es
                            // eine
                            // bessere
                            // Mglichkeit?
                            StringBuilder regex = new StringBuilder();
                            for (char character : klasse.toCharArray()) {
                                regex.append(character);
                                regex.append(".*");
                            }
                            if (klassen.matches(regex.toString()))
                                affectedClasses.add(klasse);
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

            for (String klasse : affectedClasses) {
                if (isValidClass(klasse)) {
                    KlassenVertretungsplan kv = tag.getKlassen().get(klasse);
                    if (kv == null)
                        kv = new KlassenVertretungsplan(klasse);
                    kv.add(v);
                    tag.getKlassen().put(klasse, kv);
                }
            }
            previousVertretung = v;
        }
    }
    if (data.optBoolean("sort_classes")) {
        List<KlassenVertretungsplan> list = new ArrayList<>(tag.getKlassen().values());
        Collections.sort(list, new Comparator<KlassenVertretungsplan>() {
            @Override
            public int compare(KlassenVertretungsplan o1, KlassenVertretungsplan o2) {
                return o1.getKlasse().compareTo(o2.getKlasse());
            }
        });
        LinkedHashMap<String, KlassenVertretungsplan> hashMap = new LinkedHashMap<>();
        for (KlassenVertretungsplan klasse : list) {
            hashMap.put(klasse.getKlasse(), klasse);
        }
        tag.setKlassen(hashMap);
    }
}

From source file:me.vertretungsplan.parser.UntisInfoParser.java

private void parseSubstitutionDays(SubstitutionSchedule v, String lastChange, Document doc, String klasse)
        throws JSONException, CredentialInvalidException {
    Elements days = doc.select("#vertretung > p > b, #vertretung > b, p:has(a[href^=#]) > b");
    if (days.size() > 0) {
        for (Element dayElem : days) {
            SubstitutionScheduleDay day = new SubstitutionScheduleDay();

            day.setLastChangeString(lastChange);
            day.setLastChange(ParserUtils.parseDateTime(lastChange));

            String date = dayElem.text();
            day.setDateString(date);//  ww w .j  a v  a 2 s . c  om
            day.setDate(ParserUtils.parseDate(date));

            Element next;
            if (dayElem.parent().tagName().equals("p")) {
                next = dayElem.parent().nextElementSibling().nextElementSibling();
            } else {
                next = dayElem.parent().select("p").first().nextElementSibling();
            }
            parseDay(day, next, v, klasse);
        }
    } else if (doc.select("tr:has(td[align=center]):gt(0)").size() > 0) {
        parseSubstitutionTable(v, null, doc);
        v.setLastChangeString(lastChange);
        v.setLastChange(ParserUtils.parseDateTime(lastChange));
    }
}

From source file:de.geeksfactory.opacclient.apis.Pica.java

@Override
public List<SearchField> getSearchFields() throws IOException, JSONException {
    if (!initialised) {
        start();/*from w  w w .  ja v a2  s  . c  o m*/
    }

    String html = httpGet(opac_url + "/LNG=" + getLang() + "/DB=" + db + "/ADVANCED_SEARCHFILTER",
            getDefaultEncoding());
    Document doc = Jsoup.parse(html);
    List<SearchField> fields = new ArrayList<>();

    Elements options = doc.select("select[name=IKT0] option");
    for (Element option : options) {
        TextSearchField field = new TextSearchField();
        field.setDisplayName(option.text());
        field.setId(option.attr("value"));
        field.setHint("");
        field.setData(new JSONObject("{\"ADI\": false}"));

        Pattern pattern = Pattern.compile("\\[X?[A-Za-z]{2,3}:?\\]|\\(X?[A-Za-z]{2,3}:?\\)");
        Matcher matcher = pattern.matcher(field.getDisplayName());
        if (matcher.find()) {
            field.getData().put("meaning", matcher.group().replace(":", "").toUpperCase());
            field.setDisplayName(matcher.replaceFirst("").trim());
        }

        fields.add(field);
    }

    Elements sort = doc.select("select[name=SRT]");
    if (sort.size() > 0) {
        DropdownSearchField field = new DropdownSearchField();
        field.setDisplayName(sort.first().parent().parent().select(".longval").first().text());
        field.setId("SRT");
        for (Element option : sort.select("option")) {
            field.addDropdownValue(option.attr("value"), option.text());
        }
        fields.add(field);
    }

    for (Element input : doc.select("input[type=text][name^=ADI]")) {
        TextSearchField field = new TextSearchField();
        field.setDisplayName(input.parent().parent().select(".longkey").text());
        field.setId(input.attr("name"));
        field.setHint(input.parent().select("span").text());
        field.setData(new JSONObject("{\"ADI\": true}"));
        fields.add(field);
    }

    for (Element dropdown : doc.select("select[name^=ADI]")) {
        DropdownSearchField field = new DropdownSearchField();
        field.setDisplayName(dropdown.parent().parent().select(".longkey").text());
        field.setId(dropdown.attr("name"));
        for (Element option : dropdown.select("option")) {
            field.addDropdownValue(option.attr("value"), option.text());
        }
        fields.add(field);
    }

    Elements fuzzy = doc.select("input[name=FUZZY]");
    if (fuzzy.size() > 0) {
        CheckboxSearchField field = new CheckboxSearchField();
        field.setDisplayName(fuzzy.first().parent().parent().select(".longkey").first().text());
        field.setId("FUZZY");
        fields.add(field);
    }

    Elements mediatypes = doc.select("input[name=ADI_MAT]");
    if (mediatypes.size() > 0) {
        DropdownSearchField field = new DropdownSearchField();
        field.setDisplayName("Materialart");
        field.setId("ADI_MAT");

        field.addDropdownValue("", "Alle");
        for (Element mt : mediatypes) {
            field.addDropdownValue(mt.attr("value"),
                    mt.parent().nextElementSibling().text().replace("\u00a0", ""));
        }
        fields.add(field);
    }

    return fields;
}

From source file:com.aestasit.markdown.slidery.converters.TextTemplateConverter.java

private void renderSyntaxHighlightingHtml(final Document slidesDocument, final Configuration config) {
    for (Element code : slidesDocument.select("code")) {
        Charset encoding = config.getInputEncoding();
        ByteArrayInputStream input = new ByteArrayInputStream(code.text().getBytes(encoding));
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        String className = code.className();
        if (StringUtils.isBlank(className)) {
            className = "java";
        }//ww w .  j a v a2s.  c  o m
        Renderer renderer = XhtmlRendererFactory.getRenderer(className);
        if (renderer != null) {
            try {
                renderer.highlight("slidery", input, out, encoding.name(), true);
                code.html(new String(out.toByteArray(), encoding));
                code.select("br").remove();
                removeComments(code);
                code.html(code.html().trim());
                Element parent = code.parent();
                if (parent.tagName() == "pre") {
                    parent.addClass("code");
                }
            } catch (IOException e) {
                // TODO: Handle exception
            }
        }
    }
}