You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by cl...@apache.org on 2006/12/06 18:54:39 UTC
svn commit: r483166 [2/2] - in /incubator/roller/trunk/sandbox/jdobackend:
./ src/org/apache/roller/business/datamapper/
src/org/apache/roller/business/jdo/ src/org/apache/roller/business/jpa/
src/org/apache/roller/pojos/
Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperUserManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperUserManagerImpl.java?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperUserManagerImpl.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperUserManagerImpl.java Wed Dec 6 09:54:36 2006
@@ -20,6 +20,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
import org.apache.roller.RollerException;
import org.apache.roller.business.BookmarkManager;
import org.apache.roller.business.RollerFactory;
@@ -42,15 +43,17 @@
import org.apache.roller.pojos.WeblogTemplate;
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.pojos.CommentData;
+import org.apache.roller.pojos.WeblogEntryTagData;
+import org.apache.roller.pojos.TagStat;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Date;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
-import java.util.Collections;
/*
* DatamapperUserManagerImpl.java
@@ -58,7 +61,7 @@
* Created on May 29, 2006, 3:15 PM
*
*/
-public class DatamapperUserManagerImpl implements UserManager {
+public abstract class DatamapperUserManagerImpl implements UserManager {
/** The logger instance for this class. */
private static Log log = LogFactory.getLog(DatamapperUserManagerImpl.class);
@@ -102,11 +105,24 @@
* TODO BACKEND: use manager methods instead of queries here
* TODO DatamapperPort: Use bulk deletes instead of current approach
*/
- private void removeWebsiteContents(WebsiteData website) throws RollerException {
+ private void removeWebsiteContents(WebsiteData website)
+ throws RollerException {
BookmarkManager bmgr = RollerFactory.getRoller().getBookmarkManager();
WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
+ // remove tags
+ DatamapperQuery tagQuery = strategy.newQuery(WeblogEntryTagData.class,
+ "WeblogEntryTagData.getByWeblog");
+ for(Iterator iter = ( (List)tagQuery.execute(website) ) .iterator(); iter.hasNext();) {
+ WeblogEntryTagData tagData = (WeblogEntryTagData) iter.next();
+ this.strategy.remove(tagData);
+ }
+
+ // remove site tag aggregates
+ List tags = wmgr.getTags(website, null, null, -1);
+ updateTagAggregates(tags);
+
// Remove the website's ping queue entries
List queueEntries = (List)strategy.newQuery(PingQueueEntryData.class,
"PingQueueEntryData.getByWebsite").execute(website);
@@ -116,7 +132,8 @@
}
// Remove the website's auto ping configurations
- AutoPingManager autoPingMgr = RollerFactory.getRoller().getAutopingManager();
+ AutoPingManager autoPingMgr = RollerFactory.getRoller()
+ .getAutopingManager();
List autopings = autoPingMgr.getAutoPingsByWebsite(website);
it = autopings.iterator();
while(it.hasNext()) {
@@ -180,6 +197,9 @@
}
+ protected abstract void updateTagAggregates(List tags)
+ throws RollerException;
+
public void saveUser(UserData data) throws RollerException {
this.strategy.store(data);
}
@@ -191,11 +211,13 @@
this.userNameToIdMap.remove(user.getUserName());
}
- public void savePermissions(PermissionsData perms) throws RollerException {
+ public void savePermissions(PermissionsData perms)
+ throws RollerException {
this.strategy.store(perms);
}
- public void removePermissions(PermissionsData perms) throws RollerException {
+ public void removePermissions(PermissionsData perms)
+ throws RollerException {
this.strategy.remove(perms);
}
@@ -206,7 +228,8 @@
this.strategy.store(page);
// update weblog last modified date. date updated by saveWebsite()
- RollerFactory.getRoller().getUserManager().saveWebsite(page.getWebsite());
+ RollerFactory.getRoller().getUserManager()
+ .saveWebsite(page.getWebsite());
}
public void removePage(WeblogTemplate page) throws RollerException {
@@ -227,7 +250,7 @@
}
if(getUserByUserName(newUser.getUserName()) != null ||
- getUserByUserName(newUser.getUserName().toLowerCase()) != null) {
+ getUserByUserName(newUser.getUserName().toLowerCase()) != null) {
throw new RollerException("error.add.user.userNameInUse");
}
@@ -245,7 +268,8 @@
this.addWeblogContents(newWeblog);
}
- private void addWeblogContents(WebsiteData newWeblog) throws RollerException {
+ private void addWeblogContents(WebsiteData newWeblog)
+ throws RollerException {
// grant weblog creator ADMIN permissions
PermissionsData perms = new PermissionsData();
@@ -314,8 +338,10 @@
}
// add any auto enabled ping targets
- PingTargetManager pingTargetMgr = RollerFactory.getRoller().getPingTargetManager();
- AutoPingManager autoPingMgr = RollerFactory.getRoller().getAutopingManager();
+ PingTargetManager pingTargetMgr = RollerFactory.getRoller()
+ .getPingTargetManager();
+ AutoPingManager autoPingMgr = RollerFactory.getRoller()
+ .getAutopingManager();
Iterator pingTargets = pingTargetMgr.getCommonPingTargets().iterator();
PingTargetData pingTarget = null;
@@ -323,7 +349,8 @@
pingTarget = (PingTargetData) pingTargets.next();
if(pingTarget.isAutoEnabled()) {
- AutoPingData autoPing = new AutoPingData(null, pingTarget, newWeblog);
+ AutoPingData autoPing = new AutoPingData(
+ null, pingTarget, newWeblog);
autoPingMgr.saveAutoPing(autoPing);
}
}
@@ -394,7 +421,8 @@
// NOTE: if we ever allow changing handles then this needs updating
if(this.weblogHandleToIdMap.containsKey(handle)) {
- WebsiteData weblog = this.getWebsite((String) this.weblogHandleToIdMap.get(handle));
+ WebsiteData weblog = this.getWebsite(
+ (String) this.weblogHandleToIdMap.get(handle));
if(weblog != null) {
// only return weblog if enabled status matches
if(enabled == null || enabled.equals(weblog.getEnabled())) {
@@ -411,10 +439,12 @@
DatamapperQuery query;
Object[] params;
if (enabled != null) {
- query = strategy.newQuery(WebsiteData.class,"WebsiteData.getByHandle&enabled");
+ query = strategy.newQuery(WebsiteData.class,
+ "WebsiteData.getByHandle&enabled");
params = new Object[] {handle, enabled};
} else {
- query = strategy.newQuery(WebsiteData.class,"WebsiteData.getByHandle");
+ query = strategy.newQuery(WebsiteData.class,
+ "WebsiteData.getByHandle");
params = new Object[] {handle};
}
query.setUnique();
@@ -562,7 +592,8 @@
// NOTE: if we ever allow changing usernames then this needs updating
if(this.userNameToIdMap.containsKey(userName)) {
- UserData user = this.getUser((String) this.userNameToIdMap.get(userName));
+ UserData user = this.getUser(
+ (String) this.userNameToIdMap.get(userName));
if(user != null) {
// only return the user if the enabled status matches
if(enabled == null || enabled.equals(user.getEnabled())) {
@@ -579,10 +610,12 @@
DatamapperQuery query;
Object[] params;
if (enabled != null) {
- query = strategy.newQuery(UserData.class,"UserData.getByUserName&enabled");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByUserName&enabled");
params = new Object[] {userName, enabled};
} else {
- query = strategy.newQuery(WebsiteData.class,"UserData.getByUserName");
+ query = strategy.newQuery(WebsiteData.class,
+ "UserData.getByUserName");
params = new Object[] {userName};
}
query.setUnique();
@@ -616,21 +649,27 @@
if (weblog != null) {
if (enabled != null) {
if (startDate != null) {
- query = strategy.newQuery(UserData.class, "UserData.getByPermissions.website&Enabled&EndDate&StartDate");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByPermissions.website&Enabled&EndDate&StartDate");
if (setRange) query.setRange(offset, offset + length);
results = (List) query.execute(new Object[] {weblog, enabled, endDate, startDate});
} else {
- query = strategy.newQuery(UserData.class, "UserData.getByEnabled&Permissions.website");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByEnabled&Permissions.website");
if (setRange) query.setRange(offset, offset + length);
- results = (List) query.execute(new Object[] {enabled, weblog});
+ results = (List) query.execute(
+ new Object[] {enabled, weblog});
}
} else {
if (startDate != null) {
- query = strategy.newQuery(UserData.class, "UserData.getByPermissions.website&EndDate&StartDate");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByPermissions.website&EndDate&StartDate");
if (setRange) query.setRange(offset, offset + length);
- results = (List) query.execute(new Object[] {weblog, endDate, startDate});
+ results = (List) query.execute(
+ new Object[] {weblog, endDate, startDate});
} else {
- query = strategy.newQuery(UserData.class, "UserData.getByPermissions.website");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByPermissions.website");
if (setRange) query.setRange(offset, offset + length);
results = (List) query.execute(weblog);
}
@@ -638,21 +677,27 @@
} else {
if (enabled != null) {
if (startDate != null) {
- query = strategy.newQuery(UserData.class, "UserData.getByEnabled&EndDate&StartDate");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByEnabled&EndDate&StartDate");
if (setRange) query.setRange(offset, offset + length);
- results = (List) query.execute(new Object[] {enabled, endDate, startDate});
+ results = (List) query.execute(
+ new Object[] {enabled, endDate, startDate});
} else {
- query = strategy.newQuery(UserData.class, "UserData.getByEnabled");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByEnabled");
if (setRange) query.setRange(offset, offset + length);
results = (List) query.execute(new Object[] {enabled});
}
} else {
if (startDate != null) {
- query = strategy.newQuery(UserData.class, "UserData.getByPermissions.website&EndDate&StartDate");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByPermissions.website&EndDate&StartDate");
if (setRange) query.setRange(offset, offset + length);
- results = (List) query.execute(new Object[] {endDate, startDate});
+ results = (List) query.execute(
+ new Object[] {endDate, startDate});
} else {
- query = strategy.newQuery(UserData.class, "UserData.getAll");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getAll");
if (setRange) query.setRange(offset, offset + length);
results = (List) query.execute();
}
@@ -666,7 +711,9 @@
return getUsers(Boolean.TRUE, null, null, offset, length);
}
- public List getUsers(Boolean enabled, Date startDate, Date endDate, int offset, int length) throws RollerException {
+ public List getUsers(Boolean enabled, Date startDate, Date endDate,
+ int offset, int length)
+ throws RollerException {
DatamapperQuery query = null;
List results = null;
boolean setRange = offset != 0 || length != -1;
@@ -678,22 +725,29 @@
}
if (enabled != null) {
- if (startDate != null) {
- query = strategy.newQuery(UserData.class, "UserData.getByEnabled&EndDate&StartDateOrderByStartDateDesc");
- if (setRange) query.setRange(offset, offset + length);
- results = (List) query.execute(new Object[] {enabled, endDate, startDate});
- } else {
- query = strategy.newQuery(UserData.class, "UserData.getByEnabled&EndDateOrderByStartDateDesc");
- if (setRange) query.setRange(offset, offset + length);
- results = (List) query.execute(new Object[] {enabled, endDate});
+ if (startDate != null) {
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByEnabled&EndDate&StartDateOrderByStartDateDesc");
+ if (setRange) query.setRange(offset, offset + length);
+ results = (List) query.execute(
+ new Object[] {enabled, endDate, startDate});
+ } else {
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByEnabled&EndDateOrderByStartDateDesc");
+ if (setRange) query.setRange(offset, offset + length);
+ results = (List) query.execute(
+ new Object[] {enabled, endDate});
}
} else {
if (startDate != null) {
- query = strategy.newQuery(UserData.class, "UserData.getByEndDate&StartDateOrderByStartDateDesc");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByEndDate&StartDateOrderByStartDateDesc");
if (setRange) query.setRange(offset, offset + length);
- results = (List) query.execute(new Object[] {endDate, startDate});
+ results = (List) query.execute(
+ new Object[] {endDate, startDate});
} else {
- query = strategy.newQuery(UserData.class, "UserData.getByEndDateOrderByStartDateDesc");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByEndDateOrderByStartDateDesc");
if (setRange) query.setRange(offset, offset + length);
results = (List) query.execute(endDate);
}
@@ -716,17 +770,20 @@
if (enabled != null) {
if (website != null) {
- query = strategy.newQuery(UserData.class, "UserData.getByEnabled&Permissions.website");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByEnabled&Permissions.website");
if (setRange) query.setRange(offset, offset + length);
results = (List) query.execute(new Object[] {enabled, website});
} else {
- query = strategy.newQuery(UserData.class, "UserData.getByEnabled");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByEnabled");
if (setRange) query.setRange(offset, offset + length);
results = (List) query.execute(enabled);
}
} else {
if (website != null) {
- query = strategy.newQuery(UserData.class, "UserData.getByPermissions.website");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByPermissions.website");
if (setRange) query.setRange(offset, offset + length);
results = (List) query.execute(website);
} else {
@@ -750,17 +807,21 @@
if (enabled != null) {
if (startsWith != null) {
- query = strategy.newQuery(UserData.class, "UserData.getByEnabled&UserNameOrEmailAddressStartsWith");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByEnabled&UserNameOrEmailAddressStartsWith");
if (setRange) query.setRange(offset, offset + length);
- results = (List) query.execute(new Object[] {enabled, startsWith});
+ results = (List) query.execute(
+ new Object[] {enabled, startsWith});
} else {
- query = strategy.newQuery(UserData.class, "UserData.getByEnabled");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByEnabled");
if (setRange) query.setRange(offset, offset + length);
results = (List) query.execute(enabled);
}
} else {
if (startsWith != null) {
- query = strategy.newQuery(UserData.class, "UserData.getByUserNameOrEmailAddressStartsWith");
+ query = strategy.newQuery(UserData.class,
+ "UserData.getByUserNameOrEmailAddressStartsWith");
if (setRange) query.setRange(offset, offset + length);
results = (List) query.execute(startsWith);
} else {
@@ -827,8 +888,10 @@
"WeblogTemplate.getByWebsiteOrderByName").execute(website);
}
- public PermissionsData getPermissions(String inviteId) throws RollerException {
- return (PermissionsData)this.strategy.load(PermissionsData.class, inviteId);
+ public PermissionsData getPermissions(String inviteId)
+ throws RollerException {
+ return (PermissionsData)this.strategy.load(
+ PermissionsData.class, inviteId);
}
/**
@@ -836,7 +899,8 @@
*/
public PermissionsData getPermissions(
WebsiteData website, UserData user) throws RollerException {
- List list = (List) strategy.newQuery(PermissionsData.class, "PermissionsData.getByWebsiteAndUser").
+ List list = (List) strategy.newQuery(PermissionsData.class,
+ "PermissionsData.getByWebsiteAndUser").
execute(new Object[] {website, user} );
return list.size()!=0 ? (PermissionsData)list.get(0) : null;
}
@@ -845,33 +909,36 @@
* Get pending permissions for user
*/
public List getPendingPermissions(UserData user) throws RollerException {
- return (List) strategy.newQuery(PermissionsData.class, "PermissionsData.getByUserAndPending").
- execute(new Object[] {user, Boolean.TRUE} );
+ return (List) strategy.newQuery(PermissionsData.class,
+ "PermissionsData.getByUserAndPending")
+ .execute(new Object[] {user, Boolean.TRUE} );
}
/**
* Get pending permissions for website
*/
public List getPendingPermissions(WebsiteData website) throws RollerException {
- return (List) strategy.newQuery(PermissionsData.class, "PermissionsData.getByWebsiteAndPending").
- execute(new Object[] {website, Boolean.TRUE} );
+ return (List) strategy.newQuery(PermissionsData.class,
+ "PermissionsData.getByWebsiteAndPending")
+ .execute(new Object[] {website, Boolean.TRUE} );
}
/**
* Get all permissions of a website (pendings not including)
*/
public List getAllPermissions(WebsiteData website) throws RollerException {
- return (List) strategy.newQuery(PermissionsData.class, "PermissionsData.getByWebsiteAndPending").
- execute(new Object[] {website, Boolean.FALSE} );
-
+ return (List) strategy.newQuery(PermissionsData.class,
+ "PermissionsData.getByWebsiteAndPending")
+ .execute(new Object[] {website, Boolean.FALSE} );
}
/**
* Get all permissions of a user.
*/
public List getAllPermissions(UserData user) throws RollerException {
- return (List) strategy.newQuery(PermissionsData.class, "PermissionsData.getByUserAndPending").
- execute(new Object[] {user, Boolean.FALSE} );
+ return (List) strategy.newQuery(PermissionsData.class,
+ "PermissionsData.getByUserAndPending")
+ .execute(new Object[] {user, Boolean.FALSE} );
}
@@ -881,7 +948,8 @@
// TODO: ATLAS getUserNameLetterMap DONE TESTED
String lc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Map results = new TreeMap();
- DatamapperQuery query = strategy.newQuery(UserData.class, "UserData.getCountByUserNameLike");
+ DatamapperQuery query = strategy.newQuery(UserData.class,
+ "UserData.getCountByUserNameLike");
for (int i=0; i<26; i++) {
char currentChar = lc.charAt(i);
List row = (List) query.execute(currentChar + "%");
@@ -894,7 +962,8 @@
public List getUsersByLetter(char letter, int offset, int length)
throws RollerException {
// TODO: ATLAS getUsersByLetter DONE
- DatamapperQuery query = strategy.newQuery(UserData.class, "UserData.getByUserNameOrderByUserName");
+ DatamapperQuery query = strategy.newQuery(UserData.class,
+ "UserData.getByUserNameOrderByUserName");
query.setRange(offset, offset + length);
return (List) query.execute(letter + "%");
}
@@ -902,7 +971,8 @@
public Map getWeblogHandleLetterMap() throws RollerException {
String lc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Map results = new TreeMap();
- DatamapperQuery query = strategy.newQuery(WebsiteData.class, "WebsiteData.getCountByHandleLike");
+ DatamapperQuery query = strategy.newQuery(WebsiteData.class,
+ "WebsiteData.getCountByHandleLike");
for (int i=0; i<26; i++) {
char currentChar = lc.charAt(i);
List row = (List) query.execute(currentChar + "%");
@@ -915,7 +985,8 @@
public List getWeblogsByLetter(char letter, int offset, int length)
throws RollerException {
// TODO: ATLAS getWeblogsByLetter DONE
- DatamapperQuery query = strategy.newQuery(WebsiteData.class, "WebsiteData.getByHandleOrderByHandle");
+ DatamapperQuery query = strategy.newQuery(WebsiteData.class,
+ "WebsiteData.getByHandleOrderByHandle");
if (offset != 0 || length != -1) {
if (length == -1) {
length = Integer.MAX_VALUE - offset;
@@ -925,7 +996,8 @@
return (List) query.execute(letter + "%");
}
- public List getMostCommentedWebsites(Date startDate, Date endDate, int offset, int length)
+ public List getMostCommentedWebsites(Date startDate, Date endDate,
+ int offset, int length)
throws RollerException {
// TODO: ATLAS getMostCommentedWebsites DONE TESTED
@@ -940,11 +1012,14 @@
if (endDate == null) endDate = new Date();
if (startDate != null) {
- query = strategy.newQuery(CommentData.class, "CommentData.getMostCommentedWebsiteByEndDate&StartDate");
+ query = strategy.newQuery(CommentData.class,
+ "CommentData.getMostCommentedWebsiteByEndDate&StartDate");
if (setRange) query.setRange(offset, offset + length);
- queryResults = (List) query.execute(new Object[] {endDate, startDate});
+ queryResults = (List) query.execute(
+ new Object[] {endDate, startDate});
} else {
- query = strategy.newQuery(CommentData.class, "CommentData.getMostCommentedWebsiteByEndDate");
+ query = strategy.newQuery(CommentData.class,
+ "CommentData.getMostCommentedWebsiteByEndDate");
if (setRange) query.setRange(offset, offset + length);
queryResults = (List) query.execute(endDate);
}
@@ -965,7 +1040,8 @@
"statCount.weblogCommentCountType",
new Long(((Integer)row[0]).intValue()).longValue()));
}
- // TODO Collections.sort(results, StatCount.getComparator());
+ //TODO Uncomment following once integrated with code
+ //Collections.sort(results, StatCount.getComparator());
Collections.reverse(results);
return results;
}
@@ -975,7 +1051,8 @@
*/
public long getWeblogCount() throws RollerException {
long ret = 0;
- List results = (List) strategy.newQuery(WebsiteData.class, "WebsiteData.getCountAllDistinct").execute();
+ List results = (List) strategy.newQuery(WebsiteData.class,
+ "WebsiteData.getCountAllDistinct").execute();
ret = ((Integer)results.get(0)).intValue();
@@ -988,7 +1065,8 @@
*/
public long getUserCount() throws RollerException {
long ret = 0;
- List results = (List) strategy.newQuery(UserData.class, "UserData.getCountEnabledDistinct").execute(Boolean.TRUE);
+ List results = (List) strategy.newQuery(UserData.class,
+ "UserData.getCountEnabledDistinct").execute(Boolean.TRUE);
ret =((Integer)results.get(0)).intValue();
Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperWeblogManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperWeblogManagerImpl.java?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperWeblogManagerImpl.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/DatamapperWeblogManagerImpl.java Wed Dec 6 09:54:36 2006
@@ -18,6 +18,17 @@
*/
package org.apache.roller.business.datamapper;
+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.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
import org.apache.commons.collections.comparators.ReverseComparator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -39,17 +50,6 @@
import org.apache.roller.util.DateUtil;
import org.apache.roller.util.Utilities;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.Collections;
-
/*
* DatamapperWeblogManagerImpl.java
*
@@ -58,7 +58,8 @@
*/
public class DatamapperWeblogManagerImpl implements WeblogManager {
- private static Log log = LogFactory.getLog(DatamapperWeblogManagerImpl.class);
+ private static Log log = LogFactory.getLog(
+ DatamapperWeblogManagerImpl.class);
private DatamapperPersistenceStrategy strategy;
@@ -89,7 +90,8 @@
this.strategy.store(cat);
}
- public void moveWeblogCategory(WeblogCategoryData srcCat, WeblogCategoryData destCat)
+ public void moveWeblogCategory(WeblogCategoryData srcCat,
+ WeblogCategoryData destCat)
throws RollerException {
// TODO: this check should be made before calling this method?
@@ -98,7 +100,8 @@
"ERROR cannot move parent category into it's own child");
}
- log.debug("Moving category "+srcCat.getPath()+" under "+destCat.getPath());
+ log.debug("Moving category "+srcCat.getPath() +
+ " under "+destCat.getPath());
srcCat.setParent(destCat);
if("/".equals(destCat.getPath())) {
@@ -115,7 +118,8 @@
// updates the paths of all descendents of the given category
- private void updatePathTree(WeblogCategoryData cat) throws RollerException {
+ private void updatePathTree(WeblogCategoryData cat)
+ throws RollerException {
log.debug("Updating path tree for category "+cat.getPath());
@@ -155,25 +159,29 @@
// update website default cats if needed
if(cat.getWebsite().getBloggerCategory().equals(cat)) {
- WeblogCategoryData rootCat = this.getRootWeblogCategory(cat.getWebsite());
+ WeblogCategoryData rootCat = this.getRootWeblogCategory(
+ cat.getWebsite());
cat.getWebsite().setBloggerCategory(rootCat);
this.strategy.store(cat.getWebsite());
}
if(cat.getWebsite().getDefaultCategory().equals(cat)) {
- WeblogCategoryData rootCat = this.getRootWeblogCategory(cat.getWebsite());
+ WeblogCategoryData rootCat = this.getRootWeblogCategory(
+ cat.getWebsite());
cat.getWebsite().setDefaultCategory(rootCat);
this.strategy.store(cat.getWebsite());
}
// update weblog last modified date. date updated by saveWebsite()
- RollerFactory.getRoller().getUserManager().saveWebsite(cat.getWebsite());
+ RollerFactory.getRoller().getUserManager().saveWebsite(
+ cat.getWebsite());
}
/**
* Recategorize all entries with one category to another.
*/
- public void moveWeblogCategoryContents(WeblogCategoryData srcCat, WeblogCategoryData destCat)
+ public void moveWeblogCategoryContents(WeblogCategoryData srcCat,
+ WeblogCategoryData destCat)
throws RollerException {
// TODO: this check should be made before calling this method?
@@ -198,13 +206,15 @@
// Make sure website's default and bloggerapi categories
// are valid after the move
- if (srcCat.getWebsite().getDefaultCategory().getId().equals(srcCat.getId())
+ if (srcCat.getWebsite().getDefaultCategory().getId()
+ .equals(srcCat.getId())
|| srcCat.getWebsite().getDefaultCategory().descendentOf(srcCat)) {
srcCat.getWebsite().setDefaultCategory(destCat);
this.strategy.store(srcCat.getWebsite());
}
- if (srcCat.getWebsite().getBloggerCategory().getId().equals(srcCat.getId())
+ if (srcCat.getWebsite().getBloggerCategory().getId()
+ .equals(srcCat.getId())
|| srcCat.getWebsite().getBloggerCategory().descendentOf(srcCat)) {
srcCat.getWebsite().setBloggerCategory(destCat);
this.strategy.store(srcCat.getWebsite());
@@ -218,7 +228,8 @@
this.strategy.store(comment);
// update weblog last modified date. date updated by saveWebsite()
- RollerFactory.getRoller().getUserManager().saveWebsite(comment.getWeblogEntry().getWebsite());
+ RollerFactory.getRoller().getUserManager()
+ .saveWebsite(comment.getWeblogEntry().getWebsite());
}
/**
@@ -228,7 +239,8 @@
this.strategy.remove(comment);
// update weblog last modified date. date updated by saveWebsite()
- RollerFactory.getRoller().getUserManager().saveWebsite(comment.getWeblogEntry().getWebsite());
+ RollerFactory.getRoller().getUserManager()
+ .saveWebsite(comment.getWeblogEntry().getWebsite());
}
/**
@@ -254,12 +266,14 @@
// update weblog last modified date. date updated by saveWebsite()
if(entry.isPublished()) {
- RollerFactory.getRoller().getUserManager().saveWebsite(entry.getWebsite());
+ RollerFactory.getRoller().getUserManager()
+ .saveWebsite(entry.getWebsite());
}
if(entry.isPublished()) {
// Queue applicable pings for this update.
- RollerFactory.getRoller().getAutopingManager().queueApplicableAutoPings(entry);
+ RollerFactory.getRoller().getAutopingManager()
+ .queueApplicableAutoPings(entry);
}
}
@@ -268,7 +282,8 @@
*/
public void removeWeblogEntry(WeblogEntryData entry)
throws RollerException {
- List referers = (List) strategy.newQuery(RefererData.class, "RefererData.getByWeblogEntry").execute(entry);
+ List referers = (List) strategy.newQuery(RefererData.class,
+ "RefererData.getByWeblogEntry").execute(entry);
for (Iterator iter = referers.iterator(); iter.hasNext();) {
RefererData referer = (RefererData) iter.next();
this.strategy.remove(referer);
@@ -305,7 +320,8 @@
// update weblog last modified date. date updated by saveWebsite()
if(entry.isPublished()) {
- RollerFactory.getRoller().getUserManager().saveWebsite(entry.getWebsite());
+ RollerFactory.getRoller().getUserManager()
+ .saveWebsite(entry.getWebsite());
}
// TODO: remove entry from cache mapping
@@ -319,7 +335,8 @@
WeblogCategoryData category = null;
if (catName != null && !catName.trim().equals("/")) {
- category = getWeblogCategoryByPath(current.getWebsite(), null, catName);
+ category = getWeblogCategoryByPath(current.getWebsite(), null,
+ catName);
}
if (category != null) {
@@ -328,25 +345,37 @@
query = strategy.newQuery(WeblogEntryData.class,
"WeblogEntryData.getByWebsite&Status&PubTimeGreater&Category&LocaleLikeOrderByPubTimeAsc");
if (maxEntries > -1) query.setRange(0, maxEntries);
- results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime(), category, locale});
+ results = (List) query.execute(
+ new Object[] {current.getWebsite(),
+ WeblogEntryData.PUBLISHED,
+ current.getPubTime(), category, locale});
} else {
query = strategy.newQuery(WeblogEntryData.class,
"WeblogEntryData.getByWebsite&Status&PubTimeLess&Category&LocaleLikeOrderByPubTimeDesc");
if (maxEntries > -1) query.setRange(0, maxEntries);
- results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime(), category, locale});
+ results = (List) query.execute(
+ new Object[] {current.getWebsite(),
+ WeblogEntryData.PUBLISHED, current.getPubTime(),
+ category, locale});
}
} else {
if (next) {
results = (List) strategy.newQuery(WeblogEntryData.class,
"WeblogEntryData.getByWebsite&Status&PubTimeGreater&CategoryOrderByPubTimeAsc");
if (maxEntries > -1) query.setRange(0, maxEntries);
- results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime(), category});
+ results = (List) query.execute(
+ new Object[] {current.getWebsite(),
+ WeblogEntryData.PUBLISHED, current.getPubTime(),
+ category});
} else {
results = (List) strategy.newQuery(WeblogEntryData.class,
"WeblogEntryData.getByWebsite&Status&PubTimeLess&CategoryOrderByPubTimeDesc");
if (maxEntries > -1) query.setRange(0, maxEntries);
- results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime(), category});
+ results = (List) query.execute(
+ new Object[] {current.getWebsite(),
+ WeblogEntryData.PUBLISHED, current.getPubTime(),
+ category});
}
}
} else {
@@ -355,25 +384,35 @@
query = strategy.newQuery(WeblogEntryData.class,
"WeblogEntryData.getByWebsite&Status&PubTimeGreater&LocaleLikeOrderByPubTimeAsc");
if (maxEntries > -1) query.setRange(0, maxEntries);
- results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime(), locale});
+ results = (List) query.execute(
+ new Object[] {current.getWebsite(),
+ WeblogEntryData.PUBLISHED, current.getPubTime(),
+ locale});
} else {
query = strategy.newQuery(WeblogEntryData.class,
"WeblogEntryData.getByWebsite&Status&PubTimeLess&LocaleLikeOrderByPubTimeDesc");
if (maxEntries > -1) query.setRange(0, maxEntries);
- results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime(), locale});
+ results = (List) query.execute(
+ new Object[] {current.getWebsite(),
+ WeblogEntryData.PUBLISHED, current.getPubTime(),
+ locale});
}
} else {
if (next) {
results = (List) strategy.newQuery(WeblogEntryData.class,
"WeblogEntryData.getByWebsite&Status&PubTimeGreater&OrderByPubTimeAsc");
if (maxEntries > -1) query.setRange(0, maxEntries);
- results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime()});
+ results = (List) query.execute(
+ new Object[] {current.getWebsite(),
+ WeblogEntryData.PUBLISHED, current.getPubTime()});
} else {
results = (List) strategy.newQuery(WeblogEntryData.class,
"WeblogEntryData.getByWebsite&Status&PubTimeLessOrderByPubTimeDesc");
if (maxEntries > -1) query.setRange(0, maxEntries);
- results = (List) query.execute(new Object[] {current.getWebsite(), WeblogEntryData.PUBLISHED, current.getPubTime()});
+ results = (List) query.execute(
+ new Object[] {current.getWebsite(),
+ WeblogEntryData.PUBLISHED, current.getPubTime()});
}
}
}
@@ -390,7 +429,8 @@
throw new RollerException("website is null");
return (WeblogCategoryData) strategy.newQuery(WeblogCategoryData.class,
- "WeblogCategoryData.getByWebsite&ParentNull").setUnique().execute(website);
+ "WeblogCategoryData.getByWebsite&ParentNull")
+ .setUnique().execute(website);
}
/**
@@ -467,7 +507,8 @@
// TODO Impl entryAnchorToIdMap CACHE
- return (WeblogEntryData)strategy.newQuery(WeblogEntryData.class, "getByAnchor")
+ return (WeblogEntryData)strategy.newQuery(WeblogEntryData.class,
+ "getByAnchor")
.execute(anchor);
}
@@ -488,19 +529,26 @@
List list = null;
if (website != null) {
if (cat != null) {
- list = (List) strategy.newQuery(WeblogEntryData.class,
- "WeblogEntryData.getByStatus&PubTimeLessEqual&Category&WebsiteOrderByPubTimeDesc").setRange(0, 1)
- .execute(new Object[] {WeblogEntryData.PUBLISHED, new Date(), cat, website});
+ list = (List) strategy.newQuery(WeblogEntryData.class,
+ "WeblogEntryData.getByStatus&PubTimeLessEqual&Category&WebsiteOrderByPubTimeDesc")
+ .setRange(0, 1)
+ .execute(
+ new Object[] {WeblogEntryData.PUBLISHED, new Date(),
+ cat, website});
} else {
list = (List) strategy.newQuery(WeblogEntryData.class,
- "WeblogEntryData.getByStatus&PubTimeLessEqual&WebsiteOrderByPubTimeDesc").setRange(0, 1)
- .execute(new Object[] {WeblogEntryData.PUBLISHED, new Date(), website});
+ "WeblogEntryData.getByStatus&PubTimeLessEqual&WebsiteOrderByPubTimeDesc")
+ .setRange(0, 1)
+ .execute(
+ new Object[] {WeblogEntryData.PUBLISHED, new Date(),
+ website});
}
} else {
// cat must also be null
list = (List) strategy.newQuery(WeblogEntryData.class,
- "WeblogEntryData.getByStatus&PubTimeLessEqualOrderByPubTimeDesc").setRange(0, 1)
- .execute(new Object[] {WeblogEntryData.PUBLISHED, new Date()});
+ "WeblogEntryData.getByStatus&PubTimeLessEqualOrderByPubTimeDesc")
+ .setRange(0, 1)
+ .execute(new Object[] {WeblogEntryData.PUBLISHED, new Date()});
}
if (list.size() > 0) {
return ((WeblogEntryData)list.get(0)).getPubTime();
@@ -522,10 +570,13 @@
List results = null;
if (!subcats) {
- results = (List) strategy.newQuery(WeblogEntryData.class, "WeblogEntryData.getByCategory").execute(cat);
+ results = (List) strategy.newQuery(WeblogEntryData.class,
+ "WeblogEntryData.getByCategory")
+ .execute(cat);
} else {
results = (List) strategy.newQuery(WeblogEntryData.class,
- "WeblogEntryData.getByCategory.pathLike&Website").execute(new Object[] {cat, cat.getPath(), cat.getWebsite()});
+ "WeblogEntryData.getByCategory.pathLike&Website")
+ .execute(new Object[] {cat, cat.getPath(), cat.getWebsite()});
}
return results;
@@ -546,7 +597,8 @@
}
List results = (List) strategy.newQuery(WeblogEntryData.class,
- "WeblogEntryData.getByWeblogEntry&Anchor").execute(new Object[] {entry, name});
+ "WeblogEntryData.getByWeblogEntry&Anchor")
+ .execute(new Object[] {entry, name});
if (results.size() < 1) {
break;
@@ -566,7 +618,8 @@
// ensure that no sibling categories share the same name
WeblogCategoryData parent = cat.getParent();
if (null != parent) {
- return (getWeblogCategoryByPath(cat.getWebsite(), cat.getPath()) != null);
+ return (getWeblogCategoryByPath(
+ cat.getWebsite(), cat.getPath()) != null);
}
return false;
@@ -577,7 +630,8 @@
*/
public boolean isWeblogCategoryInUse(WeblogCategoryData cat)
throws RollerException {
- int entryCount = ((List) strategy.newQuery(WeblogEntryData.class, "").execute(cat)).size();
+ int entryCount = ((List) strategy.newQuery(
+ WeblogEntryData.class, "").execute(cat)).size();
if (entryCount > 0) {
return true;
@@ -700,7 +754,8 @@
if (path.trim().equals("/")) {
return getRootWeblogCategory(website);
} else if (category == null || path.trim().startsWith("/")) {
- cats = getRootWeblogCategory(website).getWeblogCategories().iterator();
+ cats = getRootWeblogCategory(website)
+ .getWeblogCategories().iterator();
} else {
cats = category.getWeblogCategories().iterator();
}
@@ -761,9 +816,10 @@
* @throws org.apache.roller.RollerException
*/
public Map getWeblogEntryObjectMap(WebsiteData website,
- Date startDate, Date endDate, String catName, List tags,
- String status, String locale, int offset,
- int range) throws RollerException {
+ Date startDate, Date endDate, String catName, List tags,
+ String status, String locale, int offset,
+ int range)
+ throws RollerException {
return getWeblogEntryMap(
website,
startDate,
@@ -883,21 +939,28 @@
if (website != null) {
if (startDate != null) {
- query = strategy.newQuery(CommentData.class, "CommentData.getMostCommentedWeblogEntryByWebsite&EndDate&StartDate");
+ query = strategy.newQuery(CommentData.class,
+ "CommentData.getMostCommentedWeblogEntryByWebsite&EndDate&StartDate");
if (setRange) query.setRange(offset, offset + length);
- queryResults = (List) query.execute(new Object[] {website, endDate, startDate});
+ queryResults = (List) query.execute(
+ new Object[] {website, endDate, startDate});
} else {
- query = strategy.newQuery(CommentData.class, "CommentData.getMostCommentedWeblogEntryByWebsite&EndDate");
+ query = strategy.newQuery(CommentData.class,
+ "CommentData.getMostCommentedWeblogEntryByWebsite&EndDate");
if (setRange) query.setRange(offset, offset + length);
- queryResults = (List) query.execute(new Object[] {website, endDate});
+ queryResults = (List) query.execute(
+ new Object[] {website, endDate});
}
} else {
if (startDate != null) {
- query = strategy.newQuery(CommentData.class, "CommentData.getMostCommentedWeblogEntryByEndDate&StartDate");
+ query = strategy.newQuery(CommentData.class,
+ "CommentData.getMostCommentedWeblogEntryByEndDate&StartDate");
if (setRange) query.setRange(offset, offset + length);
- queryResults = (List) query.execute(new Object[] {endDate, startDate});
+ queryResults = (List) query.execute(
+ new Object[] {endDate, startDate});
} else {
- query = strategy.newQuery(CommentData.class, "CommentData.getMostCommentedWeblogEntryByEndDate");
+ query = strategy.newQuery(CommentData.class,
+ "CommentData.getMostCommentedWeblogEntryByEndDate");
if (setRange) query.setRange(offset, offset + length);
queryResults = (List) query.execute(endDate);
}
@@ -913,7 +976,8 @@
"statCount.weblogEntryCommentCountType",
new Long(((Integer)row[0]).intValue()).longValue()));
}
- // TODO Collections.sort(results, StatCount.getComparator());
+ //TODO Uncomment following once integrated with code
+ //Collections.sort(results, StatCount.getComparator());
Collections.reverse(results);
return results;
}
@@ -1009,21 +1073,26 @@
if (website != null) {
if (startDate != null) {
- query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getPopularTagsByWebsite&StartDate");
+ query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+ "WeblogEntryTagAggregateData.getPopularTagsByWebsite&StartDate");
if (limit > 0) query.setRange(0, limit);
- queryResults = (List) query.execute(new Object[] {website, startDate});
+ queryResults = (List) query.execute(
+ new Object[] {website, startDate});
} else {
- query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getPopularTagsByWebsite");
+ query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+ "WeblogEntryTagAggregateData.getPopularTagsByWebsite");
if (limit > 0) query.setRange(0, limit);
queryResults = (List) query.execute(startDate);
}
} else {
if (startDate != null) {
- query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getPopularTagsByWebsiteNull&StartDate");
+ query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+ "WeblogEntryTagAggregateData.getPopularTagsByWebsiteNull&StartDate");
if (limit > 0) query.setRange(0, limit);
queryResults = (List) query.execute(startDate);
} else {
- query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getPopularTagsByWebsiteNull");
+ query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+ "WeblogEntryTagAggregateData.getPopularTagsByWebsiteNull");
if (limit > 0) query.setRange(0, limit);
queryResults = (List) query.execute();
}
@@ -1069,7 +1138,8 @@
* @see org.apache.roller.business.WeblogManager#getTags(org.apache.roller.pojos.WebsiteData,
* java.lang.String, java.lang.String, int)
*/
- public List getTags(WebsiteData website, String sortBy, String startsWith, int limit) throws RollerException {
+ public List getTags(WebsiteData website, String sortBy,
+ String startsWith, int limit) throws RollerException {
DatamapperQuery query = null;
List queryResults = null;
boolean sortByName = sortBy == null || !sortBy.equals("count");
@@ -1077,21 +1147,27 @@
if (website != null) {
if (startsWith != null) {
if (sortByName) {
- query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsite&NameStartsWithOrderByName");
+ query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+ "WeblogEntryTagAggregateData.getTagsByWebsite&NameStartsWithOrderByName");
if (limit > 0) query.setRange(0, limit);
- queryResults = (List) query.execute(new Object[] {website, startsWith});
+ queryResults = (List) query.execute(
+ new Object[] {website, startsWith});
} else {
- query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsite&NameStartsWith");
+ query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+ "WeblogEntryTagAggregateData.getTagsByWebsite&NameStartsWith");
if (limit > 0) query.setRange(0, limit);
- queryResults = (List) query.execute(new Object[] {website, startsWith});
+ queryResults = (List) query.execute(
+ new Object[] {website, startsWith});
}
} else {
if (sortByName) {
- query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsiteOrderByName");
+ query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+ "WeblogEntryTagAggregateData.getTagsByWebsiteOrderByName");
if (limit > 0) query.setRange(0, limit);
queryResults = (List) query.execute(startsWith);
} else {
- query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsite");
+ query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+ "WeblogEntryTagAggregateData.getTagsByWebsite");
if (limit > 0) query.setRange(0, limit);
queryResults = (List) query.execute(startsWith);
}
@@ -1099,21 +1175,25 @@
} else {
if (startsWith != null) {
if (sortByName) {
- query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsiteNull&NameStartsWithOrderByName");
+ query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+ "WeblogEntryTagAggregateData.getTagsByWebsiteNull&NameStartsWithOrderByName");
if (limit > 0) query.setRange(0, limit);
queryResults = (List) query.execute(startsWith);
} else {
- query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsiteNull&NameStartsWith");
+ query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+ "WeblogEntryTagAggregateData.getTagsByWebsiteNull&NameStartsWith");
if (limit > 0) query.setRange(0, limit);
queryResults = (List) query.execute(startsWith);
}
} else {
if (sortByName) {
- query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsiteNullOrderByName");
+ query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+ "WeblogEntryTagAggregateData.getTagsByWebsiteNullOrderByName");
if (limit > 0) query.setRange(0, limit);
queryResults = (List) query.execute();
} else {
- query = strategy.newQuery(WeblogEntryTagAggregateData.class, "WeblogEntryTagAggregateData.getTagsByWebsiteNull");
+ query = strategy.newQuery(WeblogEntryTagAggregateData.class,
+ "WeblogEntryTagAggregateData.getTagsByWebsiteNull");
if (limit > 0) query.setRange(0, limit);
queryResults = (List) query.execute();
}
@@ -1159,7 +1239,8 @@
return comboExists; // TODO not implemented
}
- public void updateTagCount(String name, WebsiteData website, int amount) throws RollerException {
+ public void updateTagCount(String name, WebsiteData website, int amount)
+ throws RollerException {
if(amount == 0) {
throw new RollerException("Tag increment amount cannot be zero.");
}
@@ -1282,8 +1363,10 @@
throw new RollerException("Weblog cannot be NULL.");
}
- HitCountData hitCount = (HitCountData) strategy.newQuery(HitCountData.class,
- "HitCountData.getByWeblog").setUnique().execute(weblog);
+ HitCountData hitCount = (HitCountData) strategy.newQuery(
+ HitCountData.class,
+ "HitCountData.getByWeblog")
+ .setUnique().execute(weblog);
// create it if it doesn't exist
if(hitCount == null && amount > 0) {
@@ -1319,7 +1402,8 @@
* Get site-wide comment count
*/
public long getCommentCount() throws RollerException {
- List results = (List) strategy.newQuery(CommentData.class, "CommentData.getCountAllDistinct").execute();
+ List results = (List) strategy.newQuery(CommentData.class,
+ "CommentData.getCountAllDistinct").execute();
return ((Integer)results.get(0)).intValue();
}
@@ -1330,7 +1414,7 @@
*/
public long getCommentCount(WebsiteData website) throws RollerException {
List results = (List) strategy.newQuery(CommentData.class,
- "CommentData.getCountDistinctByWebsite").execute(website);
+ "CommentData.getCountDistinctByWebsite").execute(website);
return ((Integer)results.get(0)).intValue();
}
@@ -1341,7 +1425,8 @@
*/
public long getEntryCount() throws RollerException {
List results = (List) strategy.newQuery(WeblogEntryData.class,
- "WeblogEntryData.getCountDistinctByStatus").execute("PUBLISHED");
+ "WeblogEntryData.getCountDistinctByStatus")
+ .execute("PUBLISHED");
return ((Integer)results.get(0)).intValue();
}
@@ -1352,7 +1437,8 @@
*/
public long getEntryCount(WebsiteData website) throws RollerException {
List results = (List) strategy.newQuery(WeblogEntryData.class,
- "WeblogEntryData.getCountDistinctByStatus&Website").execute(new Object[] {"PUBLISHED", website});
+ "WeblogEntryData.getCountDistinctByStatus&Website")
+ .execute(new Object[] {"PUBLISHED", website});
return ((Integer)results.get(0)).intValue();
}
Added: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAUserManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAUserManagerImpl.java?view=auto&rev=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAUserManagerImpl.java (added)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAUserManagerImpl.java Wed Dec 6 09:54:36 2006
@@ -0,0 +1,52 @@
+/*
+ * 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.business.datamapper;
+
+import org.apache.roller.pojos.TagStat;
+import org.apache.roller.business.jpa.JPAPersistenceStrategy;
+import org.apache.roller.business.jpa.JPAUpdateQuery;
+import org.apache.roller.RollerException;
+
+import java.util.List;
+import java.util.Iterator;
+
+/**
+ * @author Mitesh Meswani
+ */
+public class JPAUserManagerImpl extends DatamapperUserManagerImpl {
+
+ private JPAPersistenceStrategy strategy;
+
+ public JPAUserManagerImpl(JPAPersistenceStrategy strat) {
+ super(strat);
+ this.strategy = strat;
+ }
+
+ protected void updateTagAggregates(List tags) throws RollerException {
+ for(Iterator iter = tags.iterator(); iter.hasNext();) {
+ TagStat stat = (TagStat) iter.next();
+ JPAUpdateQuery query = strategy.newUpdateQuery(
+ "WeblogEntryTagAggregateData.updateTotalByName&WeblogNull");
+ query.updateAll(
+ new Object[] {Integer.valueOf(stat.getCount()),
+ stat.getName() });
+ }
+ }
+}
Added: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAWeblogManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAWeblogManagerImpl.java?view=auto&rev=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAWeblogManagerImpl.java (added)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/datamapper/JPAWeblogManagerImpl.java Wed Dec 6 09:54:36 2006
@@ -0,0 +1,36 @@
+/*
+ * 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.business.datamapper;
+
+import org.apache.roller.business.jpa.JPAPersistenceStrategy;
+
+
+/**
+ * @author Mitesh Meswani
+ */
+public class JPAWeblogManagerImpl extends DatamapperWeblogManagerImpl{
+
+ private JPAPersistenceStrategy strategy;
+
+ public JPAWeblogManagerImpl(JPAPersistenceStrategy strat) {
+ super(strat);
+ this.strategy = strat;
+ }
+}
Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jdo/JDORollerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jdo/JDORollerImpl.java?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jdo/JDORollerImpl.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jdo/JDORollerImpl.java Wed Dec 6 09:54:36 2006
@@ -22,8 +22,10 @@
import org.apache.commons.logging.LogFactory;
import org.apache.roller.RollerException;
import org.apache.roller.business.datamapper.DatamapperRollerImpl;
+import org.apache.roller.business.datamapper.DatamapperPersistenceStrategy;
import org.apache.roller.business.Roller;
-
+import org.apache.roller.business.UserManager;
+import org.apache.roller.business.WeblogManager;
/**
* Implements Roller, the entry point interface for the Roller business tier
@@ -46,7 +48,16 @@
strategy = new JDOPersistenceStrategy();
}
-
+ protected UserManager createDatamapperUserManager(
+ DatamapperPersistenceStrategy strategy) {
+ return null;
+ }
+
+ protected WeblogManager createDatamapperWeblogManager(
+ DatamapperPersistenceStrategy strategy) {
+ return null;
+ }
+
/**
* Construct and return the singleton instance of the class.
* @throws org.apache.roller.RollerException on any error
Added: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPADynamicQueryImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPADynamicQueryImpl.java?view=auto&rev=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPADynamicQueryImpl.java (added)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPADynamicQueryImpl.java Wed Dec 6 09:54:36 2006
@@ -0,0 +1,46 @@
+/*
+ * 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.business.jpa;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+/**
+ *
+ */
+public class JPADynamicQueryImpl extends JPAQueryImpl {
+
+ String queryString;
+
+ /**
+ * Creates a new instance of JPADynamicQueryImpl
+ */
+ public JPADynamicQueryImpl(EntityManager em, String queryString) {
+ super(em);
+ this.queryString = queryString;
+ }
+
+ /**
+ * Create a Query for this instance
+ */
+ protected Query createQuery() {
+ return em.createQuery(queryString);
+ }
+}
Added: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPANamedQueryImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPANamedQueryImpl.java?view=auto&rev=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPANamedQueryImpl.java (added)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPANamedQueryImpl.java Wed Dec 6 09:54:36 2006
@@ -0,0 +1,46 @@
+/*
+ * 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.business.jpa;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+/**
+ *
+ */
+public class JPANamedQueryImpl extends JPAQueryImpl {
+
+ String queryName;
+
+ /**
+ * Creates a new instance of JPANamedQueryImpl
+ */
+ public JPANamedQueryImpl(EntityManager em, String queryName) {
+ super(em);
+ this.queryName = queryName;
+ }
+
+ /**
+ * Create a Query for this instance
+ */
+ protected Query createQuery() {
+ return em.createNamedQuery(queryName);
+ }
+}
Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAPersistenceStrategy.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAPersistenceStrategy.java?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAPersistenceStrategy.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAPersistenceStrategy.java Wed Dec 6 09:54:36 2006
@@ -231,7 +231,7 @@
public DatamapperQuery newQuery(Class clazz, String queryName)
throws RollerException {
EntityManager em = getEntityManager(false);
- return new JPAQueryImpl(em, clazz, queryName);
+ return new JPANamedQueryImpl(em, queryName);
}
/**
@@ -245,6 +245,29 @@
EntityManager em = getEntityManager(false);
return new JPARemoveQueryImpl(em, clazz, queryName);
}
+
+ /**
+ * Create query used for bulk update operations.
+ * @param queryName the name of the query
+ * @throws org.apache.roller.RollerException on any error
+ */
+ public JPAUpdateQuery newUpdateQuery(String queryName)
+ throws RollerException {
+ EntityManager em = getEntityManager(false);
+ return new JPAUpdateQuery(em, queryName);
+ }
+
+ /**
+ * Create query from queryString
+ * @param queryString the quuery
+ * @throws org.apache.roller.RollerException on any error
+ */
+ public DatamapperQuery newDynamicQuery(String queryString)
+ throws RollerException {
+ EntityManager em = getEntityManager(false);
+ return new JPADynamicQueryImpl(em, queryString);
+ }
+
/**
* Loads properties from given resourceName using given class loader
Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAQueryImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAQueryImpl.java?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAQueryImpl.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAQueryImpl.java Wed Dec 6 09:54:36 2006
@@ -27,7 +27,7 @@
/**
*
*/
-public class JPAQueryImpl implements DatamapperQuery {
+public abstract class JPAQueryImpl implements DatamapperQuery {
/** */
protected EntityManager em;
@@ -40,10 +40,13 @@
/**
* Creates a new instance of JPAQueryImpl
*/
- public JPAQueryImpl(EntityManager em, Class clazz, String queryName) {
+ public JPAQueryImpl(EntityManager em) {
this.em = em;
- q = em.createNamedQuery(queryName);
+ q = createQuery();
}
+
+ /** Create a Query for this instance*/
+ protected abstract Query createQuery();
public Object execute() {
return executeQuery();
Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPARollerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPARollerImpl.java?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPARollerImpl.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPARollerImpl.java Wed Dec 6 09:54:36 2006
@@ -22,8 +22,11 @@
import org.apache.commons.logging.LogFactory;
import org.apache.roller.RollerException;
import org.apache.roller.business.datamapper.DatamapperRollerImpl;
+import org.apache.roller.business.datamapper.DatamapperPersistenceStrategy;
+import org.apache.roller.business.datamapper.JPAUserManagerImpl;
import org.apache.roller.business.Roller;
-
+import org.apache.roller.business.UserManager;
+import org.apache.roller.business.WeblogManager;
/**
* Implements Roller, the entry point interface for the Roller business tier
@@ -46,7 +49,15 @@
strategy = new JPAPersistenceStrategy();
}
-
+ protected UserManager createDatamapperUserManager(DatamapperPersistenceStrategy strategy) {
+ return new JPAUserManagerImpl((JPAPersistenceStrategy) strategy);
+ }
+
+ protected WeblogManager createDatamapperWeblogManager(
+ DatamapperPersistenceStrategy strategy) {
+ return null;
+ }
+
/**
* Construct and return the singleton instance of the class.
* @throws org.apache.roller.RollerException on any error
Added: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAUpdateQuery.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAUpdateQuery.java?view=auto&rev=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAUpdateQuery.java (added)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/business/jpa/JPAUpdateQuery.java Wed Dec 6 09:54:36 2006
@@ -0,0 +1,59 @@
+/*
+ * 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.business.jpa;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+/**
+ * @author Mitesh Meswani
+ */
+public class JPAUpdateQuery {
+
+ protected EntityManager em;
+
+ protected Query q;
+
+ /**
+ * Creates a new instance of JPAQueryImpl
+ */
+ public JPAUpdateQuery(EntityManager em, String queryName) {
+ this.em = em;
+ q = em.createNamedQuery(queryName);
+ }
+
+ public int updateAll() {
+ return q.executeUpdate();
+ }
+
+ public int updateAll(Object param) {
+ q.setParameter(1, param);
+ return q.executeUpdate();
+ }
+
+ public int updateAll(Object[] params) {
+ for (int i = 0; i < params.length ; i++) {
+ q.setParameter(i + 1, params[i]);
+ }
+ return q.executeUpdate();
+ }
+
+
+}
Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/PingTargetData.orm.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/PingTargetData.orm.xml?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/PingTargetData.orm.xml (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/PingTargetData.orm.xml Wed Dec 6 09:54:36 2006
@@ -18,12 +18,6 @@
<named-query name="PingTargetData.getByWebsiteOrderByName">
<query>SELECT p FROM PingTargetData p WHERE p.website = ?1 ORDER BY p.name</query>
</named-query>
- <named-query name="PingTargetData.getByWebsite&Name&IdNotEqual">
- <query>SELECT p FROM PingTargetData p WHERE p.website = ?1
- AND p.name = ?2
- AND p.id <> ?3
- </query>
- </named-query>
<named-query name="PingTargetData.removeByWebsiteNotNull">
<query>DELETE FROM PingTargetData p WHERE p.website IS NOT NULL</query>
</named-query>
Added: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/TaskLockData.orm.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/TaskLockData.orm.xml?view=auto&rev=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/TaskLockData.orm.xml (added)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/TaskLockData.orm.xml Wed Dec 6 09:54:36 2006
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity-mappings version="1.0" xmlns="http://java.sun.com/xml/ns/persistence/orm"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
+ orm_1_0.xsd">
+ <description>Persistence Metadata for Roller</description>
+ <persistence-unit-metadata>
+ <persistence-unit-defaults>
+ <access>PROPERTY</access>
+ </persistence-unit-defaults>
+ </persistence-unit-metadata>
+ <package>org.apache.roller.pojos</package>
+ <entity metadata-complete="true" name="TaskLockData" class="org.apache.roller.pojos.TaskLockData">
+ <table name="roller_tasklock"/>
+ <attributes>
+ <id name="id">
+ <column name="id"/>
+ </id>
+ <basic name="name">
+ <column name="name" insertable="true" updatable="true" unique="true"/>
+ </basic>
+ <basic name="timeAquired">
+ <column name="timeacquired" insertable="true" updatable="true" unique="false"/>
+ </basic>
+ <basic name="lastRun">
+ <column name="lastrun" insertable="true" updatable="true" unique="false"/>
+ </basic>
+ <basic name="locked">
+ <column name="islocked" insertable="true" updatable="true" unique="false"/>
+ </basic>
+ <basic name="timeLeased">
+ <column name="timeleased" insertable="true" updatable="true" unique="false"/>
+ </basic>
+ </attributes>
+ </entity>
+</entity-mappings>
Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagAggregateData.orm.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagAggregateData.orm.xml?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagAggregateData.orm.xml (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagAggregateData.orm.xml Wed Dec 6 09:54:36 2006
@@ -51,6 +51,9 @@
<named-query name="WeblogEntryTagAggregateData.removeByTotalLessEqual">
<query>DELETE FROM WeblogEntryTagAggregateData w WHERE w.total <= ?1</query>
</named-query>
+ <named-query name="WeblogEntryTagAggregateData.updateTotalByName&WeblogNull">
+ <query>UPDATE WeblogEntryTagAggregateData w SET w.total = w.total - ?1 WHERE w.name = ?2 AND weblog IS NULL</query>
+ </named-query>
<attributes>
<id name="id">
<column name="id"/>
Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagData.orm.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagData.orm.xml?view=diff&rev=483166&r1=483165&r2=483166
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagData.orm.xml (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/apache/roller/pojos/WeblogEntryTagData.orm.xml Wed Dec 6 09:54:36 2006
@@ -12,6 +12,9 @@
<entity metadata-complete="true" name="WeblogEntryTagData"
class="org.apache.roller.pojos.WeblogEntryTagData">
<table name="roller_weblogentrytag"/>
+ <named-query name="WeblogEntryTagData.getByWeblog">
+ <query>SELECT w FROM WeblogEntryTagData w WHERE w.weblog= ?1</query>
+ </named-query>
<attributes>
<id name="id">
<column name="id"/>