Skip to content

Instantly share code, notes, and snippets.

@andreaskc
Created September 17, 2011 19:58
Show Gist options
  • Save andreaskc/1224300 to your computer and use it in GitHub Desktop.
Save andreaskc/1224300 to your computer and use it in GitHub Desktop.
Grails/Groovy Orbeon Persistence Layer
package net.saberco
import com.mongodb.gridfs.GridFSDBFile
//Written by Andy Kallenbach, SaberCo.net, September 17, 2011
//
//Still need to write Delete action and Finish search control
//Controller also depends on fileStorageService for GridFS
//
//The following must be inserted into Config/UrlMappings.groovy to wire up REST to
//the correct actions
// "/formrest/crud/$formapp/$formname/form/$filename"(controller:"formrest"){
// action = [GET: "showform", PUT: "updateform", DELETE: "deleteform"]
// }
//
// "/formrest/crud/$formapp/$formname/data/$dataid/$filename"(controller:"formrest"){
// action = [GET: "showdata", PUT: "updatedata", DELETE: "deletedata"]
// }
//
// "/formrest/search/$formapp/$formname/$filename"(controller:"formrest"){
// action = [POST: "search"]
// }
//
// "/formrest/search/$formapp/$formname"(controller:"formrest"){
// action = [POST: "search"]
// }
class FormrestController {
def filestorageService;
def index = { }
def showdata = {
println "showdata"
filestorageService.deliverGridFSFile(response, filestorageService.findFile('webdata', [formapp: params.formapp, formname: params.formname, dataid: params.dataid]));
}
def updatedata = {
println "updatedata"
filestorageService.saveFile('webdata', request.getInputStream(), request.getContentType(), params.filename, [formapp: params.formapp, formname: params.formname, dataid: params.dataid])
render "Data updated"
}
def deletedata = {
println "deletedata"
println request.getPathInfo()
}
def showform = {
println "showform"
filestorageService.deliverGridFSFile(response, filestorageService.findFile('webform', [formapp: params.formapp, formname: params.formname]));
}
def updateform = {
println "updateform"
filestorageService.saveFile('webform', request.getInputStream(), request.getContentType(), params.filename, [formapp: params.formapp, formname: params.formname])
render "Form updated"
}
def deleteform = {
println "deleteform"
println request.getPathInfo()
}
def search = {
println "search"
def root = request.XML;
String pageSize = root."page-size".text();
String pageNumber = root."page-number".text();
def searchElem = root.query;
def fullQuery = searchElem.head;
Integer resultsToSkip = (pageNumber.toInteger() - 1) * pageSize.toInteger();
List files;
files = filestorageService.find('webdata', [formapp: params.formapp, formname: params.formname], resultsToSkip, pageSize.toInteger())
// Create and output result
def sw = new StringWriter();
def xml = new groovy.xml.MarkupBuilder(sw);
Date current = new Date();
xml.documents(total: files.size().toString(), 'page-size': pageSize, 'page-number': pageNumber) {
files.each() {
document(created: it.get('uploadDate'), 'last-modified': it.get('uploadDate'), name: it.get('dataid')) {
details() {
//detail("john")
//detail("doe")
}
}
}
}
render(text: sw.toString(), contentType: 'application/xml');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment