Created
September 17, 2011 19:58
-
-
Save andreaskc/1224300 to your computer and use it in GitHub Desktop.
Grails/Groovy Orbeon Persistence Layer
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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