Thanks, that right test should be if (diffs.size() == 0) But an new object is created anyway
Arnaud. 2013/3/18 Edo Beutler <ebeut...@synventis.com>: > 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.bour...@gmail.com>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@xwiki.org >> http://lists.xwiki.org/mailman/listinfo/users >> > _______________________________________________ > users mailing list > users@xwiki.org > http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list users@xwiki.org http://lists.xwiki.org/mailman/listinfo/users