2010年12月4日土曜日

groovyとApache ClickでResetを使用する

groovyとApache ClickでResetを使用するには、以下のコードを実行します。

1.ページクラス
ResetTest.groovy
package com.blogspot.groovyarekore.click

import org.apache.click.*
import org.apache.click.control.*

class ResetTest extends Page
{
def form = new Form("form")

public ResetTest()
{
form.add(new TextField("field1", "フィールド1"));
form.add(new TextField("field2", "フィールド2"));
form.add(new Submit("ok", "OK", this, "onOkClick"));
form.add(new Reset("reset", "クリア"));
addControl(form)
}
def onOkClick()
{
addModel("msg1", "${form.getFieldValue("field1")}")
addModel("msg2", "${form.getFieldValue("field2")}")
return true
}
}

2.HTMLページ
reset-test.htm
<html>
<head><title>reset test</title></head>
$headElements
<body>
#if ($msg1)
$msg1<br />
$msg2
#else
$form<br />
#end
$jsElements
</body>
</html>

ブラウザから以下のURLにアクセスします。
http://localhost:8080/(warの名前)/reset-test.htm

動作環境
JDK6 Update22, Groovy 1.7.5, Apache Click 2.2.0, Apache Tomcat 7.0.4

関連情報
ビルドの仕方などは「groovyとApache ClickでHello Worldを作成する 」を参照
http://groovyarekore.blogspot.com/2010/11/groovyapache-clickhello-world.html

2010年12月3日金曜日

groovyとApache ClickでSelectを使用して複数選択リストボックスを表示する

groovyとApache ClickでSelectを使用して複数選択リストボックスを表示するには、以下のコードを実行します。

1.ページクラス
MultiselectTest.groovy
package com.blogspot.groovyarekore.click

import org.apache.click.*
import org.apache.click.control.*

class MultiselectTest extends Page
{
def form = new Form("form")

public MultiselectTest()
{
def sel = new Select("multiselect", "オプション選択")
sel.setMultiple(true)
sel.setSize(3)
sel.add(new Option("opt1", "オプション1"))
sel.add(new Option("opt2", "オプション2"))
sel.add(new Option("opt3", "オプション3"))
form.add(sel);
form.add(new Submit("ok", "OK", this, "onOkClick"));
addControl(form)
}
def onOkClick()
{
def values = ""
for(val in form.getControl("multiselect").getSelectedValues()){
values += (values.length()!=0)?", "+val:val
}
addModel("msg1", "オプションは${values}です")
return true
}
}

2.HTMLページ
multiselect-test.htm
<html>
<head><title>multi select test</title></head>
$headElements
<body>
#if ($msg1)
$msg1<br />
#else
$form<br />
#end
$jsElements
</body>
</html>

ブラウザから以下のURLにアクセスします。
http://localhost:8080/(warの名前)/multiselect-test.htm

出力画面


動作環境
JDK6 Update22, Groovy 1.7.5, Apache Click 2.2.0, Apache Tomcat 7.0.4

関連情報
ビルドの仕方などは「groovyとApache ClickでHello Worldを作成する 」を参照
http://groovyarekore.blogspot.com/2010/11/groovyapache-clickhello-world.html

groovyとoracleでディレクトリオブジェクトのオブジェクト権限を付与する

groovyとoracleでディレクトリオブジェクトのオブジェクト権限を付与するには、以下のコードを実行します。

import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:oracle:thin:@oraclesrv:1521:orcl",
"system",
"manager",
"oracle.jdbc.driver.OracleDriver")

// ディレクトリオブジェクトに対し、読み書きの権限を与える
// (external_tablesディレクトリへの読み書きをtestユーザに付与)
sql.execute("""grant read, write on directory
external_tables to test""")

// 付与した権限を確認
query = """
select * from all_tab_privs
where grantee = 'TEST' and table_name = 'EXTERNAL_TABLES'
"""
sql.eachRow(query){
println("${it.grantee},${it.table_name},${it.privilege}")
}


動作環境
groovy 1.7.5, JDK6 Update22, Oracle11g R2

2010年12月2日木曜日

groovyとApache ClickでSelectを使用してドロップダウンリストを表示する

groovyとApache ClickでSelectを使用してドロップダウンリストを表示するには、以下のコードを実行します。

1.ページクラス
Select1Test.groovy
package com.blogspot.groovyarekore.click

import org.apache.click.*
import org.apache.click.control.*

class Select1Test extends Page
{
def form = new Form("form")

public Select1Test()
{
def sel = new Select("select1", "オプション選択")
sel.add(new Option("opt1", "オプション1"))
sel.add(new Option("opt2", "オプション2"))
sel.add(new Option("opt3", "オプション3"))
form.add(sel);
form.add(new Submit("ok", "OK", this, "onOkClick"));
addControl(form)
}
def onOkClick()
{
addModel("msg1", "オプションは${form.getFieldValue("select1")}です")
return true
}
}

2.HTMLページ
select1-test.htm
<html>
<head><title>select1 test</title></head>
$headElements
<body>
#if ($msg1)
$msg1<br />
#else
$form<br />
#end
$jsElements
</body>
</html>

ブラウザから以下のURLにアクセスします。
http://localhost:8080/(warの名前)/select1-test.htm

出力画面


動作環境
JDK6 Update22, Groovy 1.7.5, Apache Click 2.2.0, Apache Tomcat 7.0.4

関連情報
ビルドの仕方などは「groovyとApache ClickでHello Worldを作成する 」を参照
http://groovyarekore.blogspot.com/2010/11/groovyapache-clickhello-world.html

2010年12月1日水曜日

groovyとgooglechartwrapperでグラフの背景色を指定する

groovyとgooglechartwrapperでグラフの背景色を指定するには、以下のコードを実行します。

import java.awt.*
import java.net.*
import javax.imageio.*
import de.toolforge.googlechartwrapper.*
import de.toolforge.googlechartwrapper.data.*
import de.toolforge.googlechartwrapper.label.*
import de.toolforge.googlechartwrapper.util.*
import de.toolforge.googlechartwrapper.style.*
import de.toolforge.googlechartwrapper.coder.*
import de.toolforge.googlechartwrapper.color.*

// 棒グラフ
bc = new BarChart(
new Dimension(250, 250),
BarChart.BarChartOrientation.Horizontal,
BarChart.BarChartStyle.Grouped)
bc.setEncoder(EncoderFactory.getEncoder(
EncodingType.TextEncoding))

// 背景色を設定
bc.addSolidFill(
new SolidFill(
SolidFill.ChartFillDestination.Background,
new Color(0xe0, 0xe0, 0xd0)
)
)

// 値は0-100
data = new BarChartDataSerie.BarChartDataSerieBuilder(
[30, 50, 80, 75, 90]).build()
bc.addBarChartDataSerie(data)

// X軸
xa = new AxisLabelContainer(AxisType.XAxis)
xa.setAxisRange(new AxisRange(0, 5, 1))
bc.addAxisLabelContainer(xa)

// Y軸
ya = new AxisLabelContainer(AxisType.YAxis)
ya.setAxisRange(new AxisRange(0, 100))
bc.addAxisLabelContainer(ya)

bc.setBarWidthAndSpacing(
BarWidthAndSpacing.newAutomaticallyResize())

// URLを取得
println bc.getUrl()
// 画像として保存
bi = MiscUtils.getBufferedImage(bc)
ImageIO.write(bi, "png", new File ("barchart4.png"))



実行画面


※以下のjarを$GROOVY_HOME/libにコピー
googlechartwrapper_1.1.jar

動作環境
groovy 1.7.5, JDK6 Update22, googlechartwrapper 1.1

関連情報
googlechartwrapperのwebサイト
http://code.google.com/p/googlechartwrapper/

groovyとApache ClickでRadioGroup/Radioを使用する

groovyとApache ClickでRadioGroup/Radioを使用するには、以下のコードを実行します。

1.ページクラス
RadioTest.groovy
package com.blogspot.groovyarekore.click

import org.apache.click.*
import org.apache.click.control.*

class RadioTest extends Page
{
def form = new Form("form")

public RadioTest()
{
def rg = new RadioGroup("radiogroup1", "サイズ")
rg.add(new Radio("small", "小"))
rg.add(new Radio("medium", "中"))
rg.add(new Radio("large", "大"))
rg.setValue("medium")
form.add(rg);
form.add(new Submit("ok", "OK", this, "onOkClick"));
addControl(form)
}
def onOkClick()
{
addModel("msg1", "選んだサイズは${form.getFieldValue("radiogroup1")}です")
return true
}
}

2.HTMLページ
radio-test.htm
<html>
<head><title>radio test</title></head>
$headElements
<body>
#if ($msg1)
$msg1<br />
#else
$form<br />
#end
$jsElements
</body>
</html>

ブラウザから以下のURLにアクセスします。
http://localhost:8080/(warの名前)/radio-test.htm

出力画面


動作環境
JDK6 Update22, Groovy 1.7.5, Apache Click 2.2.0, Apache Tomcat 7.0.4

関連情報
ビルドの仕方などは「groovyとApache ClickでHello Worldを作成する 」を参照
http://groovyarekore.blogspot.com/2010/11/groovyapache-clickhello-world.html

groovyとoracleで外部表を作成する

groovyとoracleで外部表を作成するには、以下のコードを実行します。

import groovy.sql.Sql

sql = Sql.newInstance(
"jdbc:oracle:thin:@oraclesrv:1521:orcl",
"system",
"manager",
"oracle.jdbc.driver.OracleDriver")

// 外部表を作成する
query = """
create table dept_lookup
(
dept_id NUMBER(4),
dept_name VARCHAR2(20)
)
organization external
(
type oracle_loader
default directory external_tables
access parameters
(
records delimited by newline
fields terminated by ',' optionally enclosed by '"'
(
dept_id,
dept_name
)
)
location('dept_lookup.csv')
)
"""
sql.execute(query)

// 外部表をselect
sql.eachRow("select * from dept_lookup"){
println("${it.dept_id},${it.dept_name}")
}

// 外部表をdrop
sql.execute("drop table dept_lookup")


動作環境
groovy 1.7.5, JDK6 Update22, Oracle11g R2