List of usage examples for org.joda.time.format DateTimeFormatter parseLocalDate
public LocalDate parseLocalDate(String text)
From source file:com.simopuve.helper.POIHelper.java
public static Integer getWeekNumber(Date currentDate) { Calendar cal = Calendar.getInstance(); cal.setTime(currentDate);//from w ww. ja v a 2s.c o m Logger.getLogger(POIHelper.class.getName()).log(Level.INFO, "Received date: " + cal.get(Calendar.DAY_OF_MONTH) + "-" + (cal.get(Calendar.MONTH)) + "-" + cal.get(Calendar.YEAR)); org.joda.time.format.DateTimeFormatter fmt = DateTimeFormat.forPattern("dd-MM-yyy"); DateTime nowDate = fmt.parseLocalDate( cal.get(Calendar.DAY_OF_MONTH) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" + cal.get(Calendar.YEAR)) .toDateTimeAtCurrentTime(); //DateTime nowDate = new DateTime(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0, 0); Weeks w = Weeks.weeksBetween(initDateWeek, nowDate); return w.getWeeks() + 435; }
From source file:com.sonicle.webtop.contacts.bol.js.JsContact.java
License:Open Source License
public static Contact buildContact(JsContact js) { DateTimeFormatter ymdFmt = DateTimeUtils.createYmdFormatter(); Contact item = new Contact(); item.setContactId(js.id);//from ww w.j av a2 s .com item.setCategoryId(js.categoryId); item.setDisplayName(js.displayName); item.setTitle(js.title); item.setFirstName(js.firstName); item.setLastName(js.lastName); item.setNickname(js.nickname); item.setGender(EnumUtils.forSerializedName(js.gender, Contact.Gender.class)); item.setMobile(js.mobile); item.setPager1(js.pager1); item.setPager2(js.pager2); item.setEmail1(js.email1); item.setEmail2(js.email2); item.setEmail3(js.email3); item.setInstantMsg1(js.instantMsg1); item.setInstantMsg2(js.instantMsg2); item.setInstantMsg3(js.instantMsg3); item.setWorkAddress(js.workAddress); item.setWorkPostalCode(js.workPostalCode); item.setWorkCity(js.workCity); item.setWorkState(js.workState); item.setWorkCountry(js.workCountry); item.setWorkTelephone1(js.workTelephone1); item.setWorkTelephone2(js.workTelephone2); item.setWorkFax(js.workFax); item.setHomeAddress(js.homeAddress); item.setHomePostalCode(js.homePostalCode); item.setHomeCity(js.homeCity); item.setHomeState(js.homeState); item.setHomeCountry(js.homeCountry); item.setHomeTelephone1(js.homeTelephone1); item.setHomeTelephone2(js.homeTelephone2); item.setHomeFax(js.homeFax); item.setOtherAddress(js.otherAddress); item.setOtherPostalCode(js.otherPostalCode); item.setOtherCity(js.otherCity); item.setOtherState(js.otherState); item.setOtherCountry(js.otherCountry); if (!StringUtils.isBlank(js.company)) item.setCompany(new ContactCompany(null, js.company)); item.setFunction(js.function); item.setDepartment(js.department); item.setManager(js.manager); item.setAssistant(js.assistant); item.setAssistantTelephone(js.assistantTelephone); item.setPartner(js.partner); if (!StringUtils.isEmpty(js.birthday)) item.setBirthday(ymdFmt.parseLocalDate(js.birthday)); if (!StringUtils.isEmpty(js.anniversary)) item.setAnniversary(ymdFmt.parseLocalDate(js.anniversary)); item.setUrl(js.url); item.setNotes(js.notes); // Attachment needs to be treated outside this class in order to have complete access to their streams return item; }
From source file:com.vaushell.superpipes.nodes.buffer.Slot.java
License:Open Source License
/** * Create a slot and parse value.//from w ww.ja va 2 s.com * * @param days List of days, separated by a comma. * @param start Inclusive starting hour (format: HH:mm:ss) * @param end Exclusive ending hour (format: HH:mm:ss) * @return the slot */ public static Slot parse(final String days, final String start, final String end) { // Days final DateTimeFormatter fmtDay = DateTimeFormat.forPattern("E"); final TreeSet<Integer> rDays = new TreeSet<>(); for (final String sDay : days.split(",")) { final int dayOfWeek = fmtDay.parseLocalDate(sDay).getDayOfWeek(); rDays.add(dayOfWeek); } // Hours (HH:mm:ss) final DateTimeFormatter fmtHour = DateTimeFormat.forPattern("HH:mm:ss"); final LocalDateTime min = fmtHour.parseLocalDateTime(start).withMillisOfSecond(0); final LocalDateTime max = fmtHour.parseLocalDateTime(end).withMillisOfSecond(0); return new Slot(rDays, min.getMillisOfDay(), max.getMillisOfDay()); }
From source file:de.geeksfactory.opacclient.apis.BiBer1992.java
License:MIT License
static List<LentItem> parseMediaList(AccountData res, Document doc, JSONObject data) throws JSONException { List<LentItem> media = new ArrayList<>(); if (doc == null) { return media; }//from w w w. j a v a 2s .c om // parse result list JSONObject copymap = data.getJSONObject("accounttable"); Pattern expire = Pattern.compile("Ausweisg.ltigkeit: ([0-9.]+)"); Pattern fees = Pattern.compile("([0-9,.]+) ."); for (Element td : doc.select(".td01x09n")) { String text = td.text().trim(); if (expire.matcher(text).matches()) { res.setValidUntil(expire.matcher(text).replaceAll("$1")); } else if (fees.matcher(text).matches()) { res.setPendingFees(text); } } DateTimeFormatter fmt = DateTimeFormat.forPattern("dd.MM.yyyy").withLocale(Locale.GERMAN); Elements rowElements = doc.select("form[name=medkl] table tr"); // rows: skip 1st row -> title row for (int i = 1; i < rowElements.size(); i++) { Element tr = rowElements.get(i); if (tr.child(0).tagName().equals("th")) { continue; } LentItem item = new LentItem(); Elements mediatypeImg = tr.select("td img"); if (mediatypeImg.size() > 0) { item.setMediaType(getMediaTypeFromImageFilename(null, mediatypeImg.get(0).attr("src"), data)); } Pattern itemIdPat = Pattern .compile("javascript:(?:smAcc|smMedk)\\('[a-z]+','[a-z]+','([A-Za-z0-9]+)'\\)"); // columns: all elements of one media Iterator<?> keys = copymap.keys(); while (keys.hasNext()) { String key = (String) keys.next(); int index; try { index = copymap.has(key) ? copymap.getInt(key) : -1; } catch (JSONException e1) { index = -1; } if (index >= 0) { String value = tr.child(index).text().trim().replace("\u00A0", ""); switch (key) { case "author": value = findTitleAndAuthor(value)[1]; break; case "title": value = findTitleAndAuthor(value)[0]; break; case "returndate": try { value = fmt.parseLocalDate(value).toString(); } catch (IllegalArgumentException e1) { e1.printStackTrace(); } break; } if (tr.child(index).select("a").size() == 1) { Matcher matcher = itemIdPat.matcher(tr.child(index).select("a").attr("href")); if (matcher.find()) item.setId(matcher.group(1)); } if (value != null && value.length() != 0) item.set(key, value); } } if (tr.select("input[type=checkbox][value=YES]").size() > 0) { item.setProlongData(tr.select("input[type=checkbox][value=YES]").attr("name")); } media.add(item); } return media; }
From source file:de.geeksfactory.opacclient.apis.BiBer1992.java
License:MIT License
static List<ReservedItem> parseResList(Document doc, JSONObject data) throws JSONException { List<ReservedItem> reservations = new ArrayList<>(); if (doc == null) { // error message as html result return reservations; }/*from w w w .java 2 s . com*/ // parse result list JSONObject copymap; if (!data.has("reservationtable")) { // reservations not specifically supported, let's just try it // with default values but fail silently copymap = new JSONObject(); copymap.put("author", 3); copymap.put("availability", 6); copymap.put("branch", -1); copymap.put("cancelurl", -1); copymap.put("expirationdate", 5); copymap.put("title", 3); } else { copymap = data.getJSONObject("reservationtable"); } DateTimeFormatter fmt = DateTimeFormat.forPattern("dd.MM.yyyy").withLocale(Locale.GERMAN); Elements rowElements = doc.select("form[name=vorml] table tr"); // rows: skip 1st row -> title row for (int i = 1; i < rowElements.size(); i++) { Element tr = rowElements.get(i); if (tr.child(0).tagName().equals("th")) { continue; } ReservedItem item = new ReservedItem(); item.setCancelData(tr.select("input[type=checkbox]").attr("name")); Elements mediatypeImg = tr.select("td img"); if (mediatypeImg.size() > 0) { item.setMediaType(getMediaTypeFromImageFilename(null, mediatypeImg.get(0).attr("src"), data)); } // columns: all elements of one media Iterator<?> keys = copymap.keys(); while (keys.hasNext()) { String key = (String) keys.next(); int index = copymap.getInt(key); if (index >= 0) { String value = tr.child(index).text().trim(); switch (key) { case "author": value = findTitleAndAuthor(value)[1]; break; case "title": value = findTitleAndAuthor(value)[0]; break; case "availability": try { value = fmt.parseLocalDate(value).toString(); } catch (IllegalArgumentException e1) { key = "status"; } break; case "expirationdate": try { value = fmt.parseLocalDate(value).toString(); } catch (IllegalArgumentException e1) { key = "status"; } break; } if (value != null && value.length() != 0) { item.set(key, value); } } } reservations.add(item); } return reservations; }
From source file:de.geeksfactory.opacclient.apis.Bibliotheca.java
License:MIT License
public static AccountData parse_account(Account acc, Document doc, JSONObject data, ReportHandler reportHandler, JSONObject headers_lent, JSONObject headers_reservations) throws JSONException, NotReachableException { if (doc.select(".kontozeile_center table").size() == 0) { throw new NotReachableException(); }/*from w w w. j a va2 s . com*/ Map<String, Integer> copymap = new HashMap<>(); Elements headerCells = doc.select(".kontozeile_center table").get(0).select("tr.exemplarmenubar").get(0) .children(); JSONArray headersList = new JSONArray(); JSONArray unknownHeaders = new JSONArray(); int i = 0; for (Element headerCell : headerCells) { String header = headerCell.text(); headersList.put(header); if (headers_lent.has(header)) { if (!headers_lent.isNull(header)) copymap.put(headers_lent.getString(header), i); } else { unknownHeaders.put(header); } i++; } if (unknownHeaders.length() > 0) { // send report JSONObject reportData = new JSONObject(); reportData.put("headers", headersList); reportData.put("unknown_headers", unknownHeaders); Report report = new Report(acc.getLibrary(), "bibliotheca", "unknown header - lent", DateTime.now(), reportData); reportHandler.sendReport(report); // fallback to JSON JSONObject accounttable = data.getJSONObject("accounttable"); copymap = jsonToMap(accounttable); } List<LentItem> media = new ArrayList<>(); Elements exemplartrs = doc.select(".kontozeile_center table").get(0).select("tr.tabKonto"); DateTimeFormatter fmt = DateTimeFormat.forPattern("dd.MM.yyyy").withLocale(Locale.GERMAN); DateTimeFormatter fmt2 = DateTimeFormat.forPattern("d/M/yyyy").withLocale(Locale.GERMAN); for (Element tr : exemplartrs) { LentItem item = new LentItem(); for (Entry<String, Integer> entry : copymap.entrySet()) { String key = entry.getKey(); int index = entry.getValue(); if (key.equals("prolongurl")) { if (tr.child(index).children().size() > 0) { item.setProlongData(tr.child(index).child(0).attr("href")); item.setRenewable(!tr.child(index).child(0).attr("href").contains("vermsg")); } } else if (key.equals("returndate")) { try { item.setDeadline(fmt.parseLocalDate(tr.child(index).text())); } catch (IllegalArgumentException e1) { try { item.setDeadline(fmt2.parseLocalDate(tr.child(index).text())); } catch (IllegalArgumentException e2) { e2.printStackTrace(); } } } else { item.set(key, tr.child(index).text()); } } media.add(item); } copymap = new HashMap<>(); headerCells = doc.select(".kontozeile_center table").get(1).select("tr.exemplarmenubar").get(0).children(); headersList = new JSONArray(); unknownHeaders = new JSONArray(); i = 0; for (Element headerCell : headerCells) { String header = headerCell.text(); headersList.put(header); if (headers_reservations.has(header)) { if (!headers_reservations.isNull(header)) { copymap.put(headers_reservations.getString(header), i); } } else { unknownHeaders.put(header); } i++; } if (unknownHeaders.length() > 0) { // send report JSONObject reportData = new JSONObject(); reportData.put("headers", headersList); reportData.put("unknown_headers", unknownHeaders); Report report = new Report(acc.getLibrary(), "bibliotheca", "unknown header - reservations", DateTime.now(), reportData); reportHandler.sendReport(report); // fallback to JSON JSONObject reservationtable = data.getJSONObject("reservationtable"); copymap = jsonToMap(reservationtable); } List<ReservedItem> reservations = new ArrayList<>(); exemplartrs = doc.select(".kontozeile_center table").get(1).select("tr.tabKonto"); for (Element tr : exemplartrs) { ReservedItem item = new ReservedItem(); for (Entry<String, Integer> entry : copymap.entrySet()) { String key = entry.getKey(); int index = entry.getValue(); if (key.equals("cancelurl")) { if (tr.child(index).children().size() > 0) { item.setCancelData(tr.child(index).child(0).attr("href")); } } else if (key.equals("availability")) { try { item.setReadyDate(fmt.parseLocalDate(tr.child(index).text())); } catch (IllegalArgumentException e1) { try { item.setReadyDate(fmt2.parseLocalDate(tr.child(index).text())); } catch (IllegalArgumentException e2) { e2.printStackTrace(); } } } else if (key.equals("expirationdate")) { try { item.setExpirationDate(fmt.parseLocalDate(tr.child(index).text())); } catch (IllegalArgumentException e1) { try { item.setExpirationDate(fmt2.parseLocalDate(tr.child(index).text())); } catch (IllegalArgumentException e2) { item.setStatus(tr.child(index).text()); } } } else { item.set(key, tr.child(index).text()); } } reservations.add(item); } AccountData res = new AccountData(acc.getId()); for (Element row : doc.select(".kontozeile_center, div[align=center]")) { String text = row.text().trim(); if (text.matches(".*Ausstehende Geb.+hren:[^0-9]+([0-9.,]+)[^0-9A-Z]*(|EUR|CHF|Fr.).*")) { text = text.replaceAll( ".*Ausstehende Geb.+hren:[^0-9]+([0-9.," + "]+)[^0-9A-Z]*(|EUR|CHF|Fr.).*", "$1 $2"); res.setPendingFees(text); } if (text.matches("Ihr Ausweis ist g.ltig bis:.*")) { text = text.replaceAll("Ihr Ausweis ist g.ltig bis:[^A-Za-z0-9]+", ""); res.setValidUntil(text); } else if (text.matches("Ausweis g.ltig bis:.*")) { text = text.replaceAll("Ausweis g.ltig bis:[^A-Za-z0-9]+", ""); res.setValidUntil(text); } } res.setLent(media); res.setReservations(reservations); return res; }
From source file:de.geeksfactory.opacclient.apis.Heidi.java
License:MIT License
@Override public DetailledItem getResultById(String id, final String homebranch) throws IOException { if (sessid == null) { start();/*from www. j ava 2s.c o m*/ } // Homebranch if (homebranch != null && !"".equals(homebranch)) { cookieStore.addCookie(new BasicClientCookie("zweig", homebranch)); } String html = httpGet(opac_url + "/titel.cgi?katkey=" + id + "&sess=" + sessid, ENCODING, false, cookieStore); Document doc = Jsoup.parse(html); DetailledItem item = new DetailledItem(); item.setId(id); Elements table = doc.select(".titelsatz tr"); for (Element tr : table) { if (tr.select("th").size() == 0 || tr.select("td").size() == 0) { continue; } String d = tr.select("th").first().text(); String c = tr.select("td").first().text(); if (d.equals("Titel:")) { item.setTitle(c); } else if ((d.contains("URL") || d.contains("Link")) && tr.select("td a").size() > 0) { item.addDetail(new Detail(d, tr.select("td a").first().attr("href"))); } else { item.addDetail(new Detail(d, c)); } } if (doc.select(".ex table tr").size() > 0) { table = doc.select(".ex table tr"); DateTimeFormatter fmt = DateTimeFormat.forPattern("dd.MM.yyyy").withLocale(Locale.GERMAN); for (Element tr : table) { if (tr.hasClass("exueber") || tr.select(".exsig").size() == 0 || tr.select(".exso").size() == 0 || tr.select(".exstatus").size() == 0) { continue; } Copy copy = new Copy(); copy.setShelfmark(tr.select(".exsig").first().text()); copy.setBranch(tr.select(".exso").first().text()); String status = tr.select(".exstatus").first().text(); if (status.contains("entliehen bis")) { copy.setReturnDate(fmt.parseLocalDate(status.replaceAll("entliehen bis ([0-9.]+) .*", "$1"))); copy.setReservations(status.replaceAll(".*\\(.*Vormerkungen: ([0-9]+)\\)", "$1")); copy.setStatus("entliehen"); } else { copy.setStatus(status); } item.addCopy(copy); } } for (Element a : doc.select(".status1 a")) { if (a.attr("href").contains("bestellung.cgi")) { item.setReservable(true); item.setReservation_info(id); break; } } for (Element a : doc.select(".titelsatz a")) { if (a.text().trim().matches("B.+nde")) { Map<String, String> volumesearch = new HashMap<>(); volumesearch.put("query", getQueryParamsFirst(a.attr("href")).get("query")); item.setVolumesearch(volumesearch); } } return item; }
From source file:de.geeksfactory.opacclient.apis.Heidi.java
License:MIT License
@Override public AccountData account(Account account) throws IOException, JSONException, OpacErrorException { login(account);/*from w w w.ja va2 s . co m*/ String html; Document doc; AccountData adata = new AccountData(account.getId()); DateTimeFormatter fmt = DateTimeFormat.forPattern("dd.MM.yyyy").withLocale(Locale.GERMAN); html = httpGet(opac_url + "/konto.cgi?sess=" + sessid, getDefaultEncoding()); doc = Jsoup.parse(html); doc.setBaseUri(opac_url + "/"); for (Element td : doc.select("table.konto td")) { if (td.text().contains("Offene")) { String text = td.text().trim().replaceAll( "Offene[^0-9]+Geb.+hren:[^0-9]+([0-9.," + "]+)[^0-9A-Z]*(|EUR|CHF|Fr.)", "$1 $2"); adata.setPendingFees(text); } } List<LentItem> lent = new ArrayList<>(); for (Element tr : doc.select("table.kontopos tr")) { LentItem item = new LentItem(); Element desc = tr.child(1).select("label").first(); String dates = tr.child(2).text().trim(); if (tr.child(1).select("a").size() > 0) { String kk = getQueryParamsFirst(tr.child(1).select("a").first().absUrl("href")).get("katkey"); item.setId(kk); } int i = 0; for (Node node : desc.childNodes()) { if (node instanceof TextNode) { String text = ((TextNode) node).text().trim(); if (i == 0) { item.setAuthor(text); } else if (i == 1) { item.setTitle(text); } else if (text.contains("Mediennummer")) { item.setBarcode(text.replace("Mediennummer: ", "")); } i++; } } if (tr.child(0).select("input").size() == 1) { item.setProlongData(tr.child(0).select("input").first().val()); item.setRenewable(true); } else { item.setProlongData("" + tr.child(0).select("span").first().attr("class")); item.setRenewable(false); } String todate = dates; if (todate.contains("-")) { String[] datesplit = todate.split("-"); todate = datesplit[1].trim(); } try { item.setDeadline(fmt.parseLocalDate(todate.substring(0, 10))); } catch (IllegalArgumentException e) { e.printStackTrace(); } lent.add(item); } adata.setLent(lent); List<ReservedItem> reservations = new ArrayList<>(); html = httpGet(opac_url + "/konto.cgi?konto=v&sess=" + sessid, getDefaultEncoding()); reservations.addAll(parse_reservations(html)); html = httpGet(opac_url + "/konto.cgi?konto=b&sess=" + sessid, getDefaultEncoding()); reservations.addAll(parse_reservations(html)); adata.setReservations(reservations); return adata; }
From source file:de.geeksfactory.opacclient.apis.Heidi.java
License:MIT License
protected List<ReservedItem> parse_reservations(String html) { Document doc = Jsoup.parse(html); List<ReservedItem> reservations = new ArrayList<>(); DateTimeFormatter fmt = DateTimeFormat.forPattern("dd.MM.yyyy").withLocale(Locale.GERMAN); for (Element tr : doc.select("table.kontopos tr")) { ReservedItem item = new ReservedItem(); Element desc = tr.child(1).select("label").first(); Element pos = tr.child(3); if (tr.child(1).select("a").size() > 0) { String kk = getQueryParamsFirst(tr.child(1).select("a").first().absUrl("href")).get("katkey"); item.setId(kk);// w w w .j av a 2 s . c o m } if (tr.child(0).select("input").size() > 0) { item.setCancelData(tr.child(0).select("input").first().val()); } int i = 0; for (Node node : desc.childNodes()) { if (node instanceof TextNode) { String text = ((TextNode) node).text().trim(); if (i == 0) { item.setAuthor(text); } else if (i == 1) { item.setTitle(text); } i++; } } i = 0; for (Node node : pos.childNodes()) { if (node instanceof TextNode) { String text = ((TextNode) node).text().trim(); if (i == 0 && text.contains("")) { try { item.setReadyDate(fmt.parseLocalDate(text)); } catch (IllegalArgumentException e) { item.setStatus(text); } } else if (i == 1) { item.setBranch(text); } i++; } } reservations.add(item); } return reservations; }
From source file:de.geeksfactory.opacclient.apis.IOpac.java
License:MIT License
static void parseMediaList(List<LentItem> media, Document doc, JSONObject data) { if (doc.select("a[name=AUS]").size() == 0) return;/*from w ww. j a va 2 s. c o m*/ Elements copytrs = doc.select("a[name=AUS] ~ table, a[name=AUS] ~ form table").first().select("tr"); doc.setBaseUri(data.optString("baseurl")); DateTimeFormatter fmt = DateTimeFormat.forPattern("dd.MM.yyyy").withLocale(Locale.GERMAN); int trs = copytrs.size(); if (trs < 2) { return; } assert (trs > 0); JSONObject copymap = new JSONObject(); try { if (data.has("accounttable")) { copymap = data.getJSONObject("accounttable"); } } catch (JSONException e) { } Pattern datePattern = Pattern.compile("\\d{2}\\.\\d{2}\\.\\d{4}"); for (int i = 1; i < trs; i++) { Element tr = copytrs.get(i); LentItem item = new LentItem(); if (copymap.optInt("title", 0) >= 0) { item.setTitle(tr.child(copymap.optInt("title", 0)).text().trim().replace("\u00a0", "")); } if (copymap.optInt("author", 1) >= 0) { item.setAuthor(tr.child(copymap.optInt("author", 1)).text().trim().replace("\u00a0", "")); } if (copymap.optInt("format", 2) >= 0) { item.setFormat(tr.child(copymap.optInt("format", 2)).text().trim().replace("\u00a0", "")); } int prolongCount = 0; if (copymap.optInt("prolongcount", 3) >= 0) { prolongCount = Integer .parseInt(tr.child(copymap.optInt("prolongcount", 3)).text().trim().replace("\u00a0", "")); item.setStatus(String.valueOf(prolongCount) + "x verl."); } if (data.optInt("maxprolongcount", -1) != -1) { item.setRenewable(prolongCount < data.optInt("maxprolongcount", -1)); } if (copymap.optInt("returndate", 4) >= 0) { String value = tr.child(copymap.optInt("returndate", 4)).text().trim().replace("\u00a0", ""); Matcher matcher = datePattern.matcher(value); if (matcher.find()) { try { item.setDeadline(fmt.parseLocalDate(matcher.group())); } catch (IllegalArgumentException e1) { e1.printStackTrace(); } } } if (copymap.optInt("prolongurl", 5) >= 0) { if (tr.children().size() > copymap.optInt("prolongurl", 5)) { Element cell = tr.child(copymap.optInt("prolongurl", 5)); if (cell.select("input[name=MedNrVerlAll]").size() > 0) { // new iOPAC Version 1.45 - checkboxes to prolong multiple items // internal convention: We add "NEW" to the media ID to show that we have // the new iOPAC version Element input = cell.select("input[name=MedNrVerlAll]").first(); String value = input.val(); item.setProlongData("NEW" + value); item.setId(value.split(";")[0]); if (input.hasAttr("disabled")) item.setRenewable(false); } else { // previous versions - link for prolonging on every medium String link = cell.select("a").attr("href"); item.setProlongData(link); // find media number with regex Pattern pattern = Pattern.compile("mednr=([^&]*)&"); Matcher matcher = pattern.matcher(link); if (matcher.find() && matcher.group() != null) item.setId(matcher.group(1)); } } } media.add(item); } assert (media.size() == trs - 1); }