2012-04-23 2 views
0

Я создал следующий скрипт в папке сценария, используя netbeans. Я не могу сохранить класс домена. Кроме того, если я развертываю весь проект в качестве военного файла, могу ли я запустить скрипт с помощью планировщика Windows?Groovy Script save класс домена

Script

def json = "" 
def txt = new URL("http://free.worldweatheronline.com/feed/weather.ashx?q=Singapore,Singapore&format=xml&num_of_days=1&key=b674fb7e94131612112609").text 
def records = new XmlSlurper().parseText(txt) 
def weather = records.weather 
def dates = weather.date 
def min = weather.tempMinC 
def max = weather.tempMaxC 
def img = weather.weatherIconUrl 
def desc = weather.weatherDesc 
def descLink = desc.toString().replaceAll(" ","%20") 
println max 
Weathers w = new Weathers() 
w.cityName="singapore" 
w.day = dates 
w.description =desc 
w.max = max 
w.img = img 
w.min = min 
w.url = "jk" 

класс Domain

package org.mPest 

class Weathers { 
    int id 
    String day 
    String min 
    String max 
    String img 
    String description 
    String cityName 
    String url 

static constraints = { 
    id(blank:false, unique:true) 
    cityName(blank:false) 
    url(blank:false) 

} 

}

ответ

0

Вы не можете использовать классы домена напрямую.

См this FAQ читать, как использовать классы домена из src/groovy:

import org.codehaus.groovy.grails.commons.ApplicationHolder 
//… 
def book = ApplicationHolder.application.getClassForName("library.Book").findByTitle("Groovy in Action") 

Я не знаю, если это возможно, чтобы вести войну упакованный сценарий из окна, но вы можете использовать Grails Quartz plugin запланировать задачу ...

0

Посмотрите на grails run-script command. Вы должны иметь возможность использовать это для выполнения сценария, используя что-то вроде планировщика окон или cron, но для выполнения сценария, который должен выполнить сценарий, вы должны иметь полный исходный код (а не файл войны).

0

В Grails 2.x вы должны использовать Держатели вместо ApplicationHolder. Например:

import grails.util.Holders 
def validKeys = Holders.grailsApplication.getClassForName("com.vcd.Metadata").findAll { it.metadataKey }*.metadataKey