Finaly I do:
diffs.each { diff ->
oldTicket.set(diff.propName, ticket.get(diff.propName))
}
ticketDoc.removeObject(ticket)
ticketDoc.save()
And I get history difference only updated field
Arnaud.
2013/3/19 Arnaud bourree <arnaud.bourree(a)gmail.com>om>:
I just try:
ticketDoc.removeObject(oldTicket)
ticket.setGuid(oldTicket.getGuid())
ticketDoc.save()
And I get unexpected history difference I suspect: object[0] is
deleted and object[1] is added, so not compared together.
Arnaud.
2013/3/18 Arnaud bourree <arnaud.bourree(a)gmail.com>om>:
> Thanks, that right test should be if (diffs.size() == 0)
>
> But an new object is created anyway
>
> Arnaud.
>
> 2013/3/18 Edo Beutler <ebeutler(a)synventis.com>om>:
>> Hi Arnaud
>>
>> I'm not sure, but I suspect you just flipped the if statement. Shouldn't
>> the document be saved when "diffs.size() != 0" instead? Everything
else
>> looks ok to me if I understood correctly what you try to do.
>>
>> if (diffs.size() *!=* 0) {
>> println "none"
>> } else {
>> println "Updated"
>> ticketDoc.save()
>> }
>>
>> Hope this helps
>> Edo
>>
>> On Mon, Mar 18, 2013 at 5:37 PM, Arnaud bourree
<arnaud.bourree(a)gmail.com>wrote;wrote:
>>
>>> Hello,
>>>
>>> I'm prototyping a connector to a ticket tracking tool: I'm writing a
>>> Groovy page which import CSV calls into XWiki.
>>> I map each CSV rows to one XWiki object store in one page (one object per
>>> page).
>>> OK, I succeed to to it.
>>>
>>> My issue is that imported CSV contains rows (tickets) which don't
>>> change since last import and I don't want to update page in this case.
>>> Thanks to getDiff() method on BaseObject, XWiki help me to find is
>>> ticket change or not.
>>> I write the following Groovy code:
>>>
>>> def http = new HTTPBuilder( 'https://stim.gemalto.com' )
>>> http.parser.'text/csv' = { resp ->
>>> return new CSVReader( new InputStreamReader( resp.entity.content,
>>> ParserRegistry.getCharset( resp ) ) )
>>> }
>>> http.request( Method.GET, 'text/csv' ) {
>>> uri.path = myPath
>>> uri.query = myQuery
>>>
>>> // response handler for a success response code:
>>> response.success = { resp, csv ->
>>> if
("${resp.headers.'Content-Type'}".startsWith('text/csv')) {
>>> def names = []
>>> def idIndex = 0
>>> def cpt=0
>>> // Find id column call "IncidentNumber" in my case
>>> csv.readNext().each { field ->
>>> if (field.equals('IncidentNumber')) {
>>> idIndex = cpt;
>>> }
>>> names.add(field)
>>> cpt++;
>>> }
>>> println "|=Incident Number|=action"
>>> csv.readAll().each { line ->
>>> def id = line[idIndex]
>>> def exists = xwiki.exists('myTicket.'+id)
>>> def ticketDoc = xwiki.getDocument('myTicket.'+id)
>>> def ticket = ticketDoc.newObject('myTicket.myTicketClass')
>>> for(i=0 ; i<names.size() ; i++) {
>>> ticket.set(names[i], line[i]);
>>> }
>>> print "|[[myTicket."+id+"]]|"
>>> if (!exists) {
>>> println "Added"
>>> ticketDoc.save()
>>> } else {
>>> def tickets=ticketDoc.getObjects('myTicket.myTicketClass')
>>> def oldTicket = tickets.size() != 0 ? tickets[0] :
>>> ticketDoc.newObject('myTicket.myTicketClass')
>>> def
>>> diffs=ticket.getBaseObject().getDiff(oldTicket.getBaseObject(),
>>> xwiki.context)
>>> if (diffs.size() != 0) {
>>> println "none"
>>> } else {
>>> println "Updated"
>>> ticketDoc.save()
>>> }
>>> }
>>> }
>>> }
>>> }
>>>
>>> // handler for any failure status code:
>>> response.failure = { resp ->
>>> println "Unexpected error: ${resp.status} :
>>> ${resp.statusLine.reasonPhrase}"
>>> }
>>> }
>>>
>>> The issue in my code, is that I create and add a new ticket object on
>>> each update where I want to have only one.
>>> I could removed old ticket before save but in this case history diff
>>> may not compare two tickets as there have to different GUID.
>>> I could copy new ticket fields to old ticket
>>> Or may be there is simplest way to do it implemented else where in XWiki?
>>>
>>> What do you think?
>>>
>>> Regards,
>>>
>>> Arnaud.
>>> _______________________________________________
>>> users mailing list
>>> users(a)xwiki.org
>>>
http://lists.xwiki.org/mailman/listinfo/users
>>>
>> _______________________________________________
>> users mailing list
>> users(a)xwiki.org
>>
http://lists.xwiki.org/mailman/listinfo/users