Ticket #140 (closed defect: fixed)

Opened 3 years ago

Last modified 3 years ago

Error when importing studies that have values that do not match a required ontology

Reported by: e.vansomeren@… Owned by: business@…
Priority: blocker Milestone: 0.6.2
Component: Import wizard Version: 0.5
Keywords: import ontology Cc: e.vansomeren@…
Product: Operating system: Windows XP
URL: Hardware: PC

Description

I've created the NTC study template 2 that contains a field "Sample Source" that required an ontology. However, if I import study info using the simple wizard and the imported studies have a value that does not match the ontology (in my case PBMC) you get the error below:

Ive used v0.5.0 via dbnp.org on Windows XP using Chrome

Grails Runtime Exception

Error Details

Error 500: Executing action [saveProperties] of controller [dbnp.importer.ImporterController?] caused exception: Ontology term not recognized (not in the GSCF ontology cache): PBMC when setting field Sample Source
Servlet: grails
URI: /gscf-0.5.0-demo/grails/importer/saveProperties.dispatch
Exception Message: Ontology term not recognized (not in the GSCF ontology cache): PBMC when setting field Sample Source
Caused by: Ontology term not recognized (not in the GSCF ontology cache): PBMC when setting field Sample Source
Class: ImporterController?
At Line: [260]
Code Snippet:
Stack Trace

java.lang.IllegalArgumentException?: Ontology term not recognized (not in the GSCF ontology cache): PBMC when setting field Sample Source

at dbnp.studycapturing.TemplateEntity?$_setFieldValue_closure3.doCall(TemplateEntity?.groovy:630)

at dbnp.studycapturing.TemplateEntity?.setFieldValue(TemplateEntity?.groovy:620)

at dbnp.studycapturing.TemplateEntity?$setFieldValue$14.call(Unknown Source)

at dbnp.importer.ImporterService?.createRecord(ImporterService?.groovy:343)

at GrailsMelodyGrailsPlugin?$_closure5_closure18_closure19.doCall(GrailsMelodyGrailsPlugin?.groovy:156)

at dbnp.importer.ImporterService?$_importdata_closure4.doCall(ImporterService?.groovy:230)

at dbnp.importer.ImporterService?.importdata(ImporterService?.groovy:229)

at dbnp.importer.ImporterService?$$FastClassByCGLIB$$3550d3b5.invoke(<generated>)

at net.sf.cglib.proxy.MethodProxy?.invoke(MethodProxy?.java:149)

at dbnp.importer.ImporterService?$$EnhancerByCGLIB$$5baed70a.importdata(<generated>)

at GrailsMelodyGrailsPlugin?$_closure5_closure18_closure19.doCall(GrailsMelodyGrailsPlugin?.groovy:156)

at dbnp.importer.ImporterController?$_closure8.doCall(ImporterController?.groovy:260)

at dbnp.importer.ImporterController?$_closure8.doCall(ImporterController?.groovy)

at net.bull.javamelody.JspWrapper?.invoke(JspWrapper?.java:116)

at net.bull.javamelody.JdbcWrapper?$DelegatingInvocationHandler?.invoke(JdbcWrapper?.java:250)

at $Proxy30.forward(Unknown Source)

at org.apache.shiro.web.servlet.ShiroFilter?.executeChain(ShiroFilter?.java:687)

at org.apache.shiro.web.servlet.ShiroFilter?.doFilterInternal(ShiroFilter?.java:616)

at org.apache.shiro.web.servlet.OncePerRequestFilter?.doFilter(OncePerRequestFilter?.java:81)

at net.bull.javamelody.MonitoringFilter?.doFilter(MonitoringFilter?.java:388)

at org.apache.jk.server.JkCoyoteHandler?.invoke(JkCoyoteHandler?.java:190)

at org.apache.jk.common.HandlerRequest?.invoke(HandlerRequest?.java:291)

at org.apache.jk.common.ChannelSocket?.invoke(ChannelSocket?.java:769)

at org.apache.jk.common.ChannelSocket?.processConnection(ChannelSocket?.java:698)

at org.apache.jk.common.ChannelSocket?$SocketConnection?.runIt(ChannelSocket?.java:891)

at java.lang.Thread.run(Thread.java:619)

Attachments

OntologyMapping.png Download (4.3 KB) - added by business@… 3 years ago.
subjecttest.xls Download (10.5 KB) - added by business@… 3 years ago.
ontologymapping.png Download (28.7 KB) - added by t.w.abma@… 3 years ago.
Ontologymapping

Change History

Changed 3 years ago by business@…

  • status changed from new to assigned
  • owner set to t.w.abma@…

Changed 3 years ago by t.w.abma@…

  • status changed from assigned to closed
  • resolution set to fixed

Fixed this exception which came when trying to import data which cannot be found in an ontology. Should not give an exception anymore, but leaves the cells empty. In a later step in the wizard the user still can/has to choose the values to be filled in for the ontology based field.

Changed 3 years ago by business@…

  • status changed from closed to reopened
  • resolution fixed deleted

Eugene to Tjeerd (in Dutch):

"Bedankt voor je aandacht aan dit probleem.
De error is eruit en tijdens de import geeft GSCF nu een leeg vakje
wanneer het niet klopt met de ontology.
Jammer is wel dat je als gebruiker er niet op geattendeerd wordt dat er
wel info was, maar dat het niet voldeed.
- Wish zou zijn dat er een melding komt van "problemen", e.g.
"SampleSource? of study 3 was "C2C12 cell line", but this term is not
found in ontology NCI Thesaurus."
- Liever nog dat de waarde in de file er staat maar een rood vakje
aangeeft dat dit niet voldoet aan de regels en je dit dus moet
veranderen voordat je verder kunt. Denk aan iemand heeft Humu Sapiens
ingevuld ipv Homo Sapiens. Dan wil je liever zien dat er Humu staat
zodat je het kan aanpassen dan een leeg vakje (want dan denk je dat het
gewoon niet was ingevuld).
- Belangrijker is echter dat je in staat moet zijn om het te verbeteren.
Maar dat lukte mij niet (er is alleen een dropdown met als keuzes leeg
of blood sample). Hier zou je dus de functionality willen hebben die je
krijgt als je de create wizard gebruikt.

Toen ik verder ging bleek er inderdaad wel 3 studies bijgekomen te zijn
(melding home "At this moment, there are 7 studies in the database."
terwijl er hiervoor 4 waren.) Maar bij My Studies en view studies kan ik
nog steeds niets zien. (ik was ingelogd)"

Summary in English:

  • Important for the whole importer: when creating new studies, assign the current logged in user as owner!! Also, when adding to a study, check if the logged user has the right to do that (even better, don't show studies he/she cannot alter (you need OWNER or WRITER rights) in the choose study dropdown box)
  • Instead of leaving the cells empty, the original text should be displayed.
  • It would be really nice if when a term is not in the database, the import wizard would place a getTerms call (you can use Ontocat for this) to the NCBO ontology to see whether there is actually a term with the input text as name (or a term where the input text is a synonym) in the ontology, and then add that term to the database and select that one.
  • Also nice would be a summary of the found problems when importing

Changed 3 years ago by business@…

Implement an extra step for resolving not recognized ontology terms

Changed 3 years ago by business@…

Show only studies of which the user is owner or writer, and also check that when you are allowed to change data (hasWriteAccess)

Changed 3 years ago by t.w.abma@…

  • status changed from reopened to closed
  • resolution set to worksforme

Owner permission check was already there, but now when a Study is chosen which doesn't have WRITER rights it will tell so on an Importer error page. The extra step with the failed ontology is implemented and the ability to correct this.

Still todo:
- better summary of problems
- not found term, ability to add it easily
- fix multiple columns having ontologies (?)

Changed 3 years ago by t.w.abma@…

When having multiple columns being ontologies this now shows up correctly as individual cells, this was fixed in revision 1121. Part of the importer was rewritten and two importer domains were added to make it function better.

Changed 3 years ago by business@…

  • status changed from closed to reopened
  • cc e.vansomeren@… added
  • resolution worksforme deleted

Actually there are still a number of things to be dealt with:
* Right now, when an ontology term that is not recognized occurs multiple times, you get a field for each time. This doesn't make sense if you have many times (maybe all your 80 Subjects have species Rattus norvegicus, and that species is not yet in the database, then you would get 80 fields to fill out).
Rather, it should just display a list of unmapped ontology terms and let you select the right term, defined by the template (because now you can choose terms from any ontology, which also does not make sense). Like this:

Changed 3 years ago by business@…

Changed 3 years ago by business@…

  • milestone changed from 0.5.1 to 0.6.1

Changed 3 years ago by t.w.abma@…

  • status changed from reopened to assigned
  • owner changed from t.w.abma@… to business@…

The suggestion about the ontology mapping is now implemented in step 3 of the import wizard. Fields which could not be mapped are indicated red with a label saying "invalid: ontologyterm" and the ability to to correct it. Perhaps not the nicest appearance, but something we can improve.

Changed 3 years ago by business@…

  • owner changed from business@… to t.w.abma@…

I just tested it, it seems that only the first non-corrected term is signaled? In the rest of the sheet, they are not picked up somehwo.
Tested on CI, see attachment for the test sheet (Subjects of template Human).

Changed 3 years ago by business@…

Changed 3 years ago by t.w.abma@…

Ontologymapping

Changed 3 years ago by t.w.abma@…

  • owner changed from t.w.abma@… to business@…

I tested it on CI and it currently looks like the attachment (ontologymapping.png), is this what you get too?

It looks correct to me, there is one ontology correct: "Homo sapiens", the others are not starting with a capital or have a typo in it.

Changed 3 years ago by business@…

Yes, now it works for me too. Strange, yesterday only the first field was colored red, and the rest was empty.
However, I still can click on Accept changes and get no error message... It should complain because the fields do not validate. But this is already a great improvement!

Changed 3 years ago by business@…

  • owner changed from business@… to t.w.abma@…

Changed 3 years ago by t.w.abma@…

  • owner changed from t.w.abma@… to business@…

Added missing properties validation in revision 1216, so first all ontologies/fields have to be valid before one can continue to the next step. Works here.

Changed 3 years ago by business@…

  • owner changed from business@… to t.w.abma@…

It works for ontologies, but it doesn't seem to work for other fields. E.g. if I put '45h' in an age field, it goes to the next step, but gives an error in the final import:

Grails Runtime Exception
Error Details
Error 500: Executing action [savePostview] of controller [dbnp.importer.ImporterController] caused exception: java.lang.String cannot be cast to java.lang.Long
Servlet: grails
URI: /gscf-0.6.0-ci/grails/importer/savePostview.dispatch
Exception Message: java.lang.String cannot be cast to java.lang.Long
Caused by: java.lang.String cannot be cast to java.lang.Long
Class: ImporterController
At Line: [375]
Code Snippet:
Stack Trace

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long

	at dbnp.importer.ImporterService.persistEntity(ImporterService.groovy:407)

	at dbnp.importer.ImporterService$_saveDatamatrix_closure6_closure22.doCall(ImporterService.groovy:314)

	at dbnp.importer.ImporterService$_saveDatamatrix_closure6.doCall(ImporterService.groovy:291)

	at dbnp.importer.ImporterService.saveDatamatrix(ImporterService.groovy:290)

	at dbnp.importer.ImporterService$$FastClassByCGLIB$$3550d3b5.invoke(<generated>)

	at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)

	at dbnp.importer.ImporterService$$EnhancerByCGLIB$$d6601734.saveDatamatrix(<generated>)

	at dbnp.importer.ImporterService$saveDatamatrix.call(Unknown Source)

	at dbnp.importer.ImporterController$_closure10.doCall(ImporterController.groovy:375)

	at dbnp.importer.ImporterController$_closure10.doCall(ImporterController.groovy)

	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)

	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)

	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)

	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)

	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)

	at java.lang.Thread.run(Thread.java:619)

So all the fields should be validated before moving on to the next step.

Changed 3 years ago by work@…

Looking at changelists r1215 (the logic) and r1216 (the view) that supposedly should fix this issue, are lacking the real solution.

Right now, you try to set the value, and catch the Exception if it is not possible. This solution is flawed as you do not actually validate the instance. It's perfectly possibly to set a String into a template field which is an integer, but if you validate the instance validation will fail. I don't even think the try/catch block is necessary at all... You probably should handle the import as follows:

		session.importer_importeddata.each { table ->
			table.each { entity ->
				// set values
				entity.fiveFields().each { field ->
					entity.setFieldValue(
						field.name,
						params["entity_" + entity.getIdentifier() + "_" + field.escapedName()])
					)
				}

				// validate entity
				if (!entity.validate()) {
					// the entity does not validate
					// get the errors from the instance
					// and make sure the fields in the
					// view are marked red...
					println "I've got a couple of errors to handle in the view..."
					entity.errors.getAllErrors().each() {
						println it
					}
				} else {
					// everything is fine...
				}
			} // end of record
		} // end of table

Changed 3 years ago by t.w.abma@…

That was also my first intention to do it that way, but the parent is required for that to validate. Which currently happens at the last stap of the wizard (saveDatamatrix) including the validation; which forced me to do it this way and. Should rewrite that part so the parent is set earlier in the wizard and I can just validate the entity already here. Thanks for the feedback.

Changed 3 years ago by work@…

Actually, you can still use the solution I described above. If you know that the parent is required and will always be missing in this particular page, you can still validate() your instance. Your validation will then always fail, but you can choose to ignore the error that the parent event is null. Then your instance is still properly validated and you can give validation feedback. You can then assign the parent in the last step of your importer and validate the instances again, and now with the parent. Then you know that if the instance validates, everything is well...

Changed 3 years ago by work@…

Also, you should always use Gorm's validation method to validate your instances, and never rely on your try/catch mechanism as you cannot trust it to work properly...

Changed 3 years ago by work@…

  • component changed from GSCF in general to Import wizard

Changed 3 years ago by work@…

  • priority changed from major to critical
  • milestone changed from 0.6.1 to 0.6.2

Moving to milestone 0.6.2, updating priority to critical... Tjeerd, can you please fix this? This should have been included in 0.6.1...

Changed 3 years ago by business@…

Add an extra if on top checking for ontology terms

Changed 3 years ago by t.w.abma@…

  • owner changed from t.w.abma@… to business@…

Should be fixed now, at least it is working here now. Validation is now done in the mapping step (where also first parents are automatically being set for the entities).

Changed 3 years ago by e.vansomeren@…

I could not test if this issue is fixed, because when I arrive at step 3 "Mappings", I cannot scroll from left to right, although I have many columns in my Excel file and I can only see 7 columns (while there values to be correct at columns > 7).

Could you please add a scroll bar?
This occured with Google Chrome.

To reproduce: Try to import an Excel file with many columns and import as study info using NTC Study 2 as Study template.

Changed 3 years ago by business@…

This still does not work for fields other than ontology fields, if you e.g. have a string in a DOUBLE field, the whole importer blows:

2011-01-11 12:07:52,519 [TP-Processor7] ERROR servlet.GrailsDispatcherServlet  - HandlerInterceptor.afterCompletion threw exception
java.lang.NullPointerException
	at BaseFilters$_closure1_closure3_closure7.doCall(BaseFilters.groovy:42)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
	at java.lang.Thread.run(Thread.java:662)
2011-01-11 12:08:02,376 [TP-Processor11] ERROR builder.ClosureInvokingAction  - Exception occured invoking flow action: Cannot cast object 'to be estimated' with class 'java.lang.String' to class 'java.util.Date'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'to be estimated' with class 'java.lang.String' to class 'java.util.Date'
	at dbnp.studycapturing.Identity.setProperty(Identity.groovy)
	at dbnp.studycapturing.TemplateEntity.setFieldValue(TemplateEntity.groovy:854)
	at dbnp.studycapturing.TemplateEntity$setFieldValue.call(Unknown Source)
	at dbnp.importer.ImporterService.createRecord(ImporterService.groovy:452)
	at dbnp.importer.ImporterService$_importData_closure4.doCall(ImporterService.groovy:218)
	at dbnp.importer.ImporterService.importData(ImporterService.groovy:216)
	at dbnp.importer.ImporterService$$FastClassByCGLIB$$3550d3b5.invoke(<generated>)
	at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
	at dbnp.importer.ImporterService$$EnhancerByCGLIB$$6265d968.importData(<generated>)
	at dbnp.importer.ImporterService$importData.call(Unknown Source)
	at dbnp.importer.ImporterController.propertiesPage(ImporterController.groovy:419)
	at dbnp.importer.ImporterController$_closure2_closure11_closure25.doCall(ImporterController.groovy:158)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
	at java.lang.Thread.run(Thread.java:662)
2011-01-11 12:08:02,380 [TP-Processor11] ERROR errors.GrailsExceptionResolver  - Exception occurred when processing request: [POST] /gscf-0.6.1-ci/importer/pages - parameters:
columnproperty.index.23: dontimport
columnproperty.index.24: dontimport
execution: e3s3
execution: e3s1
columnproperty.index.0: SubmissionDate
columnproperty.index.2: PrimaryContact
columnproperty.index.1: code
columnproperty.index.4: StudyMainSpecies
columnproperty.index.3: AssayType
columnproperty.index.6: StudyType
columnproperty.index.5: StudyMainSource
columnproperty.index.8: dontimport
columnproperty.index.7: dontimport
columnproperty.index.9: dontimport
columnproperty.index.11: dontimport
columnproperty.index.10: dontimport
columnproperty.index.14: dontimport
columnproperty.index.15: title
_eventId_next: 1
columnproperty.index.12: dontimport
columnproperty.index.13: dontimport
columnproperty.index.18: dontimport
columnproperty.index.19: dontimport
columnproperty.index.16: description
columnproperty.index.17: startDate
columnproperty.index.22: dontimport
columnproperty.index.21: dontimport
columnproperty.index.20: dontimport
Stacktrace follows:
org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing org.codehaus.groovy.grails.webflow.engine.builder.ClosureInvokingAction@456215ef in state 'pageTwo' of flow 'importer/pages' -- action execution attributes were 'map[[empty]]'
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
	at java.lang.Thread.run(Thread.java:662)
Caused by: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'to be estimated' with class 'java.lang.String' to class 'java.util.Date'
	at dbnp.studycapturing.Identity.setProperty(Identity.groovy)
	at dbnp.studycapturing.TemplateEntity.setFieldValue(TemplateEntity.groovy:854)
	at dbnp.studycapturing.TemplateEntity$setFieldValue.call(Unknown Source)
	at dbnp.importer.ImporterService.createRecord(ImporterService.groovy:452)
	at dbnp.importer.ImporterService$_importData_closure4.doCall(ImporterService.groovy:218)
	at dbnp.importer.ImporterService.importData(ImporterService.groovy:216)
	at dbnp.importer.ImporterService$$FastClassByCGLIB$$3550d3b5.invoke(<generated>)
	at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
	at dbnp.importer.ImporterService$$EnhancerByCGLIB$$6265d968.importData(<generated>)
	at dbnp.importer.ImporterService$importData.call(Unknown Source)
	at dbnp.importer.ImporterController.propertiesPage(ImporterController.groovy:419)
	at dbnp.importer.ImporterController$_closure2_closure11_closure25.doCall(ImporterController.groovy:158)
	... 6 more

Changed 3 years ago by business@…

  • priority changed from critical to blocker

geldt ook voor data strings die niet correct zijn:

2011-01-11 12:15:13,099 [TP-Processor11] ERROR errors.GrailsExceptionResolver  - Exception occurred when processing request: [POST] /gscf-0.6.1-ci/importer/pages - parameters:
columnproperty.index.23: dontimport
columnproperty.index.24: dontimport
execution: e3s5
execution: e3s1
columnproperty.index.0: SubmissionDate
columnproperty.index.2: PrimaryContact
columnproperty.index.1: code
columnproperty.index.4: StudyMainSpecies
columnproperty.index.3: StudyType
columnproperty.index.6: dontimport
columnproperty.index.5: StudyMainSource
columnproperty.index.8: dontimport
columnproperty.index.7: dontimport
columnproperty.index.9: dontimport
columnproperty.index.11: dontimport
columnproperty.index.10: dontimport
columnproperty.index.14: dontimport
_eventId_next: 1
columnproperty.index.15: title
columnproperty.index.12: dontimport
columnproperty.index.13: dontimport
columnproperty.index.18: dontimport
columnproperty.index.19: dontimport
columnproperty.index.16: description
columnproperty.index.17: startDate
columnproperty.index.22: dontimport
columnproperty.index.21: dontimport
columnproperty.index.20: dontimport
Stacktrace follows:
org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing org.codehaus.groovy.grails.webflow.engine.builder.ClosureInvokingAction@456215ef in state 'pageTwo' of flow 'importer/pages' -- action execution attributes were 'map[[empty]]'
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
	at java.lang.Thread.run(Thread.java:662)
Caused by: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '2010' with class 'java.lang.String' to class 'java.util.Date'
	at dbnp.studycapturing.Identity.setProperty(Identity.groovy)
	at dbnp.studycapturing.TemplateEntity.setFieldValue(TemplateEntity.groovy:854)
	at dbnp.studycapturing.TemplateEntity$setFieldValue.call(Unknown Source)
	at dbnp.importer.ImporterService.createRecord(ImporterService.groovy:452)
	at dbnp.importer.ImporterService$_importData_closure4.doCall(ImporterService.groovy:218)
	at dbnp.importer.ImporterService.importData(ImporterService.groovy:216)
	at dbnp.importer.ImporterService$$FastClassByCGLIB$$3550d3b5.invoke(<generated>)
	at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
	at dbnp.importer.ImporterService$$EnhancerByCGLIB$$6265d968.importData(<generated>)
	at dbnp.importer.ImporterService$importData.call(Unknown Source)
	at dbnp.importer.ImporterController.propertiesPage(ImporterController.groovy:419)
	at dbnp.importer.ImporterController$_closure2_closure11_closure25.doCall(ImporterController.groovy:158)
	... 6 more
2011-01-11 12:15:13,102 [TP-Processor11] ERROR servlet.GrailsDispatcherServlet  - HandlerInterceptor.afterCompletion threw exception
java.lang.NullPointerException
	at BaseFilters$_closure1_closure3_closure7.doCall(BaseFilters.groovy:42)
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
	at java.lang.Thread.run(Thread.java:662)

Changed 3 years ago by business@…

Also, mind Eugene's comment up here: Could you please add a scroll bar? Because now in the mappings step not all the fields are shown.

And please change the description 'You must fill in the missing mappings' into .. 'You must choose ontology terms' .

Changed 3 years ago by business@…

This problem also occurs when importing timestamps that cannot be parsed:

org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing org.codehaus.groovy.grails.webflow.engine.builder.ClosureInvokingAction@567e924d in state 'pageTwo' of flow 'importer/pages' -- action execution attributes were 'map[[empty]]'
	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
	at java.lang.Thread.run(Thread.java:662)
Caused by: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '12/2/2010 12:07:30' with class 'java.lang.String' to class 'java.util.Date'
	at dbnp.studycapturing.Identity.setProperty(Identity.groovy)
	at dbnp.studycapturing.TemplateEntity.setFieldValue(TemplateEntity.groovy:854)
	at dbnp.studycapturing.TemplateEntity$setFieldValue.call(Unknown Source)
	at dbnp.importer.ImporterService.createRecord(ImporterService.groovy:452)
	at dbnp.importer.ImporterService$_importData_closure4.doCall(ImporterService.groovy:218)
	at dbnp.importer.ImporterService.importData(ImporterService.groovy:216)
	at dbnp.importer.ImporterService$$FastClassByCGLIB$$3550d3b5.invoke(<generated>)
	at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
	at dbnp.importer.ImporterService$$EnhancerByCGLIB$$1fca9603.importData(<generated>)
	at dbnp.importer.ImporterService$importData.call(Unknown Source)
	at dbnp.importer.ImporterController.propertiesPage(ImporterController.groovy:438)
	at dbnp.importer.ImporterController$_closure2_closure14_closure28.doCall(ImporterController.groovy:182)
	... 6 more

Changed 3 years ago by work@…

  • owner changed from business@… to t.w.abma@…

Changed 3 years ago by t.w.abma@…

  • owner changed from t.w.abma@… to business@…

Looks like it is working here locally and on CI, casting errors are caught correctly and a slider has been added so one can see and manipulate all fields in the mappings step.

Changed 3 years ago by work@…

  • status changed from assigned to closed
  • resolution set to fixed

closing issue...

Note: See TracTickets for help on using tickets.