+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 = "&amp;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

Reply via email to