/xquery/create-event.xql

http://transcriptstudio4isha.googlecode.com/ · Unknown · 29 lines · 26 code · 3 blank · 0 comment · 0 complexity · ce5a209a3f1bc0d22fd6aedd5b80683d MD5 · raw file

  1. xquery version "1.0";
  2. import module namespace id-utils = "http://www.ishafoundation.org/ts4isha/xquery/id-utils" at "id-utils.xqm";
  3. import module namespace utils = "http://www.ishafoundation.org/ts4isha/xquery/utils" at "utils.xqm";
  4. declare option exist:serialize "media-type=application/xml";
  5. let $eventType := request:get-parameter('type', ())
  6. let $metadataXMLStr := request:get-parameter('metadataXML', ())
  7. return
  8. if (empty($eventType) or $eventType eq '') then
  9. error(xs:QName('missing-argument-exception'), 'No type specified')
  10. else if (empty($metadataXMLStr)) then
  11. error(xs:QName('missing-argument-exception'), 'No metadataXML specified')
  12. else if (empty(utils:get-event-type($eventType))) then
  13. error(xs:QName('illegal-argument-exception'), concat('Unknown type: ', $eventType))
  14. else
  15. let $collectionPath := concat($utils:dataCollectionPath, '/', $eventType)
  16. return
  17. if (not(xmldb:collection-exists($collectionPath))) then
  18. error(xs:QName('illegal-state-exception'), concat('Could not find event type collection: ', $collectionPath))
  19. else
  20. let $metadataXML := (util:parse($metadataXMLStr), <metadata/>)[1]
  21. let $newId := id-utils:generate-event-id($eventType)
  22. let $eventXML := <event id="{$newId}" type="{$eventType}">{$metadataXML}</event>
  23. let $documentURI := utils:build-event-path($eventXML)
  24. let $null := utils:store($documentURI, $eventXML)
  25. return
  26. $eventXML