Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogEntryManagerImpl.java URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogEntryManagerImpl.java?rev=1606568&r1=1606567&r2=1606568&view=diff ============================================================================== --- roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogEntryManagerImpl.java (original) +++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogEntryManagerImpl.java Sun Jun 29 19:09:13 2014 @@ -23,6 +23,7 @@ import java.text.SimpleDateFormat; import java.sql.Timestamp; import javax.persistence.NoResultException; import javax.persistence.Query; +import javax.persistence.TypedQuery; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -69,12 +70,12 @@ public class JPAWeblogEntryManagerImpl i // cached mapping of entryAnchors -> entryIds private Map<String, String> entryAnchorToIdMap = new HashMap<String, String>(); - private static final Comparator TAG_STAT_NAME_COMPARATOR = new TagStatComparator(); + private static final Comparator<TagStat> TAG_STAT_NAME_COMPARATOR = new TagStatComparator(); - private static final Comparator TAG_STAT_COUNT_REVERSE_COMPARATOR = + private static final Comparator<TagStat> TAG_STAT_COUNT_REVERSE_COMPARATOR = Collections.reverseOrder(TagStatCountComparator.getInstance()); - private static final Comparator STAT_COUNT_COUNT_REVERSE_COMPARATOR = + private static final Comparator<StatCount> STAT_COUNT_COUNT_REVERSE_COMPARATOR = Collections.reverseOrder(StatCountCountComparator.getInstance()); @@ -258,9 +259,7 @@ public class JPAWeblogEntryManagerImpl i this.strategy.remove(att); } } - // TODO: can we eliminate this unnecessary flush with OpenJPA 1.0 - this.strategy.flush(); - + // remove entry this.strategy.remove(entry); @@ -282,7 +281,7 @@ public class JPAWeblogEntryManagerImpl i return Collections.emptyList(); } - Query query; + TypedQuery<WeblogEntry> query; WeblogCategory category; List<Object> params = new ArrayList<Object>(); @@ -327,7 +326,7 @@ public class JPAWeblogEntryManagerImpl i } else { whereClause.append(" ORDER BY e.pubTime DESC"); } - query = strategy.getDynamicQuery(queryString + whereClause.toString()); + query = strategy.getDynamicQuery(queryString + whereClause.toString(), WeblogEntry.class); for (int i=0; i<params.size(); i++) { query.setParameter(i+1, params.get(i)); } @@ -346,8 +345,8 @@ public class JPAWeblogEntryManagerImpl i throw new WebloggerException("website is null"); } - Query q = strategy.getNamedQuery( - "WeblogCategory.getByWeblog"); + TypedQuery<WeblogCategory> q = strategy.getNamedQuery( + "WeblogCategory.getByWeblog", WeblogCategory.class); q.setParameter(1, website); return q.getResultList(); } @@ -442,7 +441,7 @@ public class JPAWeblogEntryManagerImpl i } - Query query = strategy.getDynamicQuery(queryString.toString()); + TypedQuery<WeblogEntry> query = strategy.getDynamicQuery(queryString.toString(), WeblogEntry.class); for (int i=0; i<params.size(); i++) { query.setParameter(i+1, params.get(i)); } @@ -462,8 +461,8 @@ public class JPAWeblogEntryManagerImpl i */ public List<WeblogEntry> getWeblogEntriesPinnedToMain(Integer max) throws WebloggerException { - Query query = strategy.getNamedQuery( - "WeblogEntry.getByPinnedToMain&statusOrderByPubTimeDesc"); + TypedQuery<WeblogEntry> query = strategy.getNamedQuery( + "WeblogEntry.getByPinnedToMain&statusOrderByPubTimeDesc", WeblogEntry.class); query.setParameter(1, Boolean.TRUE); query.setParameter(2, PubStatus.PUBLISHED); if (max != null) { @@ -527,13 +526,13 @@ public class JPAWeblogEntryManagerImpl i } // mapping key is combo of weblog + anchor - String mappingKey = website.getHandle()+":"+anchor; + String mappingKey = website.getHandle() + ":" + anchor; // check cache first // NOTE: if we ever allow changing anchors then this needs updating if(this.entryAnchorToIdMap.containsKey(mappingKey)) { - WeblogEntry entry = this.getWeblogEntry((String) this.entryAnchorToIdMap.get(mappingKey)); + WeblogEntry entry = this.getWeblogEntry(this.entryAnchorToIdMap.get(mappingKey)); if(entry != null) { LOG.debug("entryAnchorToIdMap CACHE HIT - " + mappingKey); return entry; @@ -544,13 +543,13 @@ public class JPAWeblogEntryManagerImpl i } // cache failed, do lookup - Query q = strategy.getNamedQuery( - "WeblogEntry.getByWebsite&AnchorOrderByPubTimeDesc"); + TypedQuery<WeblogEntry> q = strategy.getNamedQuery( + "WeblogEntry.getByWebsite&AnchorOrderByPubTimeDesc", WeblogEntry.class); q.setParameter(1, website); q.setParameter(2, anchor); WeblogEntry entry; try { - entry = (WeblogEntry)q.getSingleResult(); + entry = q.getSingleResult(); } catch (NoResultException e) { entry = null; } @@ -577,8 +576,8 @@ public class JPAWeblogEntryManagerImpl i name = base + count; } - Query q = strategy.getNamedQuery( - "WeblogEntry.getByWebsite&Anchor"); + TypedQuery<WeblogEntry> q = strategy.getNamedQuery( + "WeblogEntry.getByWebsite&Anchor", WeblogEntry.class); q.setParameter(1, entry.getWebsite()); q.setParameter(2, name); List results = q.getResultList(); @@ -609,7 +608,7 @@ public class JPAWeblogEntryManagerImpl i if (cat.getWeblog().getBloggerCategory().equals(cat)) { return true; } - Query q = strategy.getNamedQuery("WeblogEntry.getByCategory"); + TypedQuery<WeblogEntry> q = strategy.getNamedQuery("WeblogEntry.getByCategory", WeblogEntry.class); q.setParameter(1, cat); int entryCount = q.getResultList().size(); return entryCount > 0; @@ -666,7 +665,7 @@ public class JPAWeblogEntryManagerImpl i queryString.append(" ORDER BY c.postTime ASC"); } - Query query = strategy.getDynamicQuery(queryString.toString()); + TypedQuery<WeblogEntryComment> query = strategy.getDynamicQuery(queryString.toString(), WeblogEntryComment.class); if (csc.getOffset() != 0) { query.setFirstResult(csc.getOffset()); } @@ -730,12 +729,12 @@ public class JPAWeblogEntryManagerImpl i */ public WeblogCategory getWeblogCategoryByName(Weblog weblog, String categoryName) throws WebloggerException { - Query q = strategy.getNamedQuery( - "WeblogCategory.getByWeblog&Name"); + TypedQuery<WeblogCategory> q = strategy.getNamedQuery( + "WeblogCategory.getByWeblog&Name", WeblogCategory.class); q.setParameter(1, weblog); q.setParameter(2, categoryName); try { - return (WeblogCategory)q.getSingleResult(); + return q.getSingleResult(); } catch (NoResultException e) { return null; } @@ -759,19 +758,32 @@ public class JPAWeblogEntryManagerImpl i * @inheritDoc */ public Map<Date, List<WeblogEntry>> getWeblogEntryObjectMap(WeblogEntrySearchCriteria wesc) throws WebloggerException { - return getWeblogEntryMap(wesc, false); + 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 Map<Date, String> getWeblogEntryStringMap(WeblogEntrySearchCriteria wesc) throws WebloggerException { - return getWeblogEntryMap(wesc, true); - } - - private Map getWeblogEntryMap(WeblogEntrySearchCriteria wesc, boolean stringsOnly) throws WebloggerException { - - TreeMap map = new TreeMap(Collections.reverseOrder()); + TreeMap<Date, String> map = new TreeMap<Date, String>(Collections.reverseOrder()); List<WeblogEntry> entries = getWeblogEntries(wesc); @@ -779,33 +791,24 @@ public class JPAWeblogEntryManagerImpl i if (wesc.getWeblog() != null) { cal.setTimeZone(wesc.getWeblog().getTimeZoneInstance()); } - + SimpleDateFormat formatter = DateUtil.get8charDateFormat(); for (WeblogEntry entry : entries) { Date sDate = DateUtil.getNoonOfDay(entry.getPubTime(), cal); - if (stringsOnly) { - if (map.get(sDate) == null) { - map.put(sDate, formatter.format(sDate)); - } - } else { - List dayEntries = (List) map.get(sDate); - if (dayEntries == null) { - dayEntries = new ArrayList(); - map.put(sDate, dayEntries); - } - dayEntries.add(entry); + if (map.get(sDate) == null) { + map.put(sDate, formatter.format(sDate)); } } return map; } - + /** * @inheritDoc */ public List<StatCount> getMostCommentedWeblogEntries(Weblog website, Date startDate, Date endDate, int offset, int length) throws WebloggerException { - Query query; + TypedQuery<WeblogEntryComment> query; List queryResults; Timestamp end = new Timestamp(endDate != null? endDate.getTime() : new Date().getTime()); @@ -814,13 +817,14 @@ public class JPAWeblogEntryManagerImpl i if (startDate != null) { Timestamp start = new Timestamp(startDate.getTime()); query = strategy.getNamedQuery( - "WeblogEntryComment.getMostCommentedWeblogEntryByWebsite&EndDate&StartDate"); + "WeblogEntryComment.getMostCommentedWeblogEntryByWebsite&EndDate&StartDate", + WeblogEntryComment.class); query.setParameter(1, website); query.setParameter(2, end); query.setParameter(3, start); } else { query = strategy.getNamedQuery( - "WeblogEntryComment.getMostCommentedWeblogEntryByWebsite&EndDate"); + "WeblogEntryComment.getMostCommentedWeblogEntryByWebsite&EndDate", WeblogEntryComment.class); query.setParameter(1, website); query.setParameter(2, end); } @@ -828,12 +832,12 @@ public class JPAWeblogEntryManagerImpl i if (startDate != null) { Timestamp start = new Timestamp(startDate.getTime()); query = strategy.getNamedQuery( - "WeblogEntryComment.getMostCommentedWeblogEntryByEndDate&StartDate"); + "WeblogEntryComment.getMostCommentedWeblogEntryByEndDate&StartDate", WeblogEntryComment.class); query.setParameter(1, end); query.setParameter(2, start); } else { query = strategy.getNamedQuery( - "WeblogEntryComment.getMostCommentedWeblogEntryByEndDate"); + "WeblogEntryComment.getMostCommentedWeblogEntryByEndDate", WeblogEntryComment.class); query.setParameter(1, end); } } @@ -845,16 +849,18 @@ public class JPAWeblogEntryManagerImpl i } queryResults = query.getResultList(); List<StatCount> results = new ArrayList<StatCount>(); - for (Iterator iter = queryResults.iterator(); iter.hasNext();) { - Object[] row = (Object[]) iter.next(); - StatCount sc = new StatCount( - (String)row[1], // weblog handle - (String)row[2], // entry anchor - (String)row[3], // entry title - "statCount.weblogEntryCommentCountType", // stat desc - ((Long)row[0])); // count - sc.setWeblogHandle((String)row[1]); - results.add(sc); + if (queryResults != null) { + for (Object obj : queryResults) { + Object[] row = (Object[]) obj; + StatCount sc = new StatCount( + (String)row[1], // weblog handle + (String)row[2], // entry anchor + (String)row[3], // entry title + "statCount.weblogEntryCommentCountType", // stat desc + ((Long)row[0])); // count + sc.setWeblogHandle((String)row[1]); + results.add(sc); + } } // Original query ordered by desc count. // JPA QL doesn't allow queries to be ordered by agregates; do it in memory @@ -917,30 +923,30 @@ public class JPAWeblogEntryManagerImpl i */ public List<TagStat> getPopularTags(Weblog website, Date startDate, int offset, int limit) throws WebloggerException { - Query query; + TypedQuery<TagStat> query; List queryResults; if (website != null) { if (startDate != null) { Timestamp start = new Timestamp(startDate.getTime()); query = strategy.getNamedQuery( - "WeblogEntryTagAggregate.getPopularTagsByWebsite&StartDate"); + "WeblogEntryTagAggregate.getPopularTagsByWebsite&StartDate", TagStat.class); query.setParameter(1, website); query.setParameter(2, start); } else { query = strategy.getNamedQuery( - "WeblogEntryTagAggregate.getPopularTagsByWebsite"); + "WeblogEntryTagAggregate.getPopularTagsByWebsite", TagStat.class); query.setParameter(1, website); } } else { if (startDate != null) { Timestamp start = new Timestamp(startDate.getTime()); query = strategy.getNamedQuery( - "WeblogEntryTagAggregate.getPopularTagsByWebsiteNull&StartDate"); + "WeblogEntryTagAggregate.getPopularTagsByWebsiteNull&StartDate", TagStat.class); query.setParameter(1, start); } else { query = strategy.getNamedQuery( - "WeblogEntryTagAggregate.getPopularTagsByWebsiteNull"); + "WeblogEntryTagAggregate.getPopularTagsByWebsiteNull", TagStat.class); } } if (offset != 0) { @@ -956,17 +962,19 @@ public class JPAWeblogEntryManagerImpl i List<TagStat> results = new ArrayList<TagStat>(limit >= 0 ? limit : 25); - for (Iterator iter = queryResults.iterator(); iter.hasNext();) { - Object[] row = (Object[]) iter.next(); - TagStat t = new TagStat(); - t.setName((String) row[0]); - t.setCount(((Number) row[1]).intValue()); - - min = Math.min(min, t.getCount()); - max = Math.max(max, t.getCount()); - results.add(t); + if (queryResults != null) { + for (Object obj : queryResults) { + Object[] row = (Object[]) obj; + TagStat t = new TagStat(); + t.setName((String) row[0]); + t.setCount(((Number) row[1]).intValue()); + + min = Math.min(min, t.getCount()); + max = Math.max(max, t.getCount()); + results.add(t); + } } - + min = Math.log(1+min); max = Math.log(1+max); @@ -1005,7 +1013,7 @@ public class JPAWeblogEntryManagerImpl i if (startsWith != null && startsWith.length() > 0) { params.add(size++, startsWith + '%'); - queryString.append(" AND w.name LIKE ?" + size); + queryString.append(" AND w.name LIKE ?").append(size); } if (sortBy != null && sortBy.equals("count")) { @@ -1028,13 +1036,15 @@ public class JPAWeblogEntryManagerImpl i queryResults = query.getResultList(); List<TagStat> results = new ArrayList<TagStat>(); - for (Iterator iter = queryResults.iterator(); iter.hasNext();) { - Object[] row = (Object[]) iter.next(); - TagStat ce = new TagStat(); - ce.setName((String) row[0]); - // The JPA query retrieves SUM(w.total) always as long - ce.setCount(((Long) row[1]).intValue()); - results.add(ce); + if (queryResults != null) { + for (Object obj : queryResults) { + Object[] row = (Object[]) obj; + TagStat ce = new TagStat(); + ce.setName((String) row[0]); + // The JPA query retrieves SUM(w.total) always as long + ce.setCount(((Long) row[1]).intValue()); + results.add(ce); + } } if (sortByName) { @@ -1082,11 +1092,11 @@ public class JPAWeblogEntryManagerImpl i queryString.append(" AND w.weblog IS NULL"); } - Query q = strategy.getDynamicQuery(queryString.toString()); + TypedQuery<String> q = strategy.getDynamicQuery(queryString.toString(), String.class); for (int j=0; j<params.size(); j++) { q.setParameter(j+1, params.get(j)); } - List results = q.getResultList(); + List<String> results = q.getResultList(); //TODO: DatamapperPort: Since we are only interested in knowing whether //results.size() == tags.size(). This query can be optimized to just fetch COUNT @@ -1111,23 +1121,23 @@ public class JPAWeblogEntryManagerImpl i // one in the case where we have multiple rows (clustered environment) // eventually that second entry will have a very low total (most likely 1) and // won't matter - Query weblogQuery = strategy.getNamedQuery( - "WeblogEntryTagAggregate.getByName&WebsiteOrderByLastUsedDesc"); + TypedQuery<WeblogEntryTagAggregate> weblogQuery = strategy.getNamedQuery( + "WeblogEntryTagAggregate.getByName&WebsiteOrderByLastUsedDesc", WeblogEntryTagAggregate.class); weblogQuery.setParameter(1, name); weblogQuery.setParameter(2, website); WeblogEntryTagAggregate weblogTagData; try { - weblogTagData = (WeblogEntryTagAggregate)weblogQuery.getSingleResult(); + weblogTagData = weblogQuery.getSingleResult(); } catch (NoResultException e) { weblogTagData = null; } - - Query siteQuery = strategy.getNamedQuery( - "WeblogEntryTagAggregate.getByName&WebsiteNullOrderByLastUsedDesc"); + + TypedQuery<WeblogEntryTagAggregate> siteQuery = strategy.getNamedQuery( + "WeblogEntryTagAggregate.getByName&WebsiteNullOrderByLastUsedDesc", WeblogEntryTagAggregate.class); siteQuery.setParameter(1, name); WeblogEntryTagAggregate siteTagData; try { - siteTagData = (WeblogEntryTagAggregate)siteQuery.getSingleResult(); + siteTagData = siteQuery.getSingleResult(); } catch (NoResultException e) { siteTagData = null; } @@ -1178,10 +1188,10 @@ public class JPAWeblogEntryManagerImpl i */ public WeblogHitCount getHitCountByWeblog(Weblog weblog) throws WebloggerException { - Query q = strategy.getNamedQuery("WeblogHitCount.getByWeblog"); + TypedQuery<WeblogHitCount> q = strategy.getNamedQuery("WeblogHitCount.getByWeblog", WeblogHitCount.class); q.setParameter(1, weblog); try { - return (WeblogHitCount)q.getSingleResult(); + return q.getSingleResult(); } catch (NoResultException e) { return null; } @@ -1198,13 +1208,12 @@ public class JPAWeblogEntryManagerImpl i cal.setTime(new Date()); cal.add(Calendar.DATE, -1 * sinceDays); Date startDate = cal.getTime(); - - Query query = strategy.getNamedQuery( - "WeblogHitCount.getByWeblogEnabledTrueAndActiveTrue&DailyHitsGreaterThenZero&WeblogLastModifiedGreaterOrderByDailyHitsDesc"); + + TypedQuery<WeblogHitCount> query = strategy.getNamedQuery( + "WeblogHitCount.getByWeblogEnabledTrueAndActiveTrue&DailyHitsGreaterThenZero&WeblogLastModifiedGreaterOrderByDailyHitsDesc", + WeblogHitCount.class); query.setParameter(1, startDate); - // Was commented out due to https://glassfish.dev.java.net/issues/show_bug.cgi?id=2084 - // TODO: determine if this is still an issue. Is it a problem with other JPA implementations? if (offset != 0) { query.setFirstResult(offset); } @@ -1244,12 +1253,12 @@ public class JPAWeblogEntryManagerImpl i if(weblog == null) { throw new WebloggerException("Website cannot be NULL."); } - - Query q = strategy.getNamedQuery("WeblogHitCount.getByWeblog"); + + TypedQuery<WeblogHitCount> q = strategy.getNamedQuery("WeblogHitCount.getByWeblog", WeblogHitCount.class); q.setParameter(1, weblog); WeblogHitCount hitCount; try { - hitCount = (WeblogHitCount)q.getSingleResult(); + hitCount = q.getSingleResult(); } catch (NoResultException e) { hitCount = null; } @@ -1278,11 +1287,11 @@ public class JPAWeblogEntryManagerImpl i * @inheritDoc */ public void resetHitCount(Weblog weblog) throws WebloggerException { - Query q = strategy.getNamedQuery("WeblogHitCount.getByWeblog"); + TypedQuery<WeblogHitCount> q = strategy.getNamedQuery("WeblogHitCount.getByWeblog", WeblogHitCount.class); q.setParameter(1, weblog); WeblogHitCount hitCount; try { - hitCount = (WeblogHitCount)q.getSingleResult(); + hitCount = q.getSingleResult(); hitCount.setDailyHits(0); strategy.store(hitCount); } catch (NoResultException e) { @@ -1295,46 +1304,42 @@ public class JPAWeblogEntryManagerImpl i * @inheritDoc */ public long getCommentCount() throws WebloggerException { - Query q = strategy.getNamedQuery( - "WeblogEntryComment.getCountAllDistinctByStatus"); + TypedQuery<Long> q = strategy.getNamedQuery( + "WeblogEntryComment.getCountAllDistinctByStatus", Long.class); q.setParameter(1, ApprovalStatus.APPROVED); - List results = q.getResultList(); - return ((Long)results.get(0)); + return q.getResultList().get(0); } /** * @inheritDoc */ public long getCommentCount(Weblog website) throws WebloggerException { - Query q = strategy.getNamedQuery( - "WeblogEntryComment.getCountDistinctByWebsite&Status"); + TypedQuery<Long> q = strategy.getNamedQuery( + "WeblogEntryComment.getCountDistinctByWebsite&Status", Long.class); q.setParameter(1, website); q.setParameter(2, ApprovalStatus.APPROVED); - List results = q.getResultList(); - return ((Long)results.get(0)); + return q.getResultList().get(0); } /** * @inheritDoc */ public long getEntryCount() throws WebloggerException { - Query q = strategy.getNamedQuery( - "WeblogEntry.getCountDistinctByStatus"); + TypedQuery<Long> q = strategy.getNamedQuery( + "WeblogEntry.getCountDistinctByStatus", Long.class); q.setParameter(1, PubStatus.PUBLISHED); - List results = q.getResultList(); - return ((Long)results.get(0)); + return q.getResultList().get(0); } /** * @inheritDoc */ public long getEntryCount(Weblog website) throws WebloggerException { - Query q = strategy.getNamedQuery( - "WeblogEntry.getCountDistinctByStatus&Website"); + TypedQuery<Long> q = strategy.getNamedQuery( + "WeblogEntry.getCountDistinctByStatus&Website", Long.class); q.setParameter(1, PubStatus.PUBLISHED); q.setParameter(2, website); - List results = q.getResultList(); - return ((Long)results.get(0)); + return q.getResultList().get(0); } /** @@ -1347,7 +1352,7 @@ public class JPAWeblogEntryManagerImpl i */ private static StringBuilder appendConjuctionToWhereclause(StringBuilder whereClause, String expression) { - if(whereClause.length() != 0 && expression.length() != 0) { + if (whereClause.length() != 0 && expression.length() != 0) { whereClause.append(" AND "); } return whereClause.append(expression);
Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java?rev=1606568&r1=1606567&r2=1606568&view=diff ============================================================================== --- roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java (original) +++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java Sun Jun 29 19:09:13 2014 @@ -28,6 +28,7 @@ import org.apache.roller.weblogger.confi import javax.persistence.NoResultException; import javax.persistence.Query; +import javax.persistence.TypedQuery; import java.sql.Timestamp; import java.util.*; import org.apache.roller.weblogger.business.MediaFileManager; @@ -37,6 +38,7 @@ import org.apache.roller.weblogger.busin import org.apache.roller.weblogger.business.Weblogger; import org.apache.roller.weblogger.business.WebloggerFactory; import org.apache.roller.weblogger.pojos.AutoPing; +import org.apache.roller.weblogger.pojos.PingQueueEntry; import org.apache.roller.weblogger.pojos.PingTarget; import org.apache.roller.weblogger.pojos.StatCount; import org.apache.roller.weblogger.pojos.StatCountCountComparator; @@ -66,7 +68,7 @@ public class JPAWeblogManagerImpl implem /** The logger instance for this class. */ private static Log log = LogFactory.getLog(JPAWeblogManagerImpl.class); - private static final Comparator STAT_COUNT_COUNT_REVERSE_COMPARATOR = + private static final Comparator<StatCount> STAT_COUNT_COUNT_REVERSE_COMPARATOR = Collections.reverseOrder(StatCountCountComparator.getInstance()); private final Weblogger roller; @@ -116,7 +118,8 @@ public class JPAWeblogManagerImpl implem WeblogEntryManager emgr = roller.getWeblogEntryManager(); //remove theme Assocs - Query themeAssocQuery = strategy.getNamedQuery("WeblogThemeAssoc.getThemeAssocsByWeblog"); + TypedQuery<WeblogThemeAssoc> themeAssocQuery = strategy.getNamedQuery("WeblogThemeAssoc.getThemeAssocsByWeblog", + WeblogThemeAssoc.class); themeAssocQuery.setParameter(1,website); List<WeblogThemeAssoc> assocResults = themeAssocQuery.getResultList(); for (WeblogThemeAssoc themeAssoc : assocResults) { @@ -124,7 +127,8 @@ public class JPAWeblogManagerImpl implem } // remove tags - Query tagQuery = strategy.getNamedQuery("WeblogEntryTag.getByWeblog"); + TypedQuery<WeblogEntryTag> tagQuery = strategy.getNamedQuery("WeblogEntryTag.getByWeblog", + WeblogEntryTag.class); tagQuery.setParameter(1, website); List<WeblogEntryTag> results = tagQuery.getResultList(); @@ -136,7 +140,7 @@ public class JPAWeblogManagerImpl implem } // remove site tag aggregates - List tags = emgr.getTags(website, null, null, 0, -1); + List<TagStat> tags = emgr.getTags(website, null, null, 0, -1); updateTagAggregates(tags); // delete all weblog tag aggregates @@ -152,7 +156,7 @@ public class JPAWeblogManagerImpl implem removeCounts.executeUpdate(); // Remove the website's ping queue entries - Query q = strategy.getNamedQuery("PingQueueEntry.getByWebsite"); + TypedQuery<PingQueueEntry> q = strategy.getNamedQuery("PingQueueEntry.getByWebsite", PingQueueEntry.class); q.setParameter(1, website); List queueEntries = q.getResultList(); for (Object obj : queueEntries) { @@ -166,24 +170,21 @@ public class JPAWeblogManagerImpl implem this.strategy.remove(autoPing); } - // TODO: can we eliminate this unnecessary flush with OpenJPA 1.0 - this.strategy.flush(); - // remove associated pages - Query pageQuery = strategy.getNamedQuery("WeblogTemplate.getByWebsite"); + TypedQuery<WeblogTemplate> pageQuery = strategy.getNamedQuery("WeblogTemplate.getByWebsite", + WeblogTemplate.class); pageQuery.setParameter(1, website); - List pages = pageQuery.getResultList(); - for (Object obj : pages) { - WeblogTemplate page = (WeblogTemplate) obj; + List<WeblogTemplate> pages = pageQuery.getResultList(); - //remove associated templateCode objects + for (WeblogTemplate page : pages) { + // remove associated templateCode objects this.removeTemplateCodeObjs(page); - this.strategy.remove(page); } // remove folders (including bookmarks) - Query folderQuery = strategy.getNamedQuery("WeblogBookmarkFolder.getByWebsite"); + TypedQuery<WeblogBookmarkFolder> folderQuery = strategy.getNamedQuery("WeblogBookmarkFolder.getByWebsite", + WeblogBookmarkFolder.class); folderQuery.setParameter(1, website); List<WeblogBookmarkFolder> folders = folderQuery.getResultList(); for (WeblogBookmarkFolder wbf : folders) { @@ -201,7 +202,7 @@ public class JPAWeblogManagerImpl implem this.strategy.flush(); // remove entries - Query refQuery = strategy.getNamedQuery("WeblogEntry.getByWebsite"); + TypedQuery<WeblogEntry> refQuery = strategy.getNamedQuery("WeblogEntry.getByWebsite", WeblogEntry.class); refQuery.setParameter(1, website); List<WeblogEntry> entries = refQuery.getResultList(); for (WeblogEntry entry : entries) { @@ -210,8 +211,7 @@ public class JPAWeblogManagerImpl implem this.strategy.flush(); // delete all weblog categories - Query removeCategories= strategy.getNamedUpdate( - "WeblogCategory.removeByWeblog"); + Query removeCategories= strategy.getNamedUpdate("WeblogCategory.removeByWeblog"); removeCategories.setParameter(1, website); removeCategories.executeUpdate(); @@ -227,11 +227,11 @@ public class JPAWeblogManagerImpl implem protected void updateTagAggregates(List<TagStat> tags) throws WebloggerException { for (TagStat stat : tags) { - Query query = strategy.getNamedUpdate( - "WeblogEntryTagAggregate.getByName&WebsiteNullOrderByLastUsedDesc"); + TypedQuery<WeblogEntryTagAggregate> query = strategy.getNamedQueryCommitFirst( + "WeblogEntryTagAggregate.getByName&WebsiteNullOrderByLastUsedDesc", WeblogEntryTagAggregate.class); query.setParameter(1, stat.getName()); try { - WeblogEntryTagAggregate agg = (WeblogEntryTagAggregate)query.getSingleResult(); + WeblogEntryTagAggregate agg = query.getSingleResult(); agg.setTotal(agg.getTotal() - stat.getCount()); } catch (NoResultException ignored) { // nothing to update @@ -264,7 +264,6 @@ public class JPAWeblogManagerImpl implem } public void addWeblog(Weblog newWeblog) throws WebloggerException { - this.strategy.store(newWeblog); this.strategy.flush(); this.addWeblogContents(newWeblog); @@ -281,20 +280,22 @@ public class JPAWeblogManagerImpl implem String cats = WebloggerConfig.getProperty("newuser.categories"); WeblogCategory firstCat = null; - String[] splitcats = cats.split(","); - for (int i=0; i<splitcats.length; i++) { - if (splitcats[i].trim().length() == 0) { - continue; - } - WeblogCategory c = new WeblogCategory( - newWeblog, - splitcats[i], - null, - null ); - if (firstCat == null) { - firstCat = c; + if (cats != null) { + String[] splitcats = cats.split(","); + for (String split : splitcats) { + if (split.trim().length() == 0) { + continue; + } + WeblogCategory c = new WeblogCategory( + newWeblog, + split, + null, + null ); + if (firstCat == null) { + firstCat = c; + } + this.strategy.store(c); } - this.strategy.store(c); } // Use first category as default for Blogger API @@ -314,7 +315,7 @@ public class JPAWeblogManagerImpl implem String[] splitroll = blogroll.split(","); for (String splitItem : splitroll) { String[] rollitems = splitItem.split("\\|"); - if (rollitems != null && rollitems.length > 1) { + if (rollitems.length > 1) { WeblogBookmark b = new WeblogBookmark( defaultFolder, rollitems[0], @@ -369,7 +370,7 @@ public class JPAWeblogManagerImpl implem if(this.weblogHandleToIdMap.containsKey(handle)) { Weblog weblog = this.getWeblog( - (String) this.weblogHandleToIdMap.get(handle)); + this.weblogHandleToIdMap.get(handle)); if(weblog != null) { // only return weblog if enabled status matches if(enabled == null || enabled.equals(weblog.getEnabled())) { @@ -382,11 +383,11 @@ public class JPAWeblogManagerImpl implem } } - Query query = strategy.getNamedQuery("Weblog.getByHandle"); + TypedQuery<Weblog> query = strategy.getNamedQuery("Weblog.getByHandle", Weblog.class); query.setParameter(1, handle); Weblog website; try { - website = (Weblog)query.getSingleResult(); + website = query.getSingleResult(); } catch (NoResultException e) { website = null; } @@ -414,7 +415,7 @@ public class JPAWeblogManagerImpl implem //if (endDate == null) endDate = new Date(); - List params = new ArrayList(); + List<Object> params = new ArrayList<Object>(); int size = 0; String queryString; StringBuilder whereClause = new StringBuilder(); @@ -427,7 +428,7 @@ public class JPAWeblogManagerImpl implem whereClause.append(" AND "); } params.add(size++, start); - whereClause.append(" w.dateCreated > ?" + size); + whereClause.append(" w.dateCreated > ?").append(size); } if (endDate != null) { Timestamp end = new Timestamp(endDate.getTime()); @@ -435,26 +436,26 @@ public class JPAWeblogManagerImpl implem whereClause.append(" AND "); } params.add(size++, end); - whereClause.append(" w.dateCreated < ?" + size); + whereClause.append(" w.dateCreated < ?").append(size); } if (enabled != null) { if (whereClause.length() > 0) { whereClause.append(" AND "); } params.add(size++, enabled); - whereClause.append(" w.enabled = ?" + size); + whereClause.append(" w.enabled = ?").append(size); } if (active != null) { if (whereClause.length() > 0) { whereClause.append(" AND "); } params.add(size++, active); - whereClause.append(" w.active = ?" + size); + whereClause.append(" w.active = ?").append(size); } whereClause.append(" ORDER BY w.dateCreated DESC"); - Query query = strategy.getDynamicQuery(queryString + whereClause.toString()); + TypedQuery<Weblog> query = strategy.getDynamicQuery(queryString + whereClause.toString(), Weblog.class); if (offset != 0) { query.setFirstResult(offset); } @@ -470,21 +471,22 @@ public class JPAWeblogManagerImpl implem public WeblogThemeAssoc getThemeAssoc(Weblog weblog , String type) throws WebloggerException { - if(weblog == null){ + if (weblog == null) { throw new WebloggerException("Weblog is null"); } - if(type == null){ + if (type == null) { throw new WebloggerException("Type is null"); } - Query query = strategy.getNamedQuery("WeblogThemeAssoc.getThemeAssocByType") ; + TypedQuery<WeblogThemeAssoc> query = strategy.getNamedQuery("WeblogThemeAssoc.getThemeAssocByType", + WeblogThemeAssoc.class); query.setParameter(1,weblog); query.setParameter(2,type); - return (WeblogThemeAssoc) query.getSingleResult(); + return query.getSingleResult(); } public void saveThemeAssoc(WeblogThemeAssoc themeAssoc) throws WebloggerException { - this.strategy.store(themeAssoc); + this.strategy.store(themeAssoc); // update weblog last modified date. date updated by saveWebsite() roller.getWeblogManager().saveWeblog(themeAssoc.getWeblog()); @@ -544,11 +546,12 @@ public class JPAWeblogManagerImpl implem throw new WebloggerException("Pagelink is null"); } - Query query = strategy.getNamedQuery("WeblogTemplate.getByWebsite&Link"); + TypedQuery<WeblogTemplate> query = strategy.getNamedQuery("WeblogTemplate.getByWebsite&Link", + WeblogTemplate.class); query.setParameter(1, website); query.setParameter(2, pagelink); try { - return (WeblogTemplate) query.getSingleResult(); + return query.getSingleResult(); } catch (NoResultException e) { return null; } @@ -568,11 +571,12 @@ public class JPAWeblogManagerImpl implem throw new WebloggerException("Action name is null"); } - Query query = strategy.getNamedQuery("WeblogTemplate.getByAction"); + TypedQuery<WeblogTemplate> query = strategy.getNamedQuery("WeblogTemplate.getByAction", + WeblogTemplate.class); query.setParameter(1, website); query.setParameter(2, action); try { - return (WeblogTemplate)query.getSingleResult(); + return query.getSingleResult(); } catch (NoResultException e) { return null; } @@ -592,11 +596,12 @@ public class JPAWeblogManagerImpl implem throw new WebloggerException("Page name is null"); } - Query query = strategy.getNamedQuery("WeblogTemplate.getByWebsite&Name"); + TypedQuery<WeblogTemplate> query = strategy.getNamedQuery("WeblogTemplate.getByWebsite&Name", + WeblogTemplate.class); query.setParameter(1, website); query.setParameter(2, pagename); try { - return (WeblogTemplate)query.getSingleResult(); + return query.getSingleResult(); } catch (NoResultException e) { return null; } @@ -611,11 +616,12 @@ public class JPAWeblogManagerImpl implem throw new WebloggerException("Type is null"); } - Query query = strategy.getNamedQuery("WeblogThemeTemplateCode.getTemplateCodeByType"); + TypedQuery<WeblogThemeTemplateCode> query = strategy.getNamedQuery("WeblogThemeTemplateCode.getTemplateCodeByType", + WeblogThemeTemplateCode.class); query.setParameter(1, templateId); query.setParameter(2, type); try { - return (WeblogThemeTemplateCode)query.getSingleResult(); + return query.getSingleResult(); } catch (NoResultException e) { return null; } @@ -628,18 +634,18 @@ public class JPAWeblogManagerImpl implem if (website == null) { throw new WebloggerException("website is null"); } - Query q = strategy.getNamedQuery( - "WeblogTemplate.getByWebsiteOrderByName"); + TypedQuery<WeblogTemplate> q = strategy.getNamedQuery( + "WeblogTemplate.getByWebsiteOrderByName", WeblogTemplate.class); q.setParameter(1, website); return q.getResultList(); } - public Map getWeblogHandleLetterMap() throws WebloggerException { + public Map<String, Long> getWeblogHandleLetterMap() throws WebloggerException { String lc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - Map results = new TreeMap(); - Query query = strategy.getNamedQuery( - "Weblog.getCountByHandleLike"); + Map<String, Long> results = new TreeMap<String, Long>(); + TypedQuery<Long> query = strategy.getNamedQuery( + "Weblog.getCountByHandleLike", Long.class); for (int i=0; i<26; i++) { char currentChar = lc.charAt(i); query.setParameter(1, currentChar + "%"); @@ -652,8 +658,8 @@ public class JPAWeblogManagerImpl implem public List<Weblog> getWeblogsByLetter(char letter, int offset, int length) throws WebloggerException { - Query query = strategy.getNamedQuery( - "Weblog.getByLetterOrderByHandle"); + TypedQuery<Weblog> query = strategy.getNamedQuery( + "Weblog.getByLetterOrderByHandle", Weblog.class); query.setParameter(1, letter + "%"); if (offset != 0) { query.setFirstResult(offset); @@ -668,7 +674,7 @@ public class JPAWeblogManagerImpl implem int offset, int length) throws WebloggerException { - Query query = null; + Query query; if (endDate == null) { endDate = new Date(); @@ -695,19 +701,22 @@ public class JPAWeblogManagerImpl implem } List queryResults = query.getResultList(); List<StatCount> results = new ArrayList<StatCount>(); - for (Iterator iter = queryResults.iterator(); iter.hasNext();) { - Object[] row = (Object[]) iter.next(); - StatCount sc = new StatCount( - (String)row[1], // website id - (String)row[2], // website handle - (String)row[3], // website name - "statCount.weblogCommentCountType", // stat type - ((Long)row[0])); // # comments - sc.setWeblogHandle((String)row[2]); - results.add(sc); + if (queryResults != null) { + for (Object obj : queryResults) { + Object[] row = (Object[]) obj; + StatCount sc = new StatCount( + (String)row[1], // website id + (String)row[2], // website handle + (String)row[3], // website name + "statCount.weblogCommentCountType", // stat type + ((Long)row[0])); // # comments + sc.setWeblogHandle((String)row[2]); + results.add(sc); + } } + // Original query ordered by desc # comments. - // JPA QL doesn't allow queries to be ordered by agregates; do it in memory + // JPA QL doesn't allow queries to be ordered by aggregates; do it in memory Collections.sort(results, STAT_COUNT_COUNT_REVERSE_COMPARATOR); return results; @@ -717,22 +726,19 @@ public class JPAWeblogManagerImpl implem * Get count of weblogs, active and inactive */ public long getWeblogCount() throws WebloggerException { - long ret = 0; - List results = strategy.getNamedQuery( - "Weblog.getCountAllDistinct").getResultList(); - - ret = (Long)results.get(0); - - return ret; + List<Long> results = strategy.getNamedQuery( + "Weblog.getCountAllDistinct", Long.class).getResultList(); + return results.get(0); } private void removeTemplateCodeObjs(WeblogTemplate page) throws WebloggerException { - Query codeQuery = strategy.getNamedQuery("WeblogThemeTemplateCode.getTemplateCodesByTemplateId"); + TypedQuery<WeblogThemeTemplateCode> codeQuery = strategy.getNamedQuery( + "WeblogThemeTemplateCode.getTemplateCodesByTemplateId", WeblogThemeTemplateCode.class); codeQuery.setParameter(1, page.getId()); - List codeList = codeQuery.getResultList(); + List<WeblogThemeTemplateCode> codeList = codeQuery.getResultList(); - for (Object obj : codeList) { - this.strategy.remove(obj); + for (WeblogThemeTemplateCode code : codeList) { + this.strategy.remove(code); } } Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java?rev=1606568&r1=1606567&r2=1606568&view=diff ============================================================================== --- roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java (original) +++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java Sun Jun 29 19:09:13 2014 @@ -45,8 +45,6 @@ import org.apache.roller.weblogger.busin @com.google.inject.Singleton public class JPAWebloggerImpl extends WebloggerImpl { - static final long serialVersionUID = 5256135928578074652L; - // a persistence utility class private final JPAPersistenceStrategy strategy; Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/pings/AutoPingManager.java URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/pings/AutoPingManager.java?rev=1606568&r1=1606567&r2=1606568&view=diff ============================================================================== --- roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/pings/AutoPingManager.java (original) +++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/business/pings/AutoPingManager.java Sun Jun 29 19:09:13 2014 @@ -68,7 +68,7 @@ public interface AutoPingManager { * @param autopings a <code>Collection</code> of <code>AAutoPing/code> objects * @throws WebloggerException */ - void removeAutoPings(Collection autopings) throws WebloggerException; + void removeAutoPings(Collection<AutoPing> autopings) throws WebloggerException; /** Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/StatCountCountComparator.java URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/StatCountCountComparator.java?rev=1606568&r1=1606567&r2=1606568&view=diff ============================================================================== --- roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/StatCountCountComparator.java (original) +++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/StatCountCountComparator.java Sun Jun 29 19:09:13 2014 @@ -24,7 +24,7 @@ import java.io.Serializable; /** * @author Markus Fuchs */ -public final class StatCountCountComparator implements Comparator, Serializable { +public final class StatCountCountComparator implements Comparator<StatCount>, Serializable { private static final long serialVersionUID = 4811314286365625712L; @@ -38,9 +38,7 @@ public final class StatCountCountCompara * @throws ClassCastException if arguments are not instances of <em>StatCount</em> * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ - public int compare(Object obj1, Object obj2) { - StatCount sc1 = (StatCount) obj1; - StatCount sc2 = (StatCount) obj2; + public int compare(StatCount sc1, StatCount sc2) { int compVal = sc1.getCount() < sc2.getCount() ? -1 : (sc1.getCount() == sc2.getCount() ? 0 : 1); Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/TagStatComparator.java URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/TagStatComparator.java?rev=1606568&r1=1606567&r2=1606568&view=diff ============================================================================== --- roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/TagStatComparator.java (original) +++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/TagStatComparator.java Sun Jun 29 19:09:13 2014 @@ -24,7 +24,7 @@ import java.util.Comparator; * @author Elias Torres (<a href="mailto:[email protected]">[email protected]</a>) * */ -public class TagStatComparator implements Comparator, Serializable { +public class TagStatComparator implements Comparator<TagStat>, Serializable { private static final long serialVersionUID = -3272396777374523757L; @@ -39,10 +39,8 @@ public class TagStatComparator implement * @throws ClassCastException if arguments are not instances of <em>TagStat</em> * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ - public int compare(Object obj1, Object obj2) { - TagStat st1 = (TagStat) obj1; - TagStat st2 = (TagStat) obj2; - return st1.getName().compareToIgnoreCase(st2.getName()); + public int compare(TagStat ts1, TagStat ts2) { + return ts1.getName().compareToIgnoreCase(ts2.getName()); } } Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/TagStatCountComparator.java URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/TagStatCountComparator.java?rev=1606568&r1=1606567&r2=1606568&view=diff ============================================================================== --- roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/TagStatCountComparator.java (original) +++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/pojos/TagStatCountComparator.java Sun Jun 29 19:09:13 2014 @@ -24,7 +24,7 @@ import java.io.Serializable; /** * @author Markus Fuchs */ -public class TagStatCountComparator implements Comparator, Serializable { +public class TagStatCountComparator implements Comparator<TagStat>, Serializable { private static final long serialVersionUID = 1155112837815739929L; @@ -43,9 +43,7 @@ public class TagStatCountComparator impl * @throws ClassCastException if arguments are not instances of <em>TagStat</em> * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ - public int compare(Object obj1, Object obj2) { - TagStat st1 = (TagStat) obj1; - TagStat st2 = (TagStat) obj2; + public int compare(TagStat st1, TagStat st2) { int compVal = st1.getCount() < st2.getCount() ? -1 : (st1.getCount() == st2.getCount() ? 0 : 1); Modified: roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/PlanetModel.java URL: http://svn.apache.org/viewvc/roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/PlanetModel.java?rev=1606568&r1=1606567&r2=1606568&view=diff ============================================================================== --- roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/PlanetModel.java (original) +++ roller/trunk/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/PlanetModel.java Sun Jun 29 19:09:13 2014 @@ -201,7 +201,7 @@ public class PlanetModel implements Mode try { PlanetManager planetManager = WebloggerFactory.getWeblogger().getPlanetManager(); Planet defaultPlanet = planetManager.getWeblogger(DEFAULT_PLANET_HANDLE); - Set<PlanetGroup> groups = (Set<PlanetGroup>)defaultPlanet.getGroups(); + Set<PlanetGroup> groups = defaultPlanet.getGroups(); for (PlanetGroup group : groups) { // TODO needs pojo wrapping from planet list.add(group);
