@Test public void insertChildrenAtPosition() { Document doc = Jsoup.parse( "<div id=1>Text1 <p>One</p> Text2 <p>Two</p></div><div id=2>Text3 <p>Three</p></div>"); Element div1 = doc.select("div").get(0); Elements p1s = div1.select("p"); Element div2 = doc.select("div").get(1); assertEquals(2, div2.childNodeSize()); div2.insertChildren(-1, p1s); assertEquals(2, div1.childNodeSize()); // moved two out assertEquals(4, div2.childNodeSize()); assertEquals(3, p1s.get(1).siblingIndex()); // should be last List<Node> els = new ArrayList<Node>(); Element el1 = new Element(Tag.valueOf("span"), "").text("Span1"); Element el2 = new Element(Tag.valueOf("span"), "").text("Span2"); TextNode tn1 = new TextNode("Text4", ""); els.add(el1); els.add(el2); els.add(tn1); assertNull(el1.parent()); div2.insertChildren(-2, els); assertEquals(div2, el1.parent()); assertEquals(7, div2.childNodeSize()); assertEquals(3, el1.siblingIndex()); assertEquals(4, el2.siblingIndex()); assertEquals(5, tn1.siblingIndex()); }
@Override public List<HSDeck> getDeckListFiltered(final DeckBrowserRequest deckBrowserRequest) { final List<HSPlayerClass> classFilter = deckBrowserRequest.getClassFilter(); final ArrayList<HSDeck> list = new ArrayList<HSDeck>(); try { String s2; final String s = s2 = HPDeckSource.BASE_URL + HPDeckSource.DECKS_URL; if (deckBrowserRequest.getSortingKey() != null) { s2 = s; if (!deckBrowserRequest.getSortingKey().trim().isEmpty()) { s2 = s + "&" + HP_REQUEST_PARAMS.FILTER_OPTION.requestParam + deckBrowserRequest.getSortingKey(); } } String string = s2; if (deckBrowserRequest.getDeckNameFilter() != null) { string = s2; if (!deckBrowserRequest.getDeckNameFilter().trim().isEmpty()) { string = s2 + "&" + HP_REQUEST_PARAMS.FILTER_SEARCH.requestParam + this.constructDeckNameFilter(deckBrowserRequest.getDeckNameFilter()); } } String string2 = string; if (classFilter != null) { string2 = string; if (classFilter.size() > 0) { string2 = string; if (!classFilter.contains(HSPlayerClass.ALL)) { int n = 0; for (final HSPlayerClass hsPlayerClass : classFilter) { if (hsPlayerClass.isSingleClass()) { n += hsPlayerClass.getHsFilterValue(); } } string2 = string + "&" + HP_REQUEST_PARAMS.FILTER_CLASS.requestParam + n; } } } String string3 = string2; if (deckBrowserRequest.getOrderBy() != null) { string3 = string2; if (!deckBrowserRequest.getOrderBy().isEmpty()) { String s3; if (deckBrowserRequest.isAsc()) { s3 = ""; } else { s3 = "-"; } string3 = string2 + "&" + HP_REQUEST_PARAMS.FILTER_SORT.requestParam + s3 + deckBrowserRequest.getOrderBy(); } } final Elements select = Jsoup.connect(string3) .referrer(HPDeckSource.BASE_URL + "/") .followRedirects(true) .ignoreHttpErrors(true) .get() .select("table#decks tr"); for (int i = 1; i < select.size() - 1; ++i) { final Element value = select.get(i); final Elements select2 = value.select("td.col-name span.tip a"); final Elements select3 = value.select("td.col-deck-type"); final Elements select4 = value.select("td.col-class"); final Elements select5 = value.select("td.col-ratings div.rating-sum"); final Elements select6 = value.select("td.col-dust-cost"); final Elements select7 = value.select("td.col-updated abbr"); final HSDeck hsDeck = new HSDeck(); hsDeck.setName(select2.get(0).text()); hsDeck.setUrl(select2.get(0).attr("href")); hsDeck.setType(select3.get(0).text()); hsDeck.setPlayerClass(select4.get(0).text()); hsDeck.setRating(select5.get(0).text()); hsDeck.setCost(select6.get(0).text()); if (select7.get(0).hasAttr("data-epoch")) { hsDeck.setLastUpdate(select7.get(0).attributes().get("data-epoch")); } hsDeck.setLastUpdateAsString(select7.get(0).text()); list.add(hsDeck); } } catch (IOException ex) { ex.printStackTrace(); } return list; }