Thanks Guo,
That looks like a real bug. Please file a bug report in our tracker:
https://issues.apache.org/roller
- Dave
On Sat, May 10, 2008 at 1:48 PM, guo weizhan <[EMAIL PROTECTED]> wrote:
> public List getPopularTags(Weblog website, Date startDate, int offset, int
> limit)
> throws WebloggerException {
> Query query = null;
> List queryResults = null;
>
> if (website != null) {
> if (startDate != null) {
> Timestamp start = new Timestamp(startDate.getTime());
> query = strategy.getNamedQuery(
>
> "WeblogEntryTagAggregate.getPopularTagsByWebsite&StartDate");
> query.setParameter(1, website);
> query.setParameter(2, start);
> } else {
> query = strategy.getNamedQuery(
> "WeblogEntryTagAggregate.getPopularTagsByWebsite");
> query.setParameter(1, website);
> }
> } else {
> if (startDate != null) {
> Timestamp start = new Timestamp(startDate.getTime());
> query = strategy.getNamedQuery(
>
> "WeblogEntryTagAggregate.getPopularTagsByWebsiteNull&StartDate");
> query.setParameter(1, start);
> } else {
> query = strategy.getNamedQuery(
>
> "WeblogEntryTagAggregate.getPopularTagsByWebsiteNull");
> }
> }
> if (offset != 0) {
> query.setFirstResult(offset);
> }
> if (limit != -1) {
> query.setMaxResults(limit);
> }
> queryResults = query.getResultList();
>
> double min = Integer.MAX_VALUE;
> double max = Integer.MIN_VALUE;
>
> * List results = new ArrayList(limit); // if the limit is -1 it
> will thrown the exception and -1 is for no limit*
>
> 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);
> }
>
> min = Math.log(1+min);
> max = Math.log(1+max);
>
> double range = Math.max(.01, max - min) * 1.0001;
>
> for (Iterator iter = results.iterator(); iter.hasNext(); ) {
> TagStat t = (TagStat) iter.next();
> t.setIntensity((int) (1 + Math.floor(5 *
> (Math.log(1+t.getCount()) - min) / range)));
> }
>
> // sort results by name, because query had to sort by total
> Collections.sort(results, tagStatNameComparator);
>
> return results;
> }
>