+1
(this new api concept would also be great to add to
com.xpn.xwiki.store.XWikiStoreInterface.searchDocuments and not just
searchDocumentsNames)
2007/9/26, Vincent Massol <[EMAIL PROTECTED]>:
> Hi,
>
> I'd like to include the following commit in 1.1.1. The reason is that
> it fixes a bug (XWIKI-1768: Cannot delete Space with a simple quote
> in its name). However it also introduces a new API.
>
> The only risk would be that I've introduced a regression in my
> changes below (I've refactored one existing method so that the newly
> added implementation can share 90% of its code).
>
> WDYT?
>
> Here's my +1
>
> Thanks
> -Vincent
>
> On Sep 26, 2007, at 12:04 PM, Vincent Massol wrote:
>
> > Author: vmassol
> > Date: 2007-09-26 12:04:32 +0200 (Wed, 26 Sep 2007)
> > New Revision: 5094
> >
> > Modified:
> > xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/
> > api/XWiki.java
> > xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/
> > store/XWikiCacheStore.java
> > xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/
> > store/XWikiHibernateStore.java
> > xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/
> > store/XWikiStoreInterface.java
> > xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/
> > store/jcr/XWikiJcrStore.java
> > xwiki-platform/web/trunk/standard/src/main/webapp/skins/
> > albatross/delete.vm
> > Log:
> > XWIKI-1770: Add new searchDocuments() API that accepts named HQL
> > queries
> > XWIKI-1768: Cannot delete Space with a simple quote in its name
> >
> > Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/
> > xpn/xwiki/api/XWiki.java
> > ===================================================================
> > --- xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/
> > xwiki/api/XWiki.java 2007-09-26 08:44:21 UTC (rev 5093)
> > +++ xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/
> > xwiki/api/XWiki.java 2007-09-26 10:04:32 UTC (rev 5094)
> > @@ -464,6 +464,20 @@
> > return wrapDocs(xwiki.getStore().searchDocuments(wheresql,
> > nb, start, getXWikiContext()));
> > }
> >
> > + public List searchDocuments(String parametrizedSqlClause, int
> > nb, int start,
> > + List parameterValues) throws XWikiException
> > + {
> > + return xwiki.getStore().searchDocumentsNames
> > (parametrizedSqlClause, nb, start,
> > + parameterValues, getXWikiContext());
> > + }
> > +
> > + public List searchDocuments(String parametrizedSqlClause, List
> > parameterValues)
> > + throws XWikiException
> > + {
> > + return xwiki.getStore().searchDocumentsNames
> > (parametrizedSqlClause,
> > + parameterValues, getXWikiContext());
> > + }
> > +
> > /**
> > * Function to wrap a list of XWikiDocument into Document objects
> > *
> >
> > Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/
> > xpn/xwiki/store/XWikiCacheStore.java
> > ===================================================================
> > --- xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/
> > xwiki/store/XWikiCacheStore.java 2007-09-26 08:44:21 UTC (rev 5093)
> > +++ xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/
> > xwiki/store/XWikiCacheStore.java 2007-09-26 10:04:32 UTC (rev 5094)
> > @@ -248,6 +248,18 @@
> > return store.searchDocuments(wheresql, distinctbyname,
> > customMapping, checkRight, nb, start, context);
> > }
> >
> > + public List searchDocumentsNames(String parametrizedSqlClause,
> > int nb, int start,
> > + List parameterValues, XWikiContext context) throws
> > XWikiException
> > + {
> > + return store.searchDocumentsNames(parametrizedSqlClause,
> > nb, start, parameterValues, context);
> > + }
> > +
> > + public List searchDocumentsNames(String parametrizedSqlClause,
> > List parameterValues,
> > + XWikiContext context) throws XWikiException
> > + {
> > + return store.searchDocumentsNames(parametrizedSqlClause,
> > parameterValues, context);
> > + }
> > +
> > public XWikiLock loadLock(long docId, XWikiContext context,
> > boolean bTransaction) throws XWikiException {
> > return store.loadLock(docId, context, bTransaction);
> > }
> >
> > Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/
> > xpn/xwiki/store/XWikiHibernateStore.java
> > ===================================================================
> > --- xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/
> > xwiki/store/XWikiHibernateStore.java 2007-09-26 08:44:21 UTC (rev
> > 5093)
> > +++ xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/
> > xwiki/store/XWikiHibernateStore.java 2007-09-26 10:04:32 UTC (rev
> > 5094)
> > @@ -1622,6 +1622,19 @@
> > return ("1".equals(context.getWiki().Param(param +
> > ".read", "1")));
> > }
> >
> > + public List searchDocumentsNames(String parametrizedSqlClause,
> > List parameterValues,
> > + XWikiContext context) throws XWikiException
> > + {
> > + return searchDocumentsNames(parametrizedSqlClause, 0, 0,
> > parameterValues, context);
> > + }
> > +
> > + public List searchDocumentsNames(String parametrizedSqlClause,
> > int nb, int start,
> > + List parameterValues, XWikiContext context) throws
> > XWikiException
> > + {
> > + String sql = createSQLQuery("select distinct doc.web,
> > doc.name", parametrizedSqlClause);
> > + return searchDocumentsNamesInternal(sql, nb, start,
> > parameterValues, context);
> > + }
> > +
> > public List search(String sql, int nb, int start, Object[][]
> > whereParams, XWikiContext context) throws XWikiException {
> > boolean bTransaction = true;
> >
> > @@ -1750,12 +1763,18 @@
> > }
> > }
> >
> > - public List searchDocumentsNames(String wheresql, int nb, int
> > start, String selectColumns, XWikiContext context) throws
> > XWikiException {
> > + public List searchDocumentsNames(String wheresql, int nb, int
> > start, String selectColumns, XWikiContext context) throws
> > XWikiException
> > + {
> > + String sql = createSQLQuery("select distinct doc.web,
> > doc.name", wheresql);
> > + return searchDocumentsNamesInternal(sql, nb, start,
> > Collections.EMPTY_LIST, context);
> > + }
> > +
> > + private List searchDocumentsNamesInternal(String sql, int nb,
> > int start, List parameterValues,
> > + XWikiContext context) throws XWikiException
> > + {
> > boolean bTransaction = false;
> > MonitorPlugin monitor = Util.getMonitorPlugin(context);
> > try {
> > - String sql = createSQLQuery("select distinct doc.web,
> > doc.name", wheresql);
> > -
> > // Start monitoring timer
> > if (monitor!=null)
> > monitor.startTimer("hibernate", sql);
> > @@ -1764,6 +1783,16 @@
> > bTransaction = beginTransaction(false, context);
> > Session session = getSession(context);
> > Query query = session.createQuery(sql);
> > +
> > + if (parameterValues != null)
> > + {
> > + int i = 0;
> > + for (Iterator values = parameterValues.iterator();
> > values.hasNext();) {
> > + query.setString(i, (String) values.next());
> > + i++;
> > + }
> > + }
> > +
> > if (start!=0)
> > query.setFirstResult(start);
> > if (nb!=0)
> > @@ -1780,7 +1809,7 @@
> > catch (Exception e) {
> > throw new XWikiException
> > (XWikiException.MODULE_XWIKI_STORE,
> > XWikiException.ERROR_XWIKI_STORE_HIBERNATE_SEARCH,
> > - "Exception while searching documents with sql
> > [{0}]", e, new Object[]{ wheresql });
> > + "Exception while searching documents with SQL
> > [{0}]", e, new Object[]{ sql });
> > } finally {
> > try {
> > if (bTransaction)
> > @@ -1793,6 +1822,7 @@
> > }
> > }
> >
> > +
> > /**
> > * @todo refactor it to remove duplications with the
> > searchDocument API without the distrinctbylanguage parameter
> > */
> >
> > Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/
> > xpn/xwiki/store/XWikiStoreInterface.java
> > ===================================================================
> > --- xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/
> > xwiki/store/XWikiStoreInterface.java 2007-09-26 08:44:21 UTC (rev
> > 5093)
> > +++ xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/
> > xwiki/store/XWikiStoreInterface.java 2007-09-26 10:04:32 UTC (rev
> > 5094)
> > @@ -40,6 +40,8 @@
> > public List searchDocumentsNames(String wheresql, XWikiContext
> > context) throws XWikiException;
> > public List searchDocumentsNames(String wheresql, int nb, int
> > start, XWikiContext context) throws XWikiException;
> > public List searchDocumentsNames(String wheresql, int nb, int
> > start, String selectColumns, XWikiContext context) throws
> > XWikiException;
> > + public List searchDocumentsNames(String parametrizedSqlClause,
> > int nb, int start, List parameterValues, XWikiContext context)
> > throws XWikiException;
> > + public List searchDocumentsNames(String parametrizedSqlClause,
> > List parameterValues, XWikiContext context) throws XWikiException;
> > public List searchDocuments(String wheresql, boolean
> > distinctbyname, XWikiContext context) throws XWikiException;
> > public List searchDocuments(String wheresql, boolean
> > distinctbyname, boolean customMapping, XWikiContext context) throws
> > XWikiException;
> > public List searchDocuments(String wheresql, boolean
> > distinctbyname, int nb, int start, XWikiContext context) throws
> > XWikiException;
> >
> > Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/
> > xpn/xwiki/store/jcr/XWikiJcrStore.java
> > ===================================================================
> > --- xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/
> > xwiki/store/jcr/XWikiJcrStore.java 2007-09-26 08:44:21 UTC (rev 5093)
> > +++ xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/
> > xwiki/store/jcr/XWikiJcrStore.java 2007-09-26 10:04:32 UTC (rev 5094)
> > @@ -929,7 +929,21 @@
> > return null;
> > }
> >
> > - public List search(String sql, int nb, int start, XWikiContext
> > context) throws XWikiException {
> > + public List searchDocumentsNames(String parametrizedSqlClause,
> > int nb, int start,
> > + List parameterValues, XWikiContext context) throws
> > XWikiException
> > + {
> > + notSupportedCall();
> > + return null;
> > + }
> > +
> > + public List searchDocumentsNames(String parametrizedSqlClause,
> > List parameterValues,
> > + XWikiContext context) throws XWikiException
> > + {
> > + notSupportedCall();
> > + return null;
> > + }
> > +
> > + public List search(String sql, int nb, int start, XWikiContext
> > context) throws XWikiException {
> > notSupportedCall();
> > return null;
> > }
> >
> > Modified: xwiki-platform/web/trunk/standard/src/main/webapp/skins/
> > albatross/delete.vm
> > ===================================================================
> > --- xwiki-platform/web/trunk/standard/src/main/webapp/skins/
> > albatross/delete.vm 2007-09-26 08:44:21 UTC (rev 5093)
> > +++ xwiki-platform/web/trunk/standard/src/main/webapp/skins/
> > albatross/delete.vm 2007-09-26 10:04:32 UTC (rev 5094)
> > @@ -8,7 +8,7 @@
> > <div id="xwikimessage">$message</div>
> > #end
> > #set($links=$doc.getBacklinks())
> > -#set($orphans = $xwiki.searchDocuments(" where doc.fullName <> '$
> > {doc.fullName}as' and (doc.parent = '${doc.fullName}' or
> > (doc.parent = '${doc.name}' and doc.web = '${doc.web}'))"))
> > +#set($orphans = $xwiki.searchDocuments(" where doc.fullName <> ?
> > and (doc.parent = ? or (doc.parent = ? and doc.web = ?))", ["$
> > {doc.fullName}as", ${doc.fullName}, ${doc.name}, ${doc.web}]))
> > #if($request.xredirect)
> > #set($redirectparam = "&xredirect=$request.xredirect")
> > #end
>
> _______________________________________________
> notifications mailing list
> [EMAIL PROTECTED]
> http://lists.xwiki.org/mailman/listinfo/notifications
>
--
Thomas Mortagne
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs