You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by el...@apache.org on 2006/09/21 07:01:58 UTC
svn commit: r448460 [1/2] - in /incubator/roller/trunk: ./
metadata/database/ metadata/database/hibernate/
src/org/apache/roller/business/hibernate/ src/org/apache/roller/model/
src/org/apache/roller/pojos/ src/org/apache/roller/ui/authoring/struts/for...
Author: eliast
Date: Wed Sep 20 22:01:56 2006
New Revision: 448460
URL: http://svn.apache.org/viewvc?view=rev&rev=448460
Log:
Initial tagging support commit
- Added new tables (weblogentrytag, weblogentrytagagg)
- Added new POJOs (WeblogEntryTagData, TagCloudEntry)
- Added more tests to WeblogEntryTest
- Added new methods to WeblogManagers (for TagCloud and WeblogEntriesByTag)
- Added support for /tags/ in URL Structure/Refactored all URL code to support/pass-through tagging information
- Updated hibernate.cfg.xml to support new beans
- Modified/Enhanced frontpage template to support tag cloud, hot tags
- Modified WeblogEdit.jsp to allow for editing of tags in entries (as well as WeblogEntryFormEx)
- Updated the build.xml to include new bean in hibernate/wrapper targets
- Added a new WeblogEntriesTagsPager for SiteModel
Added:
incubator/roller/trunk/src/org/apache/roller/pojos/TagCloudEntry.java (with props)
incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryTagData.java (with props)
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesTagsPager.java (with props)
incubator/roller/trunk/web/themes/frontpage/tags.vm
Modified:
incubator/roller/trunk/build.xml
incubator/roller/trunk/metadata/database/createdb.vm
incubator/roller/trunk/metadata/database/droptables.sql
incubator/roller/trunk/metadata/database/hibernate/hibernate.cfg.xml
incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java
incubator/roller/trunk/src/org/apache/roller/model/WeblogManager.java
incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java
incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogEntryFormEx.java
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/BigWeblogCalendarModel.java
incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/WeblogCalendarModel.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PageModel.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PlanetModel.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/URLModel.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/AbstractWeblogEntriesPager.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesLatestPager.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java
incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogPageRequest.java
incubator/roller/trunk/src/org/apache/roller/util/URLUtilities.java
incubator/roller/trunk/testdata/WEB-INF/classes/hibernate.cfg.xml
incubator/roller/trunk/tests/org/apache/roller/business/WeblogEntryTest.java
incubator/roller/trunk/web/WEB-INF/classes/ApplicationResources.properties
incubator/roller/trunk/web/WEB-INF/jsps/authoring/WeblogEdit.jsp
incubator/roller/trunk/web/themes/frontpage/Weblog.vm
incubator/roller/trunk/web/themes/frontpage/_entry.vm
incubator/roller/trunk/web/themes/frontpage/directory.vm
Modified: incubator/roller/trunk/build.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/build.xml?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/build.xml (original)
+++ incubator/roller/trunk/build.xml Wed Sep 20 22:01:56 2006
@@ -154,7 +154,8 @@
<include name="org/apache/roller/pojos/RefererData.java"/>
<include name="org/apache/roller/pojos/Template.java"/>
<include name="org/apache/roller/pojos/UserData.java"/>
- <include name="org/apache/roller/pojos/WeblogEntryData.java"/>
+ <include name="org/apache/roller/pojos/WeblogEntryData.java"/>
+ <include name="org/apache/roller/pojos/WeblogEntryTagData.java"/>
<include name="org/apache/roller/pojos/WeblogCategoryData.java"/>
<include name="org/apache/roller/pojos/WebsiteData.java"/>
<include name="org/apache/roller/pojos/PlanetEntryData.java"/>
Modified: incubator/roller/trunk/metadata/database/createdb.vm
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/metadata/database/createdb.vm?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/metadata/database/createdb.vm (original)
+++ incubator/roller/trunk/metadata/database/createdb.vm Wed Sep 20 22:01:56 2006
@@ -208,6 +208,30 @@
create index we_status_idx on weblogentry(status);
create index we_locale_idx on weblogentry(locale);
+create table weblogentrytag (
+ id varchar(48) not null primary key,
+ entryid varchar(48) not null,
+ websiteid varchar(48) not null,
+ userid varchar(48) not null,
+ name varchar(255) not null,
+ time $TIMESTAMP_SQL_TYPE not null
+);
+
+create index wet_entryid_idx on weblogentrytag( entryid );
+create index wet_websiteid_idx on weblogentrytag( websiteid );
+create index wet_userid_idx on weblogentrytag( userid );
+create index wet_name_idx on weblogentrytag( name );
+
+create table weblogentrytagagg (
+ id varchar(48) not null primary key,
+ websiteid varchar(48) not null,
+ name varchar(255) not null,
+ count integer not null
+);
+
+create index weta_websiteid_idx on weblogentrytagagg( websiteid );
+create index weta_name_idx on weblogentrytagagg( name );
+
create table newsfeed (
id varchar(48) not null primary key,
name varchar(255) not null,
Modified: incubator/roller/trunk/metadata/database/droptables.sql
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/metadata/database/droptables.sql?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/metadata/database/droptables.sql (original)
+++ incubator/roller/trunk/metadata/database/droptables.sql Wed Sep 20 22:01:56 2006
@@ -25,6 +25,8 @@
drop table roller_comment;
drop table entryattribute;
drop table weblogentry;
+drop table weblogentrytag;
+drop table weblogentrytagagg;
drop table weblogcategory;
drop table folder;
drop table folderassoc;
Modified: incubator/roller/trunk/metadata/database/hibernate/hibernate.cfg.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/metadata/database/hibernate/hibernate.cfg.xml?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/metadata/database/hibernate/hibernate.cfg.xml (original)
+++ incubator/roller/trunk/metadata/database/hibernate/hibernate.cfg.xml Wed Sep 20 22:01:56 2006
@@ -91,7 +91,8 @@
<mapping resource="org/apache/roller/pojos/UserData.hbm.xml" />
<mapping resource="org/apache/roller/pojos/WeblogCategoryData.hbm.xml" />
<mapping resource="org/apache/roller/pojos/WeblogCategoryAssoc.hbm.xml" />
- <mapping resource="org/apache/roller/pojos/WeblogEntryData.hbm.xml" />
+ <mapping resource="org/apache/roller/pojos/WeblogEntryData.hbm.xml" />
+ <mapping resource="org/apache/roller/pojos/WeblogEntryTagData.hbm.xml" />
<mapping resource="org/apache/roller/pojos/WebsiteData.hbm.xml" />
<mapping resource="org/apache/roller/pojos/RollerPropertyData.hbm.xml" />
<mapping resource="org/apache/roller/pojos/PermissionsData.hbm.xml" />
Modified: incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java Wed Sep 20 22:01:56 2006
@@ -21,6 +21,7 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
+import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.Hashtable;
@@ -29,8 +30,9 @@
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
+
import org.apache.commons.collections.comparators.ReverseComparator;
-import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.RollerException;
@@ -41,18 +43,19 @@
import org.apache.roller.pojos.CommentData;
import org.apache.roller.pojos.RefererData;
import org.apache.roller.pojos.StatCount;
+import org.apache.roller.pojos.TagCloudEntry;
import org.apache.roller.pojos.UserData;
import org.apache.roller.pojos.WeblogCategoryAssoc;
import org.apache.roller.pojos.WeblogCategoryData;
import org.apache.roller.pojos.WeblogEntryData;
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.util.DateUtil;
-import org.apache.commons.lang.StringUtils;
import org.apache.roller.util.Utilities;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
+import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Junction;
import org.hibernate.criterion.MatchMode;
@@ -787,6 +790,80 @@
} catch (HibernateException e) {
throw new RollerException(e);
}
+ }
+
+ public List getWeblogEntriesByTags(WebsiteData website, List tags) throws RollerException {
+ try {
+
+ if(tags == null || tags.size() == 0)
+ return Collections.EMPTY_LIST;
+
+ Session session = ((HibernatePersistenceStrategy) strategy).getSession();
+
+ StringBuffer queryString = new StringBuffer();
+ queryString.append("select distinct e ");
+ queryString.append("from WeblogEntryData e ");
+ queryString.append("where ");
+ queryString.append(" e.tagSet.name = ?");
+ for(int i = 1; tags.size() > 1 && i < tags.size(); i++)
+ queryString.append(" and e.tagSet.name = ?");
+ if(website != null)
+ queryString.append("and t.website.id = '" + website.getId() + "' ");
+ queryString.append("order by e.tagSet.time desc");
+
+ Query query = session.createQuery(queryString.toString());
+ for(int i = 0; i < tags.size(); i++)
+ query.setString(i, (String) tags.get(i));
+
+ return query.list();
+
+ } catch (HibernateException e) {
+ throw new RollerException(e);
+ }
+ }
+
+ public List getTags(Date startDate,
+ Date endDate,
+ WebsiteData website,
+ UserData user,
+ boolean sortByCount,
+ int limit) throws RollerException {
+ try {
+ List results = new ArrayList();
+
+ Session session = ((HibernatePersistenceStrategy) strategy).getSession();
+
+ StringBuffer queryString = new StringBuffer();
+ queryString.append("select t.name, count(t.name) ");
+ queryString.append("from WeblogEntryTagData t ");
+ queryString.append("where t.time between ? and ? ");
+ if(website != null)
+ queryString.append("and t.website.id = '" + website.getId() + "' ");
+ if(user != null)
+ queryString.append("and t.user.id = '" + user.getId() + "' ");
+ queryString.append("group by t.name ");
+ queryString.append(sortByCount ? "order by count(t.name) desc " : "order by t.name ");
+
+ Query query = session.createQuery(queryString.toString());
+ query.setTimestamp(0, DateUtil.getStartOfDay(startDate));
+ query.setTimestamp(1, DateUtil.getEndOfDay(endDate));
+ if(limit > 0)
+ query.setMaxResults(limit);
+
+ for (Iterator iter = query.list().iterator(); iter.hasNext();) {
+ Object[] row = (Object[]) iter.next();
+ TagCloudEntry ce = new TagCloudEntry();
+ ce.setName((String) row[0]);
+ ce.setCount(((Integer)row[1]).intValue());
+ results.add(ce);
+ }
+
+ return results;
+
+ } catch (HibernateException e) {
+ throw new RollerException(e);
+ }
+
}
public List getComments(
Modified: incubator/roller/trunk/src/org/apache/roller/model/WeblogManager.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/model/WeblogManager.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/model/WeblogManager.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/model/WeblogManager.java Wed Sep 20 22:01:56 2006
@@ -303,6 +303,34 @@
public List getWeblogCategoryAncestorAssocs(WeblogCategoryData data) throws RollerException;
/**
+ * Get all entries in a website that contain a specific tag
+ * @param website
+ * @param tag
+ * @return
+ * @throws RollerException
+ */
+ public List getWeblogEntriesByTags(WebsiteData website, List tags) throws RollerException;
+
+
+ /**
+ * Get all tag (name, count) pairs for a specific date range, optionally only for a given site or user.
+ * @param startDate
+ * @param endDate
+ * @param website
+ * @param user
+ * @param sortByCount
+ * @param limit
+ * @return
+ * @throws RollerException
+ */
+ public List getTags(Date startDate,
+ Date endDate,
+ WebsiteData website,
+ UserData user,
+ boolean sortByCount,
+ int limit) throws RollerException;
+
+ /**
* Save comment.
*/
public void saveComment(CommentData comment) throws RollerException;
Added: incubator/roller/trunk/src/org/apache/roller/pojos/TagCloudEntry.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/pojos/TagCloudEntry.java?view=auto&rev=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/pojos/TagCloudEntry.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/pojos/TagCloudEntry.java Wed Sep 20 22:01:56 2006
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License. For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+/*
+ * Generated file - Do not edit!
+ */
+package org.apache.roller.pojos;
+
+
+/**
+ * Tag bean.
+ *
+ * @author Elias Torres
+ *
+ */
+public class TagCloudEntry implements java.io.Serializable {
+
+ private static final long serialVersionUID = 1142064841813545198L;
+
+ private java.lang.String name = null;
+
+ private int count = 0;
+
+ public TagCloudEntry() {
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getCount() {
+ return this.count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public String toString() {
+ StringBuffer str = new StringBuffer("{");
+
+ str.append("name=" + name + " " + "count=" + count);
+ str.append('}');
+
+ return (str.toString());
+ }
+
+}
\ No newline at end of file
Propchange: incubator/roller/trunk/src/org/apache/roller/pojos/TagCloudEntry.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/roller/trunk/src/org/apache/roller/pojos/TagCloudEntry.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: incubator/roller/trunk/src/org/apache/roller/pojos/TagCloudEntry.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryData.java Wed Sep 20 22:01:56 2006
@@ -28,6 +28,7 @@
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -97,6 +98,8 @@
private Map attMap = new HashMap();
private Set attSet = new TreeSet();
+ private Set tagSet = new HashSet();
+
//----------------------------------------------------------- Construction
public WeblogEntryData() {
@@ -597,7 +600,119 @@
this.locale = locale;
}
+ /**
+ * @roller.wrapPojoMethod type="pojo-collection" class="org.apache.roller.pojos.WeblogEntryTagData"
+ *
+ * @ejb:persistent-field
+ *
+ * @hibernate.set lazy="true" order-by="name" inverse="true" cascade="all-delete-orphan"
+ * @hibernate.collection-key column="entryid"
+ * @hibernate.collection-one-to-many class="org.apache.roller.pojos.WeblogEntryTagData"
+ */
+ public Set getTagSet()
+ {
+ return tagSet;
+ }
+
+ private void setTagSet(Set tagSet) throws RollerException
+ {
+ this.tagSet = tagSet;
+ }
+
+ public void addTag(String name) {
+ WeblogEntryTagData tag = new WeblogEntryTagData();
+ tag.setName(stripInvalidTagChars(name));
+ tag.setUser(getCreator());
+ tag.setWebsite(getWebsite());
+ tag.setWeblogEntry(this);
+ tag.setTime(getUpdateTime());
+ tagSet.add(tag);
+ }
+
+ public void removeTag(String name) {
+ Iterator it = tagSet.iterator();
+ while(it.hasNext()) {
+ WeblogEntryTagData tag = (WeblogEntryTagData) it.next();
+ if(tag.getName().equals(name)) {
+ it.remove();
+ }
+ }
+ }
+
+ public void updateTags(List tags) {
+ HashSet newTags = new HashSet(tags);
+
+ // remove old ones no longer passed.
+ Iterator it = tagSet.iterator();
+ while(it.hasNext()) {
+ WeblogEntryTagData tag = (WeblogEntryTagData) it.next();
+ if(!newTags.contains(tag.getName())) {
+ it.remove();
+ } else {
+ newTags.remove(tag.getName());
+ }
+ }
+
+ // add new ones, duplicates are taken care of by the db.
+ it = newTags.iterator();
+ while(it.hasNext()) {
+ addTag((String) it.next());
+ }
+ }
+
+ public boolean checkValidTagChar(char c) {
+ return c == 45 || c == 46 || c == 95 ||
+ (48 <= c && c <= 57) ||
+ (65 <= c && c <= 90) ||
+ (97 <= c && c <= 122) ||
+ Character.isUnicodeIdentifierPart(c) ||
+ Character.isUnicodeIdentifierStart(c);
+ }
+
+ public String stripInvalidTagChars(String s)
+ {
+ StringBuffer sb = new StringBuffer();
+ char [] charArray = s.toCharArray();
+ for(int i = 0; i < charArray.length; i++)
+ {
+ if(checkValidTagChar(charArray[i]))
+ sb.append(charArray[i]);
+ }
+ return sb.toString();
+ }
+
+ /**
+ *
+ * @roller.wrapPojoMethod type="simple"
+ */
+ public String getTags()
+ {
+ StringBuffer sb = new StringBuffer();
+ for(Iterator it = getTagSet().iterator(); it.hasNext();)
+ {
+ sb.append(((WeblogEntryTagData)it.next()).getName()).append(" ");
+ }
+ if(sb.length() > 0)
+ {
+ sb.deleteCharAt(sb.length()-1);
+ }
+
+ return sb.toString();
+ }
+ public void setTags(String tags)
+ {
+ if (tags == null)
+ return;
+
+ String[] tagsarr = StringUtils.split(tags, ' ');
+
+ if (tagsarr == null || tagsarr.length == 0)
+ return;
+
+ updateTags(Arrays.asList(tagsarr));
+ }
+
//------------------------------------------------------------------------
/**
Added: incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryTagData.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryTagData.java?view=auto&rev=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryTagData.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryTagData.java Wed Sep 20 22:01:56 2006
@@ -0,0 +1,223 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License. For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+/*
+ * Generated file - Do not edit!
+ */
+package org.apache.roller.pojos;
+
+import java.sql.Timestamp;
+
+import org.apache.roller.util.PojoUtil;
+
+
+/**
+ * Tag bean.
+ * @author Elias Torres
+ *
+ * @ejb:bean name="WeblogEntryTagData"
+ * @struts.form include-all="true"
+ * @hibernate.class lazy="false" table="weblogentrytag"
+ * @hibernate.cache usage="read-write"
+ */
+public class WeblogEntryTagData extends PersistentObject
+ implements java.io.Serializable
+{
+ private static final long serialVersionUID = -2602052289337573384L;
+ private java.lang.String id = null;
+ private WebsiteData website = null;
+ private WeblogEntryData weblogEntry = null;
+ private UserData user = null;
+ private java.lang.String name = null;
+ private Timestamp time = null;
+
+ public WeblogEntryTagData()
+ {
+ }
+
+ public WeblogEntryTagData(java.lang.String id,
+ WebsiteData website,
+ WeblogEntryData weblogEntry,
+ UserData user, java.lang.String name,
+ Timestamp time)
+ {
+ this.id = id;
+ this.website = website;
+ this.weblogEntry = weblogEntry;
+ this.user = user;
+ this.name = name;
+ this.time = time;
+ }
+
+ public WeblogEntryTagData(WeblogEntryTagData otherData)
+ {
+ setData(otherData);
+ }
+
+ //------------------------------------------------------- Simple properties
+
+ /**
+ * Unique ID and primary key of this Referer.
+ *
+ * @roller.wrapPojoMethod type="simple"
+ * @hibernate.id column="id" generator-class="uuid.hex" unsaved-value="null"
+ */
+ public java.lang.String getId()
+ {
+ return this.id;
+ }
+
+ public void setId(java.lang.String id)
+ {
+ this.id = id;
+ }
+
+ /**
+ * ID of website that this tag refers to.
+ *
+ * @roller.wrapPojoMethod type="pojo"
+ * @hibernate.many-to-one column="websiteid" cascade="none" not-null="true"
+ */
+ public org.apache.roller.pojos.WebsiteData getWebsite()
+ {
+ return this.website;
+ }
+
+ public void setWebsite(org.apache.roller.pojos.WebsiteData website)
+ {
+ this.website = website;
+ }
+
+ /**
+ * @roller.wrapPojoMethod type="pojo"
+ * @hibernate.many-to-one column="entryid" cascade="none"
+ */
+ public org.apache.roller.pojos.WeblogEntryData getWeblogEntry()
+ {
+ return weblogEntry;
+ }
+
+ /**
+ * @param data
+ */
+ public void setWeblogEntry(org.apache.roller.pojos.WeblogEntryData data)
+ {
+ weblogEntry = data;
+ }
+
+ /**
+ * @roller.wrapPojoMethod type="pojo"
+ * @hibernate.many-to-one column="userid" cascade="none"
+ */
+ public UserData getUser() {
+ return this.user;
+ }
+ /** @ejb:persistent-field */
+ public void setUser( UserData user ) {
+ this.user = user;
+ }
+
+ /**
+ * Tag value
+ *
+ * @roller.wrapPojoMethod type="simple"
+ * @ejb:persistent-field
+ * @hibernate.property column="name" non-null="true" unique="false"
+ */
+ public String getName() {
+ return this.name;
+ }
+ /** @ejb:persistent-field */
+ public void setName( String name ) {
+ this.name = name;
+ }
+
+ /**
+ *
+ * @roller.wrapPojoMethod type="simple"
+ * @ejb:persistent-field
+ * @hibernate.property column="time" non-null="true" unique="false"
+ */
+ public java.sql.Timestamp getTime()
+ {
+ return this.time;
+ }
+
+ /** @ejb:persistent-field */
+ public void setTime(java.sql.Timestamp tagTime)
+ {
+ this.time = tagTime;
+ }
+
+ public String toString() {
+ StringBuffer str = new StringBuffer("{");
+
+ str.append("id=" + id + " " +
+ "website=" + website + " " +
+ "weblogEntry=" + weblogEntry + " " +
+ "user=" + user + " " +
+ "name=" + name + " " +
+ "tagTime=" + time);
+ str.append('}');
+
+ return (str.toString());
+ }
+
+ public boolean equals(Object pOther) {
+ if (pOther instanceof WeblogEntryTagData) {
+ WeblogEntryTagData lTest = (WeblogEntryTagData) pOther;
+ boolean lEquals = true;
+
+ lEquals = PojoUtil.equals(lEquals, this.id, lTest.getId());
+ lEquals = PojoUtil.equals(lEquals, this.website, lTest.getWebsite());
+ lEquals = PojoUtil.equals(lEquals, this.weblogEntry, lTest.getWeblogEntry());
+ lEquals = PojoUtil.equals(lEquals, this.user, lTest.getUser());
+ lEquals = PojoUtil.equals(lEquals, this.name, lTest.getName());
+ lEquals = PojoUtil.equals(lEquals, this.time, lTest.getTime());
+ return lEquals;
+ } else {
+ return false;
+ }
+ }
+
+ public int hashCode() {
+ int result = 17;
+ result = PojoUtil.addHashCode(result, this.id);
+ result = PojoUtil.addHashCode(result, this.website);
+ result = PojoUtil.addHashCode(result, this.weblogEntry);
+ result = PojoUtil.addHashCode(result, this.user);
+ result = PojoUtil.addHashCode(result, this.name);
+ result = PojoUtil.addHashCode(result, this.time);
+
+ return result;
+ }
+
+ /**
+ * Setter is needed in RollerImpl.storePersistentObject()
+ */
+ public void setData(org.apache.roller.pojos.PersistentObject otherData)
+ {
+ WeblogEntryTagData data = (WeblogEntryTagData) otherData;
+ this.id = data.getId();
+ this.website = data.getWebsite();
+ this.weblogEntry = data.getWeblogEntry();
+ this.user = data.getUser();
+ this.name = data.getName();
+ this.time = data.getTime();
+ }
+
+}
\ No newline at end of file
Propchange: incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryTagData.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryTagData.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: incubator/roller/trunk/src/org/apache/roller/pojos/WeblogEntryTagData.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogEntryFormEx.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogEntryFormEx.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogEntryFormEx.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/authoring/struts/formbeans/WeblogEntryFormEx.java Wed Sep 20 22:01:56 2006
@@ -21,6 +21,7 @@
import java.text.DateFormat;
import java.text.ParseException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Calendar;
import java.util.TimeZone;
import java.util.Date;
@@ -39,6 +40,7 @@
import org.apache.roller.pojos.CommentData;
import org.apache.roller.pojos.EntryAttributeData;
import org.apache.roller.pojos.WeblogEntryData;
+import org.apache.roller.pojos.WeblogEntryTagData;
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.ui.core.RollerRequest;
import org.apache.roller.ui.core.RollerSession;
@@ -59,6 +61,7 @@
private String mCategoryId = null;
private String mCreatorId = null;
private String mWebsiteId = null;
+ private String mTags = null;
private Date mDate = new Date();
private String mDateString = null;
private Integer mHours = new Integer(0);
@@ -182,6 +185,11 @@
}
}
}
+
+ if(getTags() != null)
+ {
+ entry.setTags(getTags());
+ }
}
/**
@@ -204,6 +212,12 @@
pluginsArray = StringUtils.split(entry.getPlugins(), ",");
}
+ String tags = entry.getTags();
+ if (tags != null && tags.length() > 0)
+ {
+ setTags(tags);
+ }
+
attributes = new HashMap();
Iterator atts = entry.getEntryAttributes().iterator();
while (atts.hasNext())
@@ -458,7 +472,7 @@
{
mWebsiteId = websiteId;
}
-
+
/** Convenience method for checking status */
public boolean isDraft()
{
Modified: incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/BigWeblogCalendarModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/BigWeblogCalendarModel.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/BigWeblogCalendarModel.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/BigWeblogCalendarModel.java Wed Sep 20 22:01:56 2006
@@ -86,7 +86,7 @@
((WeblogEntryData)entries.get(0)).getPubTime());
// append 8 char date string on end of selfurl
- String dayUrl = URLUtilities.getWeblogCollectionURL(weblog, locale, cat, dateString, -1, false);
+ String dayUrl = URLUtilities.getWeblogCollectionURL(weblog, locale, cat, dateString, null, -1, false);
sb.append("<div class=\"hCalendarDayTitleBig\">");
sb.append("<a href=\"");
@@ -152,10 +152,10 @@
try {
if (nextPrevMonthURL && pageLink != null) {
// next/prev month URLs point to current page
- url = URLUtilities.getWeblogPageURL(weblog, locale, pageLink, null, cat, dateString, -1, false);
+ url = URLUtilities.getWeblogPageURL(weblog, locale, pageLink, null, cat, dateString, null, -1, false);
} else {
// all other URLs point back to main weblog page
- url = URLUtilities.getWeblogCollectionURL(weblog, locale, cat, dateString, -1, false);
+ url = URLUtilities.getWeblogCollectionURL(weblog, locale, cat, dateString, null, -1, false);
}
} catch (Exception e) {
mLogger.error("ERROR: creating URL",e);
Modified: incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/WeblogCalendarModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/WeblogCalendarModel.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/WeblogCalendarModel.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/core/tags/calendar/WeblogCalendarModel.java Wed Sep 20 22:01:56 2006
@@ -163,9 +163,9 @@
}
try {
if (pageLink == null) { // create date URL
- url = URLUtilities.getWeblogCollectionURL(weblog, locale, cat, dateString, -1, false);
+ url = URLUtilities.getWeblogCollectionURL(weblog, locale, cat, dateString, null, -1, false);
} else { // create page URL
- url = URLUtilities.getWeblogPageURL(weblog, locale, pageLink, null, cat, dateString, -1, false);
+ url = URLUtilities.getWeblogPageURL(weblog, locale, pageLink, null, cat, dateString, null, -1, false);
}
} catch (Exception e) {
log.error("ERROR: creating URL",e);
@@ -224,7 +224,7 @@
}
public String computeTodayMonthUrl() {
- return URLUtilities.getWeblogCollectionURL(weblog, locale, cat, null, -1, false);
+ return URLUtilities.getWeblogCollectionURL(weblog, locale, cat, null, null, -1, false);
}
}
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java Wed Sep 20 22:01:56 2006
@@ -258,7 +258,8 @@
// requests handled by PageServlet
} else if(context.equals("page") || context.equals("entry") ||
- context.equals("date") || context.equals("category")) {
+ context.equals("date") || context.equals("category")
+ || context.equals("tags")) {
forwardUrl.append(PAGE_SERVLET);
forwardUrl.append("/");
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PageModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PageModel.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PageModel.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PageModel.java Wed Sep 20 22:01:56 2006
@@ -19,6 +19,8 @@
package org.apache.roller.ui.rendering.model;
import java.util.Map;
+import javax.servlet.jsp.tagext.TagSupport;
+
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -196,6 +198,7 @@
pageRequest.getWeblogAnchor(),
pageRequest.getWeblogDate(),
cat,
+ pageRequest.getTags(),
pageRequest.getPageNum());
} else if (dateString != null && dateString.length() == 8) {
return new WeblogEntriesDayPager(
@@ -205,6 +208,7 @@
pageRequest.getWeblogAnchor(),
pageRequest.getWeblogDate(),
cat,
+ pageRequest.getTags(),
pageRequest.getPageNum());
} else if (dateString != null && dateString.length() == 6) {
return new WeblogEntriesMonthPager(
@@ -214,7 +218,9 @@
pageRequest.getWeblogAnchor(),
pageRequest.getWeblogDate(),
cat,
+ pageRequest.getTags(),
pageRequest.getPageNum());
+
} else {
return new WeblogEntriesLatestPager(
weblog,
@@ -223,6 +229,7 @@
pageRequest.getWeblogAnchor(),
pageRequest.getWeblogDate(),
cat,
+ pageRequest.getTags(),
pageRequest.getPageNum());
}
}
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PlanetModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PlanetModel.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PlanetModel.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/PlanetModel.java Wed Sep 20 22:01:56 2006
@@ -19,6 +19,7 @@
package org.apache.roller.ui.rendering.model;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -85,7 +86,7 @@
String pagerUrl = URLUtilities.getWeblogPageURL(weblog,
weblogRequest.getLocale(), pageLink,
- null, null, null, 0, false);
+ null, null, null, null, 0, false);
return new PlanetEntriesPager(
null,
@@ -108,7 +109,7 @@
String pagerUrl = URLUtilities.getWeblogPageURL(weblog,
weblogRequest.getLocale(), pageLink,
- null, null, null, 0, false);
+ null, null, null, null, 0, false);
return new PlanetEntriesPager(
null,
@@ -131,7 +132,7 @@
String pagerUrl = URLUtilities.getWeblogPageURL(weblog,
weblogRequest.getLocale(), pageLink,
- null, null, null, 0, false);
+ null, null, null, null, 0, false);
return new PlanetEntriesPager(
feedURL,
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/SiteModel.java Wed Sep 20 22:01:56 2006
@@ -20,6 +20,7 @@
import java.util.ArrayList;
import java.util.Calendar;
+import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
@@ -46,6 +47,7 @@
import org.apache.roller.ui.rendering.pagers.Pager;
import org.apache.roller.ui.rendering.pagers.UsersPager;
import org.apache.roller.ui.rendering.pagers.WeblogEntriesListPager;
+import org.apache.roller.ui.rendering.pagers.WeblogEntriesTagsPager;
import org.apache.roller.ui.rendering.pagers.WeblogsPager;
import org.apache.roller.ui.rendering.util.WeblogPageRequest;
import org.apache.roller.ui.rendering.util.WeblogRequest;
@@ -61,6 +63,7 @@
private WebsiteData weblog = null;
private WeblogRequest weblogRequest = null;
+ private List tags = new ArrayList();
private String pageLink = null;
private int pageNum = 0;
@@ -81,6 +84,7 @@
Template weblogPage = ((WeblogPageRequest)weblogRequest).getWeblogPage();
pageLink = (weblogPage != null) ? weblogPage.getLink() : null;
pageNum = ((WeblogPageRequest)weblogRequest).getPageNum();
+ tags = ((WeblogPageRequest)weblogRequest).getTags();
}
// extract weblog object
@@ -98,7 +102,16 @@
String pagerUrl = URLUtilities.getWeblogPageURL(weblog,
weblogRequest.getLocale(), pageLink,
- null, null, null, 0, false);
+ null, null, null, null, 0, false);
+
+ if(tags.size() > 0) {
+ return new WeblogEntriesTagsPager(
+ pagerUrl, null, null, tags,
+ weblogRequest.getLocale(),
+ sinceDays,
+ pageNum,
+ length);
+ }
return new WeblogEntriesListPager(
pagerUrl, null, null, null,
@@ -145,8 +158,16 @@
String pagerUrl = URLUtilities.getWeblogPageURL(weblog,
weblogRequest.getLocale(), pageLink,
- null, null, null, 0, false);
+ null, null, null, null, 0, false);
+ if(tags.size() > 0) {
+ return new WeblogEntriesTagsPager(
+ pagerUrl, queryWeblog, user, tags,
+ weblogRequest.getLocale(),
+ sinceDays,
+ pageNum,
+ length);
+ }
return new WeblogEntriesListPager(
pagerUrl, queryWeblog, user, cat,
weblogRequest.getLocale(),
@@ -166,7 +187,7 @@
String pagerUrl = URLUtilities.getWeblogPageURL(weblog,
weblogRequest.getLocale(), pageLink,
- null, null, null, 0, false);
+ null, null, null, null, 0, false);
return new CommentsPager(
pagerUrl,
@@ -182,7 +203,7 @@
String pagerUrl = URLUtilities.getWeblogPageURL(weblog,
weblogRequest.getLocale(), pageLink,
- null, null, null, 0, false);
+ null, null, null, null, 0, false);
if(letter != null && StringUtils.isEmpty(letter)) {
letter = null;
@@ -203,7 +224,7 @@
String pagerUrl = URLUtilities.getWeblogPageURL(weblog,
weblogRequest.getLocale(), pageLink,
- null, null, null, 0, false);
+ null, null, null, null, 0, false);
if(letter != null && StringUtils.isEmpty(letter)) {
letter = null;
@@ -469,4 +490,49 @@
}
return results;
}
+
+ /**
+ * @param sinceDay
+ * @return
+ */
+ public List getTags(
+ int sinceDays) {
+ List results = new ArrayList();
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(new Date());
+ cal.add(Calendar.DATE, -1 * sinceDays);
+ Date startDate = cal.getTime();
+ try {
+ Roller roller = RollerFactory.getRoller();
+ WeblogManager wmgr = roller.getWeblogManager();
+ results = wmgr.getTags(
+ startDate, new Date(), null, null, false, -1);
+ } catch (Exception e) {
+ log.error("ERROR: fetching site tags list", e);
+ }
+ return results;
+ }
+
+ /**
+ * @param sinceDay
+ * @return
+ */
+ public List getHotTags(
+ int sinceDays, int length) {
+ List results = new ArrayList();
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(new Date());
+ cal.add(Calendar.DATE, -1 * sinceDays);
+ Date startDate = cal.getTime();
+ try {
+ Roller roller = RollerFactory.getRoller();
+ WeblogManager wmgr = roller.getWeblogManager();
+ results = wmgr.getTags(
+ startDate, new Date(), null, null, true, length);
+ } catch (Exception e) {
+ log.error("ERROR: fetching site tags list", e);
+ }
+ return results;
+ }
+
}
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/URLModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/URLModel.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/URLModel.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/model/URLModel.java Wed Sep 20 22:01:56 2006
@@ -134,22 +134,22 @@
}
public String getHome() {
- return URLUtilities.getWeblogCollectionURL(weblog, locale, null, null, -1, true);
+ return URLUtilities.getWeblogCollectionURL(weblog, locale, null, null, null, -1, true);
}
public String home(int pageNum) {
- return URLUtilities.getWeblogCollectionURL(weblog, locale, null, null, pageNum, true);
+ return URLUtilities.getWeblogCollectionURL(weblog, locale, null, null, null, pageNum, true);
}
public String home(String customLocale) {
- return URLUtilities.getWeblogCollectionURL(weblog, customLocale, null, null, -1, true);
+ return URLUtilities.getWeblogCollectionURL(weblog, customLocale, null, null, null, -1, true);
}
public String home(String customLocale, int pageNum) {
- return URLUtilities.getWeblogCollectionURL(weblog, customLocale, null, null, pageNum, true);
+ return URLUtilities.getWeblogCollectionURL(weblog, customLocale, null, null, null, pageNum, true);
}
@@ -173,32 +173,32 @@
public String date(String dateString) {
- return URLUtilities.getWeblogCollectionURL(weblog, locale, null, dateString, -1, true);
+ return URLUtilities.getWeblogCollectionURL(weblog, locale, null, dateString, null, -1, true);
}
public String date(String dateString, int pageNum) {
- return URLUtilities.getWeblogCollectionURL(weblog, locale, null, dateString, pageNum, true);
+ return URLUtilities.getWeblogCollectionURL(weblog, locale, null, dateString, null, pageNum, true);
}
public String category(String catPath) {
- return URLUtilities.getWeblogCollectionURL(weblog, locale, catPath, null, -1, true);
+ return URLUtilities.getWeblogCollectionURL(weblog, locale, catPath, null, null, -1, true);
}
public String category(String catPath, int pageNum) {
- return URLUtilities.getWeblogCollectionURL(weblog, locale, catPath, null, pageNum, true);
+ return URLUtilities.getWeblogCollectionURL(weblog, locale, catPath, null, null, pageNum, true);
}
public String collection(String dateString, String catPath) {
- return URLUtilities.getWeblogCollectionURL(weblog, locale, catPath, dateString, -1, true);
+ return URLUtilities.getWeblogCollectionURL(weblog, locale, catPath, dateString, null, -1, true);
}
public String collection(String dateString, String catPath, int pageNum) {
- return URLUtilities.getWeblogCollectionURL(weblog, locale, catPath, dateString, pageNum, true);
+ return URLUtilities.getWeblogCollectionURL(weblog, locale, catPath, dateString, null, pageNum, true);
}
@@ -218,12 +218,12 @@
public String page(String pageLink) {
- return URLUtilities.getWeblogPageURL(weblog, locale, pageLink, null, null, null, -1, true);
+ return URLUtilities.getWeblogPageURL(weblog, locale, pageLink, null, null, null, null, -1, true);
}
public String page(String pageLink, String dateString, String catPath, int pageNum) {
- return URLUtilities.getWeblogPageURL(weblog, locale, pageLink, null, catPath, dateString, pageNum, true);
+ return URLUtilities.getWeblogPageURL(weblog, locale, pageLink, null, catPath, dateString, null, pageNum, true);
}
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/AbstractWeblogEntriesPager.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/AbstractWeblogEntriesPager.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/AbstractWeblogEntriesPager.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/AbstractWeblogEntriesPager.java Wed Sep 20 22:01:56 2006
@@ -57,6 +57,7 @@
String entryAnchor = null;
String dateString = null;
String catPath = null;
+ List tags = new ArrayList();
int offset = 0;
int page = 0;
int length = 0;
@@ -69,6 +70,7 @@
String entryAnchor,
String dateString,
String catPath,
+ List tags,
int page) {
this.weblog = weblog;
@@ -78,6 +80,9 @@
this.dateString = dateString;
this.catPath = catPath;
+ if(tags != null)
+ this.tags = tags;
+
// make sure offset, length, and page are valid
length = weblog.getEntryDisplayCount();
if(page > 0) {
@@ -93,7 +98,7 @@
public String getHomeLink() {
- return createURL(0, 0, weblog, locale, pageLink, entryAnchor, dateString, catPath);
+ return createURL(0, 0, weblog, locale, pageLink, entryAnchor, dateString, catPath, tags);
}
@@ -104,7 +109,7 @@
public String getNextLink() {
if (hasMoreEntries()) {
- return createURL(page, 1, weblog, locale, pageLink, entryAnchor, dateString, catPath);
+ return createURL(page, 1, weblog, locale, pageLink, entryAnchor, dateString, catPath, tags);
}
return null;
}
@@ -120,7 +125,7 @@
public String getPrevLink() {
if (page > 0) {
- return createURL(page, -1, weblog, locale, pageLink, entryAnchor, dateString, catPath);
+ return createURL(page, -1, weblog, locale, pageLink, entryAnchor, dateString, catPath, tags);
}
return null;
}
@@ -209,17 +214,18 @@
String pageLink,
String entryAnchor,
String dateString,
- String catPath) {
+ String catPath,
+ List tags) {
int pageNum = page + pageAdd;
if (pageLink != null) {
- return URLUtilities.getWeblogPageURL(website, locale, pageLink, entryAnchor, catPath, dateString, pageNum, false);
+ return URLUtilities.getWeblogPageURL(website, locale, pageLink, entryAnchor, catPath, dateString, tags, pageNum, false);
} else if (entryAnchor != null) {
return URLUtilities.getWeblogEntryURL(website, locale, entryAnchor, true);
}
- return URLUtilities.getWeblogCollectionURL(website, locale, catPath, dateString, pageNum, false);
+ return URLUtilities.getWeblogCollectionURL(website, locale, catPath, dateString, tags, pageNum, false);
}
}
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesDayPager.java Wed Sep 20 22:01:56 2006
@@ -67,9 +67,10 @@
String entryAnchor,
String dateString,
String catPath,
+ List tags,
int page) {
- super(weblog, locale, pageLink, entryAnchor, dateString, catPath, page);
+ super(weblog, locale, pageLink, entryAnchor, dateString, catPath, tags, page);
getEntries();
@@ -154,7 +155,7 @@
public String getHomeLink() {
- return createURL(0, 0, weblog, locale, pageLink, null, null, catPath);
+ return createURL(0, 0, weblog, locale, pageLink, null, null, catPath, tags);
}
@@ -165,7 +166,7 @@
public String getNextLink() {
if (more) {
- return createURL(page, 1, weblog, locale, pageLink, null, dateString, catPath);
+ return createURL(page, 1, weblog, locale, pageLink, null, dateString, catPath, tags);
}
return null;
}
@@ -181,7 +182,7 @@
public String getPrevLink() {
if (page > 0) {
- return createURL(page, -1, weblog, locale, pageLink, null, dateString, catPath);
+ return createURL(page, -1, weblog, locale, pageLink, null, dateString, catPath, tags);
}
return null;
}
@@ -198,7 +199,7 @@
public String getNextCollectionLink() {
if (nextDay != null) {
String next = DateUtil.format8chars(nextDay);
- return createURL(0, 0, weblog, locale, pageLink, null, next, catPath);
+ return createURL(0, 0, weblog, locale, pageLink, null, next, catPath, tags);
}
return null;
}
@@ -215,7 +216,7 @@
public String getPrevCollectionLink() {
if (prevDay != null) {
String prev = DateUtil.format8chars(prevDay);
- return createURL(0, 0, weblog, locale, pageLink, null, prev, catPath);
+ return createURL(0, 0, weblog, locale, pageLink, null, prev, catPath, tags);
}
return null;
}
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesLatestPager.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesLatestPager.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesLatestPager.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesLatestPager.java Wed Sep 20 22:01:56 2006
@@ -58,9 +58,10 @@
String entryAnchor,
String dateString,
String catPath,
+ List tags,
int page) {
- super(weblog, locale, pageLink, entryAnchor, dateString, catPath, page);
+ super(weblog, locale, pageLink, entryAnchor, dateString, catPath, tags, page);
// initialize the pager collection
getEntries();
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesMonthPager.java Wed Sep 20 22:01:56 2006
@@ -67,9 +67,10 @@
String entryAnchor,
String dateString,
String catPath,
+ List tags,
int page) {
- super(weblog, locale, pageLink, entryAnchor, dateString, catPath, page);
+ super(weblog, locale, pageLink, entryAnchor, dateString, catPath, tags, page);
getEntries();
@@ -147,7 +148,7 @@
public String getHomeLink() {
- return createURL(0, 0, weblog, locale, pageLink, null, null, catPath);
+ return createURL(0, 0, weblog, locale, pageLink, null, null, catPath, tags);
}
@@ -158,7 +159,7 @@
public String getNextLink() {
if (more) {
- return createURL(page, 1, weblog, locale, pageLink, null, dateString, catPath);
+ return createURL(page, 1, weblog, locale, pageLink, null, dateString, catPath, tags);
}
return null;
}
@@ -174,7 +175,7 @@
public String getPrevLink() {
if (offset > 0) {
- return createURL(page, -1, weblog, locale, pageLink, null, dateString, catPath);
+ return createURL(page, -1, weblog, locale, pageLink, null, dateString, catPath, tags);
}
return null;
}
@@ -191,7 +192,7 @@
public String getNextCollectionLink() {
if (nextMonth != null) {
String next = DateUtil.format6chars(nextMonth);
- return createURL(0, 0, weblog, locale, pageLink, null, next, catPath);
+ return createURL(0, 0, weblog, locale, pageLink, null, next, catPath, tags);
}
return null;
}
@@ -208,7 +209,7 @@
public String getPrevCollectionLink() {
if (prevMonth != null) {
String prev = DateUtil.format6chars(prevMonth);
- return createURL(0, 0, weblog, locale, pageLink, null, prev, catPath);
+ return createURL(0, 0, weblog, locale, pageLink, null, prev, catPath, tags);
}
return null;
}
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesPermalinkPager.java Wed Sep 20 22:01:56 2006
@@ -21,6 +21,7 @@
import java.text.MessageFormat;
import java.util.Collections;
import java.util.Date;
+import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.apache.commons.logging.Log;
@@ -58,9 +59,10 @@
String entryAnchor,
String dateString,
String catPath,
+ List tags,
int page) {
- super(weblog, locale, pageLink, entryAnchor, dateString, catPath, page);
+ super(weblog, locale, pageLink, entryAnchor, dateString, catPath, tags, page);
getEntries();
}
@@ -85,7 +87,7 @@
public String getHomeLink() {
- return createURL(0, 0, weblog, locale, pageLink, null, dateString, catPath);
+ return createURL(0, 0, weblog, locale, pageLink, null, dateString, catPath, tags);
}
@@ -96,7 +98,7 @@
public String getNextLink() {
if (getNextEntry() != null) {
- return createURL(0, 0, weblog, locale, pageLink, nextEntry.getAnchor(), dateString, catPath);
+ return createURL(0, 0, weblog, locale, pageLink, nextEntry.getAnchor(), dateString, catPath, tags);
}
return null;
}
@@ -113,7 +115,7 @@
public String getPrevLink() {
if (getPrevEntry() != null) {
- return createURL(0, 0, weblog, locale, pageLink, prevEntry.getAnchor(), dateString, catPath);
+ return createURL(0, 0, weblog, locale, pageLink, prevEntry.getAnchor(), dateString, catPath, tags);
}
return null;
}
Added: incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesTagsPager.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesTagsPager.java?view=auto&rev=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesTagsPager.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesTagsPager.java Wed Sep 20 22:01:56 2006
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License. For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+
+package org.apache.roller.ui.rendering.pagers;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.roller.model.Roller;
+import org.apache.roller.model.RollerFactory;
+import org.apache.roller.model.UserManager;
+import org.apache.roller.model.WeblogManager;
+import org.apache.roller.pojos.Template;
+import org.apache.roller.pojos.UserData;
+import org.apache.roller.pojos.WeblogEntryData;
+import org.apache.roller.pojos.WebsiteData;
+import org.apache.roller.pojos.wrapper.WeblogEntryDataWrapper;
+
+
+/**
+ * Simple pager for list of weblog entries.
+ */
+public class WeblogEntriesTagsPager extends AbstractPager {
+
+ private static Log log = LogFactory.getLog(WeblogEntriesTagsPager.class);
+
+ private String locale = null;
+ private int sinceDays = -1;
+ private int length = 0;
+
+ private WebsiteData queryWeblog = null;
+ private UserData queryUser = null;
+ private List queryTags = null;
+
+ // entries for the pager
+ private List entries;
+
+ // are there more entries?
+ private boolean more = false;
+
+
+ public WeblogEntriesTagsPager(
+ String baseUrl,
+ WebsiteData queryWeblog,
+ UserData queryUser,
+ List queryTags,
+ String locale,
+ int sinceDays,
+ int pageNum,
+ int length) {
+
+ super(baseUrl, pageNum);
+
+ // store the data
+ this.queryWeblog = queryWeblog;
+ this.queryUser = queryUser;
+ this.queryTags = queryTags;
+ this.locale = locale;
+ this.sinceDays = sinceDays;
+ this.length = length;
+
+ // initialize the pager collection
+ getItems();
+ }
+
+
+ public List getItems() {
+
+ if (entries == null) {
+ // calculate offset
+ int offset = getPage() * length;
+
+ List results = new ArrayList();
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(new Date());
+ cal.add(Calendar.DATE, -1 * sinceDays);
+ Date startDate = cal.getTime();
+ try {
+ Roller roller = RollerFactory.getRoller();
+ WeblogManager wmgr = roller.getWeblogManager();
+ UserManager umgr = roller.getUserManager();
+ List rawEntries = wmgr.getWeblogEntriesByTags(queryWeblog, queryTags);
+
+ // check if there are more results for paging
+ if(rawEntries.size() > length) {
+ more = true;
+ rawEntries.remove(rawEntries.size() - 1);
+ }
+
+ // wrap the results
+ for (Iterator it = rawEntries.iterator(); it.hasNext();) {
+ WeblogEntryData entry = (WeblogEntryData) it.next();
+ results.add(WeblogEntryDataWrapper.wrap(entry));
+ }
+
+ } catch (Exception e) {
+ log.error("ERROR: fetching weblog entries list", e);
+ }
+
+ entries = results;
+ }
+
+ return entries;
+ }
+
+
+ public boolean hasMoreItems() {
+ return more;
+ }
+
+}
Propchange: incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesTagsPager.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesTagsPager.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: incubator/roller/trunk/src/org/apache/roller/ui/rendering/pagers/WeblogEntriesTagsPager.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogPageRequest.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogPageRequest.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogPageRequest.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/ui/rendering/util/WeblogPageRequest.java Wed Sep 20 22:01:56 2006
@@ -18,7 +18,10 @@
package org.apache.roller.ui.rendering.util;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
@@ -33,6 +36,7 @@
import org.apache.roller.pojos.WeblogEntryData;
import org.apache.roller.pojos.WeblogTemplate;
import org.apache.roller.util.URLUtilities;
+import org.apache.roller.util.Utilities;
/**
@@ -55,6 +59,7 @@
private String weblogPageName = null;
private String weblogCategoryName = null;
private String weblogDate = null;
+ private List tags = new ArrayList();
private int pageNum = 0;
private Map customParams = new HashMap();
@@ -100,6 +105,7 @@
* /entry/<anchor> - permalink
* /date/<YYYYMMDD> - date collection view
* /category/<category> - category collection view
+ * /tags/spring+framework - tags
* /page/<pagelink> - custom page
*
* path info may be null, which indicates the weblog homepage
@@ -136,7 +142,10 @@
} else if("page".equals(this.context)) {
this.weblogPageName = pathElements[1];
-
+
+ } else if("tags".equals(this.context)) {
+ this.tags = Arrays.asList(StringUtils.split(pathElements[1],"+"));
+
} else {
throw new InvalidRequestException("context "+this.context+
"not supported, "+request.getRequestURL());
@@ -201,6 +210,10 @@
this.weblogCategoryName = "/"+this.weblogCategoryName;
}
}
+
+ if(request.getParameter("tags") != null) {
+ this.tags = Arrays.asList(StringUtils.split(URLUtilities.decode(request.getParameter("tags")),"+"));
+ }
}
}
@@ -222,12 +235,14 @@
customParams.remove("date");
customParams.remove("cat");
customParams.remove("page");
+ customParams.remove("tags");
if(log.isDebugEnabled()) {
log.debug("context = "+this.context);
log.debug("weblogAnchor = "+this.weblogAnchor);
log.debug("weblogDate = "+this.weblogDate);
log.debug("weblogCategory = "+this.weblogCategoryName);
+ log.debug("tags = "+ Utilities.stringArrayToString((String[])this.tags.toArray(), ","));
log.debug("weblogPage = "+this.weblogPageName);
log.debug("pageNum = "+this.pageNum);
}
@@ -299,6 +314,14 @@
public void setCustomParams(Map customParams) {
this.customParams = customParams;
+ }
+
+ public List getTags() {
+ return tags;
+ }
+
+ public void setTags(List tags) {
+ this.tags = tags;
}
public WeblogEntryData getWeblogEntry() {
Modified: incubator/roller/trunk/src/org/apache/roller/util/URLUtilities.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/util/URLUtilities.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/util/URLUtilities.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/util/URLUtilities.java Wed Sep 20 22:01:56 2006
@@ -23,6 +23,7 @@
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import org.apache.roller.config.RollerRuntimeConfig;
import org.apache.roller.pojos.WebsiteData;
@@ -152,6 +153,7 @@
String locale,
String category,
String dateString,
+ List tags,
int pageNum,
boolean absolute) {
@@ -178,7 +180,9 @@
} else if(dateString != null && cat == null) {
pathinfo.append("date/").append(dateString);
-
+
+ } else if(tags != null && tags.size() > 0) {
+ pathinfo.append("tags/").append(Utilities.stringArrayToString((String[])tags.toArray(), ","));
} else {
if(dateString != null) params.put("date", dateString);
if(cat != null) params.put("cat", encode(cat));
@@ -201,6 +205,7 @@
String entryAnchor,
String category,
String dateString,
+ List tags,
int pageNum,
boolean absolute) {
@@ -223,12 +228,15 @@
if(category != null) {
params.put("cat", encode(category));
}
+ if(tags != null && tags.size() > 0) {
+ params.put("tags",encode(Utilities.stringArrayToString((String[])tags.toArray(), "+")));
+ }
if(pageNum > 0) {
params.put("page", Integer.toString(pageNum));
}
} else {
// if there is no page link then this is just a typical collection url
- return getWeblogCollectionURL(weblog, locale, category, dateString, pageNum, absolute);
+ return getWeblogCollectionURL(weblog, locale, category, dateString, tags, pageNum, absolute);
}
return pathinfo.toString() + getQueryString(params);
Modified: incubator/roller/trunk/testdata/WEB-INF/classes/hibernate.cfg.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/testdata/WEB-INF/classes/hibernate.cfg.xml?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/testdata/WEB-INF/classes/hibernate.cfg.xml (original)
+++ incubator/roller/trunk/testdata/WEB-INF/classes/hibernate.cfg.xml Wed Sep 20 22:01:56 2006
@@ -4,7 +4,7 @@
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
-
+
<!-- By default Roller uses a JNDI DataSource and the MySQLDialect
<property name="show_sql">false</property>
<property name="connection.datasource">java:comp/env/jdbc/rollerdb</property>
@@ -62,7 +62,8 @@
<mapping resource="org/apache/roller/pojos/UserData.hbm.xml" />
<mapping resource="org/apache/roller/pojos/WeblogCategoryData.hbm.xml" />
<mapping resource="org/apache/roller/pojos/WeblogCategoryAssoc.hbm.xml" />
- <mapping resource="org/apache/roller/pojos/WeblogEntryData.hbm.xml" />
+ <mapping resource="org/apache/roller/pojos/WeblogEntryData.hbm.xml" />
+ <mapping resource="org/apache/roller/pojos/WeblogEntryTagData.hbm.xml" />
<mapping resource="org/apache/roller/pojos/WebsiteData.hbm.xml" />
<mapping resource="org/apache/roller/pojos/RollerPropertyData.hbm.xml" />
<mapping resource="org/apache/roller/pojos/PermissionsData.hbm.xml" />
Modified: incubator/roller/trunk/tests/org/apache/roller/business/WeblogEntryTest.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/tests/org/apache/roller/business/WeblogEntryTest.java?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/tests/org/apache/roller/business/WeblogEntryTest.java (original)
+++ incubator/roller/trunk/tests/org/apache/roller/business/WeblogEntryTest.java Wed Sep 20 22:01:56 2006
@@ -23,6 +23,10 @@
package org.apache.roller.business;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import junit.framework.Test;
@@ -35,6 +39,7 @@
import org.apache.roller.model.WeblogManager;
import org.apache.roller.pojos.UserData;
import org.apache.roller.pojos.WeblogEntryData;
+import org.apache.roller.pojos.WeblogEntryTagData;
import org.apache.roller.pojos.WebsiteData;
@@ -318,6 +323,309 @@
TestUtils.endSession(true);
}
+
+ public void testCreateAnEntryWithTags() throws Exception {
+ WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
+ WeblogEntryData entry = null;
+
+ WeblogEntryData testEntry = new WeblogEntryData();
+ testEntry.setTitle("entryTestEntry");
+ testEntry.setLink("testEntryLink");
+ testEntry.setText("blah blah entry");
+ testEntry.setAnchor("testEntryAnchor");
+ testEntry.setPubTime(new java.sql.Timestamp(new java.util.Date().getTime()));
+ testEntry.setUpdateTime(new java.sql.Timestamp(new java.util.Date().getTime()));
+ testEntry.setWebsite(testWeblog);
+ testEntry.setCreator(testUser);
+ testEntry.setCategory(testWeblog.getDefaultCategory());
+
+ WeblogEntryTagData tag = new WeblogEntryTagData();
+ tag.setName("testTag");
+ tag.setWebsite(testWeblog);
+ tag.setWeblogEntry(testEntry);
+ tag.setUser(testUser);
+ tag.setTime(new java.sql.Timestamp(new java.util.Date().getTime()));
+
+ testEntry.getTagSet().add(tag);
+
+ // create a weblog entry
+ mgr.saveWeblogEntry(testEntry);
+ String id = testEntry.getId();
+ TestUtils.endSession(true);
+
+ // make sure entry was created
+ entry = mgr.getWeblogEntry(id);
+ assertNotNull(entry);
+ assertEquals(testEntry, entry);
+ assertNotNull(entry.getTagSet());
+ assertEquals(1, entry.getTagSet().size());
+ assertEquals("testTag",((WeblogEntryTagData) entry.getTagSet().iterator().next()).getName());
+
+ // teardown our test entries
+ TestUtils.teardownWeblogEntry(id);
+ TestUtils.endSession(true);
+ }
+
+ public void testCreateAnEntryWithTagsShortcut() throws Exception {
+
+ WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
+ WeblogEntryData entry = null;
+
+ WeblogEntryData testEntry = new WeblogEntryData();
+ testEntry.setTitle("entryTestEntry");
+ testEntry.setLink("testEntryLink");
+ testEntry.setText("blah blah entry");
+ testEntry.setAnchor("testEntryAnchor");
+ testEntry.setPubTime(new java.sql.Timestamp(new java.util.Date().getTime()));
+ testEntry.setUpdateTime(new java.sql.Timestamp(new java.util.Date().getTime()));
+ testEntry.setWebsite(testWeblog);
+ testEntry.setCreator(testUser);
+ testEntry.setCategory(testWeblog.getDefaultCategory());
+
+ // shortcut
+ testEntry.addTag("testTag");
+
+ // create a weblog entry
+ mgr.saveWeblogEntry(testEntry);
+ String id = testEntry.getId();
+ TestUtils.endSession(true);
+
+ // make sure entry was created
+ entry = mgr.getWeblogEntry(id);
+ assertNotNull(entry);
+ assertEquals(testEntry, entry);
+ assertNotNull(entry.getTagSet());
+ assertEquals(1, entry.getTagSet().size());
+ assertEquals("testTag",((WeblogEntryTagData) entry.getTagSet().iterator().next()).getName());
+
+ // teardown our test entry
+ TestUtils.teardownWeblogEntry(id);
+ TestUtils.endSession(true);
+ }
+
+ public void testTagUpdate() throws Exception {
+
+ WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
+
+ // setup some test entries to use
+ WeblogEntryData entry = TestUtils.setupWeblogEntry("entry1", testWeblog.getDefaultCategory(), testWeblog, testUser);
+ entry.addTag("testTag");
+ String id = entry.getId();
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ assertNotNull(entry);
+ assertNotNull(entry.getTagSet());
+ assertEquals(1, entry.getTagSet().size());
+ assertEquals("testTag",((WeblogEntryTagData) entry.getTagSet().iterator().next()).getName());
+
+ // update a weblog entry tag
+ WeblogEntryTagData tag = ((WeblogEntryTagData) entry.getTagSet().iterator().next());
+ tag.setName("updatedTestTag");
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ assertNotNull(entry);
+ assertEquals(1, entry.getTagSet().size());
+ assertEquals("updatedTestTag",((WeblogEntryTagData) entry.getTagSet().iterator().next()).getName());
+
+ // teardown our test entry
+ TestUtils.teardownWeblogEntry(id);
+ TestUtils.endSession(true);
+
+ }
+
+ public void testAddMultipleTags() throws Exception {
+
+ WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
+
+ // setup some test entries to use
+ WeblogEntryData entry = TestUtils.setupWeblogEntry("entry1", testWeblog.getDefaultCategory(), testWeblog, testUser);
+ entry.addTag("testTag");
+ entry.addTag("whateverTag");
+ String id = entry.getId();
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ entry.addTag("testTag2");
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ assertEquals(3, entry.getTagSet().size());
+
+ // teardown our test entry
+ TestUtils.teardownWeblogEntry(id);
+ TestUtils.endSession(true);
+ }
+
+ public void testAddMultipleIdenticalTags() throws Exception {
+
+ WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
+
+ // setup some test entries to use
+ WeblogEntryData entry = TestUtils.setupWeblogEntry("entry1", testWeblog.getDefaultCategory(), testWeblog, testUser);
+ entry.addTag("testTag");
+ String id = entry.getId();
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ entry.addTag("testTag");
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ assertEquals(1, entry.getTagSet().size());
+
+ // teardown our test entry
+ TestUtils.teardownWeblogEntry(id);
+ TestUtils.endSession(true);
+ }
+
+ public void testRemoveTags() throws Exception {
+
+ WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
+
+ UserData testUser = TestUtils.setupUser("entryTestUser3");
+ WebsiteData testWeblog = TestUtils.setupWeblog("entryTestWeblog3", testUser);
+ TestUtils.endSession(true);
+
+ // setup some test entries to use
+ WeblogEntryData entry = TestUtils.setupWeblogEntry("entry1", testWeblog.getDefaultCategory(), testWeblog, testUser);
+ entry.addTag("testTag");
+ entry.addTag("testTag2");
+ String id = entry.getId();
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ assertEquals(2, entry.getTagSet().size());
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ entry.getTagSet().clear();
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ assertEquals(0, entry.getTagSet().size());
+ TestUtils.endSession(true);
+
+ // teardown our test entry
+ //TestUtils.teardownWeblogEntry(id);
+ //TestUtils.endSession(true);
+ }
+
+ public void testRemoveTagsViaShortcut() throws Exception {
+
+ WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
+
+ // setup some test entries to use
+ WeblogEntryData entry = TestUtils.setupWeblogEntry("entry1", testWeblog.getDefaultCategory(), testWeblog, testUser);
+ entry.addTag("testTag");
+ entry.addTag("testTag2");
+ String id = entry.getId();
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ assertEquals(2, entry.getTagSet().size());
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ entry.removeTag("testTag");
+ entry.removeTag("testTag2");
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ assertEquals(0, entry.getTagSet().size());
+ TestUtils.endSession(true);
+
+ // teardown our test entry
+ TestUtils.teardownWeblogEntry(id);
+ TestUtils.endSession(true);
+ }
+
+ public void testGetEntriesByTag() throws Exception {
+
+ WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
+
+ // setup some test entries to use
+ WeblogEntryData entry = TestUtils.setupWeblogEntry("entry1", testWeblog.getDefaultCategory(), testWeblog, testUser);
+ entry.addTag("testTag");
+ String id = entry.getId();
+ TestUtils.endSession(true);
+
+ List results = mgr.getWeblogEntriesByTags(testWeblog, Arrays.asList(new String[] {"testTag"}));
+ assertEquals(1,results.size());
+ WeblogEntryData testEntry = (WeblogEntryData) results.iterator().next();
+ assertEquals(entry, testEntry);
+
+ // teardown our test entry
+ TestUtils.teardownWeblogEntry(id);
+ TestUtils.endSession(true);
+ }
+
+ public void testRemoveEntryTagCascading() throws Exception {
+
+ WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
+
+ // setup some test entries to use
+ WeblogEntryData entry = TestUtils.setupWeblogEntry("entry1", testWeblog.getDefaultCategory(), testWeblog, testUser);
+ entry.addTag("testTag");
+ String id = entry.getId();
+ TestUtils.endSession(true);
+
+ List results = mgr.getWeblogEntriesByTags(testWeblog, Arrays.asList(new String[] {"testTag"}));
+ assertEquals(1,results.size());
+ WeblogEntryData testEntry = (WeblogEntryData) results.iterator().next();
+ assertEquals(entry, testEntry);
+
+ // teardown our test entry
+ TestUtils.teardownWeblogEntry(id);
+ TestUtils.endSession(true);
+
+ results = mgr.getWeblogEntriesByTags(testWeblog, Arrays.asList(new String[] {"testTag"}));
+ assertEquals(0,results.size());
+
+ // terminate
+ TestUtils.endSession(true);
+ }
+
+ public void testUpdateTags() throws Exception {
+
+ WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
+
+ // setup some test entries to use
+ WeblogEntryData entry = TestUtils.setupWeblogEntry("entry1", testWeblog.getDefaultCategory(), testWeblog, testUser);
+ entry.addTag("testWillStayTag");
+ entry.addTag("testTagWillBeRemoved");
+ String id = entry.getId();
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ assertEquals(2, entry.getTagSet().size());
+
+ List updateTags = new ArrayList();
+ updateTags.add("testWillStayTag");
+ updateTags.add("testNewTag");
+ updateTags.add("testNewTag3");
+ entry.updateTags(updateTags);
+ TestUtils.endSession(true);
+
+ entry = mgr.getWeblogEntry(id);
+ HashSet tagNames = new HashSet();
+ for(Iterator it = entry.getTagSet().iterator(); it.hasNext();) {
+ WeblogEntryTagData tagData = (WeblogEntryTagData) it.next();
+ tagNames.add(tagData.getName());
+ }
+
+ assertEquals(3, entry.getTagSet().size());
+ assertEquals(3, tagNames.size());
+ assertEquals(true, tagNames.contains("testWillStayTag"));
+ assertEquals(true, tagNames.contains("testNewTag"));
+ assertEquals(true, tagNames.contains("testNewTag3"));
+
+ // teardown our test entry
+ TestUtils.teardownWeblogEntry(id);
+ TestUtils.endSession(true);
+ }
+
/**
* Test that we can add and remove entry attributes for an entry.
Modified: incubator/roller/trunk/web/WEB-INF/classes/ApplicationResources.properties
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/classes/ApplicationResources.properties?view=diff&rev=448460&r1=448459&r2=448460
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/ApplicationResources.properties (original)
+++ incubator/roller/trunk/web/WEB-INF/classes/ApplicationResources.properties Wed Sep 20 22:01:56 2006
@@ -1424,6 +1424,7 @@
weblogEdit.spellMode=Spellcheck
weblogEdit.submitForReview=Submit for Review
weblogEdit.submittedForReview=Entry submitted for review
+weblogEdit.tags=Tags
weblogEdit.title=Title
weblogEdit.unsaved=Not saved
weblogEdit.updateTime=Last updated