Hi, I'd like to do a kind of SQL request with XWiki in order to get a data store in an Object. Here's my problem : 1 I've created a Class in XWiki in order to create a form for users. In this class I've named one of a property ID that should allow me to distinct objects. 2. I've created a template associated to this class that contain a single Object of this class. 3. I've created a Form to allow users to fill the data. The problem I have is that I have to give a unique name for the document created. Thus I thought to use to ID property that I've created. So I wanted to do a SQL Query to get the maximum id and by this way my new document name would be Data.Doc"ID+1". The problem is that I don't know how to access the desired property with XWiki. I've read the documentation about the data model : http://www.xwiki.org/xwiki/bin/view/DevGuide/Database+Schema but I didn't find the solution to my problem. If I execute the following Query (my class is XWiki.CFPClass): #set ($sql = "select distinct obj from XWikiDocument as doc, BaseObject as obj where obj.name=doc.fullName and obj.className='XWiki.CFPClass' and doc.name!='CFPClassTemplate'") with this code : #foreach ($item in $xwiki.search($sql)) $item <br /> #end I get fine my objects : CFP.Test 0 XWiki.CFPClass CFP.Test1 0 XWiki.CFPClass But I don't know how can I reach the property ? The property class seems to be 'BaseProperty' but I don't know how can I add it with the query. if I test a query like this : select distinct prop.name from XWikiDocument as doc, BaseObject as obj, BaseProperty as prop where obj.name=doc.fullName and obj.className='XWiki.CFPClass' and doc.name!='CFPClassTemplate' I get all the existing properties even the ones which aren't in the class XWiki.CFPClass. Any Idea ? -- Xavier MOGHRABI - Consortium ObjectWeb Email: xavier.moghrabi at objectweb.org Phone: +33 4 76 61 52 35 - Skype ID: xavier.moghrabi.bureau
With the following query : #set ($sql = "select distinct max(prop.value) from LongProperty as prop where prop.name='id'") I get "2". Thus I can get the last id. But how can I know that the "id" property belongs to my Class 'CFPClass' ? If there were an other class with the id property, perhaps I wouldn't have the same result ? Can someone explain me how should I explain that I want "the last value of the property id of my class CFPClass" ? Thanks -- Xavier MOGHRABI - Consortium ObjectWeb Email: xavier.moghrabi at objectweb.org Phone: +33 4 76 61 52 35 - Skype ID: xavier.moghrabi.bureau Le Mardi 18 Octobre 2005 18:55, Xavier MOGHRABI a écrit :
Hi,
I'd like to do a kind of SQL request with XWiki in order to get a data store in an Object.
Here's my problem : 1 I've created a Class in XWiki in order to create a form for users. In this class I've named one of a property ID that should allow me to distinct objects.
2. I've created a template associated to this class that contain a single Object of this class.
3. I've created a Form to allow users to fill the data. The problem I have is that I have to give a unique name for the document created. Thus I thought to use to ID property that I've created. So I wanted to do a SQL Query to get the maximum id and by this way my new document name would be Data.Doc"ID+1". The problem is that I don't know how to access the desired property with XWiki. I've read the documentation about the data model : http://www.xwiki.org/xwiki/bin/view/DevGuide/Database+Schema but I didn't find the solution to my problem.
If I execute the following Query (my class is XWiki.CFPClass): #set ($sql = "select distinct obj from XWikiDocument as doc, BaseObject as obj where obj.name=doc.fullName and obj.className='XWiki.CFPClass' and doc.name!='CFPClassTemplate'")
with this code : #foreach ($item in $xwiki.search($sql)) $item <br /> #end
I get fine my objects : CFP.Test 0 XWiki.CFPClass CFP.Test1 0 XWiki.CFPClass
But I don't know how can I reach the property ? The property class seems to be 'BaseProperty' but I don't know how can I add it with the query.
if I test a query like this : select distinct prop.name from XWikiDocument as doc, BaseObject as obj, BaseProperty as prop where obj.name=doc.fullName and obj.className='XWiki.CFPClass' and doc.name!='CFPClassTemplate'
I get all the existing properties even the ones which aren't in the class XWiki.CFPClass.
Any Idea ?
You need to add some joins select distinct max(prop.value) from BaseObject as obj, LongProperty as prop where obj.className='XWiki.CFPClass' and obj.id=prop.id.id and prop.name='id' Ludovic Xavier MOGHRABI wrote:
With the following query : #set ($sql = "select distinct max(prop.value) from LongProperty as prop where prop.name='id'") I get "2".
Thus I can get the last id. But how can I know that the "id" property belongs to my Class 'CFPClass' ? If there were an other class with the id property, perhaps I wouldn't have the same result ?
Can someone explain me how should I explain that I want "the last value of the property id of my class CFPClass" ?
Thanks
------------------------------------------------------------------------
-- You receive this message as a subscriber of the [email protected] mailing list. To unsubscribe: mailto:[email protected] For general help: mailto:[email protected]?subject=help ObjectWeb mailing lists service home page: http://www.objectweb.org/wws
-- Ludovic Dubost XPertNet: http://www.xpertnet.fr/ Blog: http://www.ludovic.org/blog/ XWiki: http://www.xwiki.com Skype: ldubost AIM: nvludo Yahoo: ludovic
participants (2)
-
Ludovic Dubost -
Xavier MOGHRABI