/** @inheritDoc */ public Map<Date, String> getWeblogEntryStringMap(WeblogEntrySearchCriteria wesc) throws WebloggerException { TreeMap<Date, String> map = new TreeMap<Date, String>(Collections.reverseOrder()); List<WeblogEntry> entries = getWeblogEntries(wesc); Calendar cal = Calendar.getInstance(); SimpleDateFormat formatter = DateUtil.get8charDateFormat(); if (wesc.getWeblog() != null) { TimeZone tz = wesc.getWeblog().getTimeZoneInstance(); cal.setTimeZone(tz); formatter.setTimeZone(tz); } for (WeblogEntry entry : entries) { Date sDate = DateUtil.getNoonOfDay(entry.getPubTime(), cal); if (map.get(sDate) == null) { map.put(sDate, formatter.format(sDate)); } } return map; }
/** @inheritDoc */ public Map<Date, List<WeblogEntry>> getWeblogEntryObjectMap(WeblogEntrySearchCriteria wesc) throws WebloggerException { TreeMap<Date, List<WeblogEntry>> map = new TreeMap<Date, List<WeblogEntry>>(Collections.reverseOrder()); List<WeblogEntry> entries = getWeblogEntries(wesc); Calendar cal = Calendar.getInstance(); if (wesc.getWeblog() != null) { cal.setTimeZone(wesc.getWeblog().getTimeZoneInstance()); } for (WeblogEntry entry : entries) { Date sDate = DateUtil.getNoonOfDay(entry.getPubTime(), cal); List<WeblogEntry> dayEntries = map.get(sDate); if (dayEntries == null) { dayEntries = new ArrayList<WeblogEntry>(); map.put(sDate, dayEntries); } dayEntries.add(entry); } return map; }
/** @inheritDoc */ public List<WeblogEntry> getWeblogEntries(WeblogEntrySearchCriteria wesc) throws WebloggerException { WeblogCategory cat = null; if (StringUtils.isNotEmpty(wesc.getCatName()) && wesc.getWeblog() != null) { cat = getWeblogCategoryByName(wesc.getWeblog(), wesc.getCatName()); } List<Object> params = new ArrayList<Object>(); int size = 0; StringBuilder queryString = new StringBuilder(); if (wesc.getTags() == null || wesc.getTags().size() == 0) { queryString.append("SELECT e FROM WeblogEntry e WHERE "); } else { queryString.append("SELECT e FROM WeblogEntry e JOIN e.tags t WHERE "); queryString.append("("); for (int i = 0; i < wesc.getTags().size(); i++) { if (i != 0) { queryString.append(" OR "); } params.add(size++, wesc.getTags().get(i)); queryString.append(" t.name = ?").append(size); } queryString.append(") AND "); } if (wesc.getWeblog() != null) { params.add(size++, wesc.getWeblog().getId()); queryString.append("e.website.id = ?").append(size); } else { params.add(size++, Boolean.TRUE); queryString.append("e.website.visible = ?").append(size); } if (wesc.getUser() != null) { params.add(size++, wesc.getUser().getUserName()); queryString.append(" AND e.creatorUserName = ?").append(size); } if (wesc.getStartDate() != null) { Timestamp start = new Timestamp(wesc.getStartDate().getTime()); params.add(size++, start); queryString.append(" AND e.pubTime >= ?").append(size); } if (wesc.getEndDate() != null) { Timestamp end = new Timestamp(wesc.getEndDate().getTime()); params.add(size++, end); queryString.append(" AND e.pubTime <= ?").append(size); } if (cat != null) { params.add(size++, cat.getId()); queryString.append(" AND e.category.id = ?").append(size); } if (wesc.getStatus() != null) { params.add(size++, wesc.getStatus()); queryString.append(" AND e.status = ?").append(size); } if (wesc.getLocale() != null) { params.add(size++, wesc.getLocale() + '%'); queryString.append(" AND e.locale like ?").append(size); } if (StringUtils.isNotEmpty(wesc.getText())) { params.add(size++, '%' + wesc.getText() + '%'); queryString.append(" AND ( e.text LIKE ?").append(size); queryString.append(" OR e.summary LIKE ?").append(size); queryString.append(" OR e.title LIKE ?").append(size); queryString.append(") "); } if (wesc.getSortBy() != null && wesc.getSortBy().equals(WeblogEntrySearchCriteria.SortBy.UPDATE_TIME)) { queryString.append(" ORDER BY e.updateTime "); } else { queryString.append(" ORDER BY e.pubTime "); } if (wesc.getSortOrder() != null && wesc.getSortOrder().equals(WeblogEntrySearchCriteria.SortOrder.ASCENDING)) { queryString.append("ASC "); } else { queryString.append("DESC "); } TypedQuery<WeblogEntry> query = strategy.getDynamicQuery(queryString.toString(), WeblogEntry.class); for (int i = 0; i < params.size(); i++) { query.setParameter(i + 1, params.get(i)); } if (wesc.getOffset() != 0) { query.setFirstResult(wesc.getOffset()); } if (wesc.getMaxResults() != -1) { query.setMaxResults(wesc.getMaxResults()); } return query.getResultList(); }