Author: norman
Date: Thu Jun 24 17:42:31 2010
New Revision: 957649
URL: http://svn.apache.org/viewvc?rev=957649&view=rev
Log:
more XPATH query tuning
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java?rev=957649&r1=957648&r2=957649&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java
Thu Jun 24 17:42:31 2010
@@ -69,7 +69,7 @@ public class JCRMailboxMapper extends Ab
try {
QueryManager manager =
getSession().getWorkspace().getQueryManager();
- String queryString = "//"+ MAILBOXES_PATH +
"//element(*,jamesMailbox:mailbox)[@" + JCRMailbox.NAME_PROPERTY + "='" + name
+ "'] order by @"+ JCRMailbox.NAME_PROPERTY;
+ String queryString = "/jcr:root/"+ MAILBOXES_PATH +
"//element(*,jamesMailbox:mailbox)[@" + JCRMailbox.NAME_PROPERTY + "='" + name
+ "'] order by @"+ JCRMailbox.NAME_PROPERTY;
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
NodeIterator it = result.getNodes();
long resultSize = it.getSize();
@@ -150,7 +150,7 @@ public class JCRMailboxMapper extends Ab
public Mailbox<String> findMailboxByName(String name) throws
StorageException, MailboxNotFoundException {
try {
QueryManager manager =
getSession().getWorkspace().getQueryManager();
- String queryString = "//" + MAILBOXES_PATH +
"//element(*,jamesMailbox:mailbox)[@" + JCRMailbox.NAME_PROPERTY + "='" + name
+ "']";
+ String queryString = "/jcr:root/" + MAILBOXES_PATH +
"//element(*,jamesMailbox:mailbox)[@" + JCRMailbox.NAME_PROPERTY + "='" + name
+ "']";
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
NodeIterator it = result.getNodes();
if (it.hasNext()) {
@@ -175,7 +175,7 @@ public class JCRMailboxMapper extends Ab
List<Mailbox<String>> mailboxList = new ArrayList<Mailbox<String>>();
try {
QueryManager manager =
getSession().getWorkspace().getQueryManager();
- String queryString = "//" + MAILBOXES_PATH +
"//element(*,jamesMailbox:mailbox)[jcr:like(@" + JCRMailbox.NAME_PROPERTY +
",'%" + name + "%')]";
+ String queryString = "/jcr:root/" + MAILBOXES_PATH +
"//element(*,jamesMailbox:mailbox)[jcr:like(@" + JCRMailbox.NAME_PROPERTY +
",'%" + name + "%')]";
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
NodeIterator it = result.getNodes();
while (it.hasNext()) {
@@ -272,7 +272,7 @@ public class JCRMailboxMapper extends Ab
try {
QueryManager manager = getSession().getWorkspace()
.getQueryManager();
- String queryString = "//" + MAILBOXES_PATH
+ String queryString = "/jcr:root/" + MAILBOXES_PATH
+ "//element(*,jamesMailbox:mailbox)[jcr:like(@"
+ JCRMailbox.NAME_PROPERTY + ",'" + mailbox.getName() +
delimiter + "%')]";
QueryResult result = manager.createQuery(queryString, Query.XPATH)
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java?rev=957649&r1=957648&r2=957649&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
Thu Jun 24 17:42:31 2010
@@ -84,7 +84,7 @@ public class JCRMessageMapper extends Ab
public long countMessagesInMailbox(String uuid) throws StorageException {
try {
// we use order by because without it count will always be 0 in
jackrabbit
- String queryString = "/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"'] order by @" + JCRMessage.UID_PROPERTY;
+ String queryString = "/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"'] order by @" + JCRMessage.UID_PROPERTY;
QueryManager manager =
getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
NodeIterator nodes = result.getNodes();
@@ -115,7 +115,7 @@ public class JCRMessageMapper extends Ab
try {
// we use order by because without it count will always be 0 in
jackrabbit
- String queryString = "/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"' and @" + JCRMessage.SEEN_PROPERTY +"='false'] order by @" +
JCRMessage.UID_PROPERTY;
+ String queryString = "/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"' and @" + JCRMessage.SEEN_PROPERTY +"='false'] order by @" +
JCRMessage.UID_PROPERTY;
QueryManager manager =
getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
NodeIterator nodes = result.getNodes();
@@ -190,7 +190,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership<String>>
findMessagesInMailboxAfterUID(String uuid, long uid) throws RepositoryException
{
List<MailboxMembership<String>> list = new
ArrayList<MailboxMembership<String>>();
- String queryString = "/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY + "='"
+ uuid + "' and @" + JCRMessage.UID_PROPERTY + ">=" + uid + "] order by @" +
JCRMessage.UID_PROPERTY;
+ String queryString = "/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY + "='"
+ uuid + "' and @" + JCRMessage.UID_PROPERTY + ">=" + uid + "] order by @" +
JCRMessage.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -204,7 +204,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership<String>>
findMessagesInMailboxWithUID(String uuid, long uid) throws RepositoryException
{
List<MailboxMembership<String>> list = new
ArrayList<MailboxMembership<String>>();
- String queryString = "/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY + "='"
+ uuid + "' and @" + JCRMessage.UID_PROPERTY + "=" + uid + "] order by @" +
JCRMessage.UID_PROPERTY;
+ String queryString = "/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY + "='"
+ uuid + "' and @" + JCRMessage.UID_PROPERTY + "=" + uid + "] order by @" +
JCRMessage.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -218,7 +218,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership<String>>
findMessagesInMailboxBetweenUIDs(String uuid, long from, long to) throws
RepositoryException {
List<MailboxMembership<String>> list = new
ArrayList<MailboxMembership<String>>();
- String queryString = "/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY + "='"
+ uuid + "' and @" + JCRMessage.UID_PROPERTY + ">=" + from + " and @" +
JCRMessage.UID_PROPERTY + "<=" + to + "] order by @" + JCRMessage.UID_PROPERTY;
+ String queryString = "/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY + "='"
+ uuid + "' and @" + JCRMessage.UID_PROPERTY + ">=" + from + " and @" +
JCRMessage.UID_PROPERTY + "<=" + to + "] order by @" + JCRMessage.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -233,7 +233,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership<String>> findMessagesInMailbox(String uuid)
throws RepositoryException {
List<MailboxMembership<String>> list = new
ArrayList<MailboxMembership<String>>();
- String queryString = "/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"'] order by @" + JCRMessage.UID_PROPERTY;
+ String queryString = "/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"'] order by @" + JCRMessage.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -248,7 +248,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership<String>>
findDeletedMessagesInMailboxAfterUID(String uuid, long uid) throws
RepositoryException {
List<MailboxMembership<String>> list = new
ArrayList<MailboxMembership<String>>();
- String queryString = "/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY + "='"
+ uuid + "' and @" + JCRMessage.UID_PROPERTY + ">=" + uid + " and @" +
JCRMessage.DELETED_PROPERTY+ "='true'] order by @" + JCRMessage.UID_PROPERTY;
+ String queryString = "/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY + "='"
+ uuid + "' and @" + JCRMessage.UID_PROPERTY + ">=" + uid + " and @" +
JCRMessage.DELETED_PROPERTY+ "='true'] order by @" + JCRMessage.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -262,7 +262,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership<String>>
findDeletedMessagesInMailboxWithUID(String uuid, long uid) throws
RepositoryException {
List<MailboxMembership<String>> list = new
ArrayList<MailboxMembership<String>>();
- String queryString = "/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY + "='"
+ uuid + "' and @" + JCRMessage.UID_PROPERTY + "=" + uid + " and @" +
JCRMessage.DELETED_PROPERTY+ "='true'] order by @" + JCRMessage.UID_PROPERTY;
+ String queryString = "/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY + "='"
+ uuid + "' and @" + JCRMessage.UID_PROPERTY + "=" + uid + " and @" +
JCRMessage.DELETED_PROPERTY+ "='true'] order by @" + JCRMessage.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -276,7 +276,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership<String>>
findDeletedMessagesInMailboxBetweenUIDs(String uuid, long from, long to) throws
RepositoryException {
List<MailboxMembership<String>> list = new
ArrayList<MailboxMembership<String>>();
- String queryString = "/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY + "='"
+ uuid + "' and @" + JCRMessage.UID_PROPERTY + ">=" + from + " and @" +
JCRMessage.UID_PROPERTY + "<=" + to + " and @" + JCRMessage.DELETED_PROPERTY+
"='true'] order by @" + JCRMessage.UID_PROPERTY;
+ String queryString = "/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY + "='"
+ uuid + "' and @" + JCRMessage.UID_PROPERTY + ">=" + from + " and @" +
JCRMessage.UID_PROPERTY + "<=" + to + " and @" + JCRMessage.DELETED_PROPERTY+
"='true'] order by @" + JCRMessage.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -291,7 +291,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership<String>>
findDeletedMessagesInMailbox(String uuid) throws RepositoryException {
List<MailboxMembership<String>> list = new
ArrayList<MailboxMembership<String>>();
- String queryString = "/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"' and @" + JCRMessage.DELETED_PROPERTY+ "='true'] order by @" +
JCRMessage.UID_PROPERTY;
+ String queryString = "/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"' and @" + JCRMessage.DELETED_PROPERTY+ "='true'] order by @" +
JCRMessage.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -354,7 +354,7 @@ public class JCRMessageMapper extends Ab
try {
List<MailboxMembership<String>> list = new
ArrayList<MailboxMembership<String>>();
- String queryString = "/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"' and @" + JCRMessage.RECENT_PROPERTY +"='true'] order by @" +
JCRMessage.UID_PROPERTY;
+ String queryString = "/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"' and @" + JCRMessage.RECENT_PROPERTY +"='true'] order by @" +
JCRMessage.UID_PROPERTY;
QueryManager manager =
getSession().getWorkspace().getQueryManager();
Query query = manager.createQuery(queryString, Query.XPATH);
@@ -386,7 +386,7 @@ public class JCRMessageMapper extends Ab
try {
List<MailboxMembership<String>> list = new
ArrayList<MailboxMembership<String>>();
- String queryString = "/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"' and @" + JCRMessage.SEEN_PROPERTY +"='false'] order by @" +
JCRMessage.UID_PROPERTY;
+ String queryString = "/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"' and @" + JCRMessage.SEEN_PROPERTY +"='false'] order by @" +
JCRMessage.UID_PROPERTY;
QueryManager manager =
getSession().getWorkspace().getQueryManager();
@@ -549,8 +549,8 @@ public class JCRMessageMapper extends Ab
* @throws ItemNotFoundException
*/
private String formulateXPath(String uuid, SearchQuery query) throws
ItemNotFoundException, RepositoryException {
- final StringBuilder queryBuilder = new StringBuilder(50);
- queryBuilder.append("/" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"'");
+ final StringBuilder queryBuilder = new StringBuilder();
+ queryBuilder.append("/jcr:root" + getMailboxPath(uuid) +
"//element(*,jamesMailbox:message)[@" + JCRMessage.MAILBOX_UUID_PROPERTY +"='"
+ uuid +"'");
final List<Criterion> criteria = query.getCriterias();
if (criteria.size() == 1) {
final Criterion firstCriterion = criteria.get(0);
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java?rev=957649&r1=957648&r2=957649&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java
Thu Jun 24 17:42:31 2010
@@ -98,7 +98,7 @@ public class JCRSubscriptionMapper exten
*/
public Subscription findFindMailboxSubscriptionForUser(String user, String
mailbox) throws SubscriptionException {
try {
- String queryString = "//" + MAILBOXES_PATH +
"//element(*,jamesMailbox:user)[@" + JCRSubscription.USERNAME_PROPERTY + "='" +
user + "'] AND [@" + JCRSubscription.MAILBOXES_PROPERTY +"='" + mailbox + "']";
+ String queryString = "/jcr:root/" + MAILBOXES_PATH +
"//element(*,jamesMailbox:user)[@" + JCRSubscription.USERNAME_PROPERTY + "='" +
user + "'] AND [@" + JCRSubscription.MAILBOXES_PROPERTY +"='" + mailbox + "']";
QueryManager manager =
getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -128,7 +128,7 @@ public class JCRSubscriptionMapper exten
public List<Subscription> findSubscriptionsForUser(String user) throws
SubscriptionException {
List<Subscription> subList = new ArrayList<Subscription>();
try {
- String queryString = "//" + MAILBOXES_PATH +
"//element(*,jamesMailbox:user)[@" + JCRSubscription.USERNAME_PROPERTY + "='" +
user + "']";
+ String queryString = "/jcr:root/" + MAILBOXES_PATH +
"//element(*,jamesMailbox:user)[@" + JCRSubscription.USERNAME_PROPERTY + "='" +
user + "']";
QueryManager manager =
getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]