More Related Content Similar to G* on GAE/J 挑戦編 (20) More from Tsuyoshi Yamamoto (20) G* on GAE/J 挑戦編2. ( )
DTP Web
90%Grails
JGGUG( )
Grails 9-11
Grails Acegi Plugin
http://d.hatena.ne.jp/mottsnite/
11. $ grails create-app eventer
$ cd eventer
grails.project.plugins.dir="work_tmp/plugins"
grails.project.work.dir="work_tmp/work"
development {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:file:work_tmp/devDB;shutdown=true"
14. package org.jggug
class Event {
/** */
String eventName
/** */
Date eventDate
/** */
String eventDesc
/** */
String place
/** */
String groupName
/** */ package org.jggug
String content class EventController {
def scaffold = true
Date dateCreated }
Date lastUpdated
static constraints = {
}
}
16. class Event implements Serializable {
static mapping = {
id generator:'uuid.hex',
params:[type:'string']
}
String id
...
static constraints = {
eventName nullable:false,blank:false
eventDate nullable:false,blank:false
eventDesc nullable:false,blank:false
place nullable:false,blank:false
groupName nullable:false,blank:false
content nullable:false,
blank:false,maxSize:4000
dateCreated display:false
lastUpdated display:false
}
17. event.label =
event.eventName.label =
/** */
String eventName /**(.*)*/n(.*) (.*)
/** */ event.$3.label = $1
Date eventDate
/** */
String eventDesc event.eventName.label =
event.eventDate.label =
event.eventDesc.label =
22. $ grails install-plugin calendar
<head>
<calendar:resources lang="en" theme="tiger"/>
<calendar:datePicker name="eventDate"
defaultValue="${eventInstance?.eventDate}"
dateFormat="%Y/%m/%d" />
25. yui-css ( )
grails install-plugin http://grails.jp/sample/grails-yui-css-2.7.0-M2.zip
grails yui-css
<head> content=”main” “yui-t1”
<meta name="layout" content="main" />
<meta name="layout" content="yui-t1" />
40. $ grails install-plugin app-engine
Do you want to use JPA or JDO for persistence? (jpa, jdo)
jpa
grails-app/conf/
datastore-indexes.xml
persistence.xml
grails-app/conf/Config.groovy GAE
google.appengine.application="jggugv4"
Grails
43. $ grails install-plugin gorm-jpa
resources.groovy entityManagerFactory transactionManager
entityManagerFactory(org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean)
{
beanClassLoader = ref("classLoader")
}
transactionManager(org.springframework.orm.jpa.JpaTransactionManager) {
entityManagerFactory = entityManagerFactory
}
datanucleus-enhancer*.jar
cp $APPENGINE_HOME/lib/tools/orm/datanucleus-enhancer-1.1.4.jar lib
46. def save = {
def eventInstance = new Event(params)
Event.withTransaction{
if(eventInstance.save(flush:true)) {
flash.message = "Event ${eventInstance.id} created"
redirect action:"show", id:eventInstance.id
}
else {
render view:'create', model:[eventInstance:eventInstance]
}
}
}
54. $ grails app-engine package
$ rm target/war/WEB-INF/lib/jul-to-slf4j-1.5.6.jar
$ appcfg.sh update ./target/war
75. import com.google.appengine.api.datastore.Entity
def person = new Entity("person")
person['name'] = " "
println person['name']
person.age = 31
println person.age
//
person.save()
//
person.delete()
//
def q = new Query('person')
def list = datastoreService.prepare(q).asList(
Builder.withLimit(20).offset(0) )
77. <system-properties>
<property name="file.encoding" value="UTF-8"/>
<property name="groovy.source.encoding"
value="UTF-8"/>
</system-properties>