2012年5月26日土曜日

groovyとMongoHQのREST APIで、コレクションを一覧表示する

groovyとMongoHQのREST APIで、コレクションを一覧表示するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import groovy.json.*

def _apikey = "your-key"
def base = "https://api.mongohq.com/databases"
def db = "mydb"
def httpclient = new DefaultHttpClient()
def method = new HttpGet("${base}/${db}/collections?_apikey=${_apikey}")
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
def json = new JsonSlurper().parseText(response.getEntity().getContent().text)
for(col in json){
  println "name:${col.name}"
  println "storageSize:${col.storageSize}"
}

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月24日木曜日

groovyとMongoHQのREST APIで、コレクションを削除する

groovyとMongoHQのREST APIで、コレクションを削除するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.entity.*
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.protocol.*
import groovy.json.*

def _apikey = "your-key"
def base = "https://api.mongohq.com/databases"
def db = "mydb"
def col = "your-collection"

httpclient = new DefaultHttpClient()
method = new HttpDelete("${base}/${db}/collections/${col}?_apikey=${_apikey}")
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月22日火曜日

groovyとMongoHQのREST APIで、コレクション内のドキュメントを削除する

groovyとMongoHQのREST APIで、コレクション内のドキュメントを削除するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.entity.*
import groovy.json.*

def _apikey = "your-key"
def base = "https://api.mongohq.com/databases"
def db = "mydb"
def col = "employee"
def doc_id = "your-document-id"

def httpclient = new DefaultHttpClient()
def method = new HttpDelete(
  "${base}/${db}/collections/${col}/documents/${doc_id}?_apikey=${_apikey}")
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月21日月曜日

groovyとmongolabのREST APIで、コレクションを列挙する

groovyとmongolabのREST APIで、コレクションを列挙するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import groovy.json.*

def apikey = "your-key"
def base = "https://api.mongolab.com/api/1"
def db = "mydb"
def httpclient = new DefaultHttpClient()
def method = new HttpGet("${base}/databases/${db}/collections?apiKey=${apikey}")
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
def json = new JsonSlurper().parseText(response.getEntity().getContent().text)
for(col in json){
  println "name:${col}"
}

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月20日日曜日

groovyとMongoHQのREST APIで、コレクション内のドキュメントを更新する

groovyとMongoHQのREST APIで、コレクション内のドキュメントを更新するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.entity.*
import groovy.json.*

def _apikey = "your-key"
def base = "https://api.mongohq.com/databases"
def db = "mydb"
def col = "employee"
def doc_id = "your-document-id"
def json = new JsonBuilder()
json (
  document:[
    '$set': ["name":"テスト2"]
  ],
  safe:true
)

def httpclient = new DefaultHttpClient()
def method = new HttpPut(
  "${base}/${db}/collections/${col}/documents/${doc_id}?_apikey=${_apikey}")
method.setHeader("Content-Type", "application/json; charset=utf-8")
method.setEntity(new StringEntity(json.toString(), "UTF-8"))
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月19日土曜日

groovyとmongolabのREST APIで、コレクション内のドキュメントを削除する

groovyとmongolabのREST APIで、コレクション内のドキュメントを削除するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.entity.*
import groovy.json.*

def apikey = "your-key"
def base = "https://api.mongolab.com/api/1"
def db = "mydb"
def col = "employee"
def doc_id = "your-document-id"

def httpclient = new DefaultHttpClient()
def method = new HttpDelete(
  "${base}/databases/${db}/collections/${col}/${doc_id}?apiKey=${apikey}")
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月18日金曜日

groovyとMongoHQのREST APIで、コレクション内のドキュメントを取得する

groovyとMongoHQのREST APIで、コレクション内のドキュメントを取得するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import groovy.json.*

def _apikey = "your-key"
def base = "https://api.mongohq.com/databases"
def db = "mydb"
def col = "employee"
def doc_id = "your-document-id"
def params = "_apikey=${_apikey}"
def httpclient = new DefaultHttpClient()
def method = new HttpGet("${base}/${db}/collections/${col}/documents/${doc_id}?${params}")
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
def content = new InputStreamReader(
  response.getEntity().getContent(), "UTF-8").text
def json = new JsonSlurper().parseText(content)
println json.employeeno
println json.name

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月17日木曜日

groovyとmongolabのREST APIで、コレクション内のドキュメントを更新する

groovyとmongolabのREST APIで、コレクション内のドキュメントを更新するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.entity.*
import groovy.json.*

def apikey = "your-key"
def base = "https://api.mongolab.com/api/1"
def db = "mydb"
def col = "employee"
def doc_id = "your-document-id"
def json = new JsonBuilder()
json (
  '$set': ["name":"テスト2"]
)

def httpclient = new DefaultHttpClient()
def method = new HttpPut(
  "${base}/databases/${db}/collections/${col}/${doc_id}?apiKey=${apikey}")
method.setHeader("Content-Type", "application/json; charset=utf-8")
method.setEntity(new StringEntity(json.toString(), "UTF-8"))
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月16日水曜日

groovyとMongoHQのREST APIで、コレクション内のドキュメントを検索する

groovyとMongoHQのREST APIで、コレクション内のドキュメントを検索するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import groovy.json.*

def _apikey = "your-key"
def base = "https://api.mongohq.com/databases"
def db = "mydb"
def col = "employee"
def params = "_apikey=${_apikey}&q=" +
  URLEncoder.encode("{employeeno:\"1234\"}", "UTF-8")
def httpclient = new DefaultHttpClient()
def method = new HttpGet("${base}/${db}/collections/${col}/documents?${params}")
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
def content = new InputStreamReader(
  response.getEntity().getContent(), "UTF-8").text
def json = new JsonSlurper().parseText(content)
for(employee in json){
  println employee.employeeno
  println employee.name
}

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月15日火曜日

groovyとmongolabのREST APIで、コレクション内のドキュメントを取得する

groovyとmongolabのREST APIで、コレクション内のドキュメントを取得するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import groovy.json.*

def apikey = "your-key"
def base = "https://api.mongolab.com/api/1"
def db = "mydb"
def col = "employee"
def doc_id = "your-document-id"
def params = "apiKey=${apikey}"
def httpclient = new DefaultHttpClient()
def method = new HttpGet("${base}/databases/${db}/collections/${col}/${doc_id}?${params}")
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
def content = new InputStreamReader(
  response.getEntity().getContent(), "UTF-8").text
def json = new JsonSlurper().parseText(content)
println json.employeeno
println json.name


動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月14日月曜日

groovyとMongoHQのREST APIで、コレクション内にドキュメントを作成する

groovyとMongoHQのREST APIで、コレクション内にドキュメントを作成するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.entity.*
import groovy.json.*

def _apikey = "your-key"
def base = "https://api.mongohq.com/databases"
def db = "mydb"
def col = "employee"
def json = new JsonBuilder()
json (
  document:[
    employeeno:"1234",
    name:"test1"
  ],
  safe:true
)

def httpclient = new DefaultHttpClient()
def method = new HttpPost("${base}/${db}/collections/${col}/documents?_apikey=${_apikey}")
method.setHeader("Content-Type", "application/json")
method.setEntity(new StringEntity(json.toString()))
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月13日日曜日

groovyとmongolabのREST APIで、コレクション内のドキュメントを検索する

groovyとmongolabのREST APIで、コレクション内のドキュメントを検索するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import groovy.json.*

def apikey = "your-key"
def base = "https://api.mongolab.com/api/1"
def db = "mydb"
def col = "employee"
def params = "apiKey=${apikey}&q=" +
  URLEncoder.encode("{employeeno:\"1234\"}", "UTF-8")
def httpclient = new DefaultHttpClient()
def method = new HttpGet("${base}/databases/${db}/collections/${col}?${params}")
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
def content = new InputStreamReader(
  response.getEntity().getContent(), "UTF-8").text
def json = new JsonSlurper().parseText(content)
for(employee in json){
  println employee.employeeno
  println employee.name
}

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月12日土曜日

groovyとMongoHQのREST APIで、コレクションを作成する

groovyとMongoHQのREST APIで、コレクションを作成するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.entity.*
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.message.*
import org.apache.http.protocol.*
import groovy.json.*

def _apikey = "yourkey"
def base = "https://api.mongohq.com/databases"
def db = "mydb"
def col = "employee"

httpclient = new DefaultHttpClient()
method = new HttpPost("${base}/${db}/collections?_apikey=${_apikey}")
values = [
  new BasicNameValuePair('name', col)
]
method.setEntity(new UrlEncodedFormEntity(values, HTTP.UTF_8))
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月11日金曜日

groovyとmongolabのREST APIで、コレクションにドキュメントを作成する

groovyとmongolabのREST APIで、コレクションにドキュメントを作成するには、以下のコードを実行します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.1.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.entity.*
import groovy.json.*

def apikey = "yourkey"
def base = "https://api.mongolab.com/api/1"
def db = "mydb"
def col = "employee"
def json = new JsonBuilder()
json (
  [
    employeeno:"1234",
    name:"test1"
  ],
  [
    employeeno:"5678",
    name:"test2"
  ]
)

def httpclient = new DefaultHttpClient()
def method = new HttpPost("${base}/databases/${db}/collections/${col}?apiKey=${apikey}")
method.setHeader("Content-Type", "application/json")
method.setEntity(new StringEntity(json.toString()))
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
println response.getEntity().getContent().text

動作環境
groovy 1.8.6

関連情報
groovyとMongoDBのまとめ

2012年5月9日水曜日

grailsとcloud foundryで画像加工・変換サービス

grailsとcloud foundryで画像加工・変換サービスを作ってみました。ちょっとした画像加工などにご利用どうぞ。 以下のリンクからアクセスできます。 gImageConverter

2012年5月1日火曜日

grailsとjsPlumbでコネクター上にダイヤモンド形を描画する

grailsとjsPlumbでコネクター上にダイヤモンド形を描画するには、以下の手順を実行します。

1. ApplicationResources.groovyでモジュールを宣言
modules = {
    application {
        resource url:'js/application.js'
    }
    // jsPlumbのモジュールを宣言
    jsplumb {
      dependsOn 'jquery-ui'
      resource url: 'js/jquery.jsPlumb-1.3.7-all-min.js', disposition:'head'
    }
}
コマンドでgrails install-plugin jquery-uiを実行してjQuery UI pluginをインストールしておきます。 jquery.jsPlumb-1.3.7-all-min.jsはweb-app/jsに配置します。

2. main.gspに以下のようにr:requireを使用してリソースを導入します。
  <g:layoutHead/>
  <!-- jsPlumbを使用 -->
  <r:require module="jsplumb"/>
        <r:layoutResources />
 </head>
3. viewに以下のようなコードを追加します。
<!-- jsPlumb -->
<div id="jsplumb" style="width: 300px; height:200px; background-color: #dddddd;">jsPlumb
 <div id="node0" style="width:50px; height:50px; background-color: #7799dd; position: absolute;">
 </div>
 <div id="node1" style="width:50px; height:50px; background-color: #ffff99;position: absolute;">
 </div>
</div>
<script type="text/javascript">
  $(function(){
    // レンダーモードを設定
    jsPlumb.setRenderMode(jsPlumb.CANVAS);
    // unload処理
    $("body").unload(function(){
      jsPlumb.unload();
    });

    jsPlumb.Defaults.Container = "jsplumb";

    // endpointの作成と配置
    $("#node0").css("left", $("#jsplumb").position().left + 10);
    $("#node0").css("top", $("#jsplumb").position().top + 40);
    var node0 = jsPlumb.addEndpoint("node0", {anchor:"AutoDefault", endpoint:["Blank"]});
    $("#node1").css("left", $("#jsplumb").position().left + 240);
    $("#node1").css("top", $("#jsplumb").position().top + 140);
    var node1 = jsPlumb.addEndpoint("node1", {anchor:"AutoDefault", endpoint:["Blank"]});

    // endpointsを接続(overlaysでdiamondを指定する)
    jsPlumb.connect({
      source:node0, target:node1, 
      overlays:[["Diamond", {location:0.5, width:30, length:30}]]
    });

  });
</script>
出力画面

動作環境
grails 2.0.1

関連情報
jsPlumbのホームページ
http://jsplumb.org/jquery/demo.html

groovyとPostgreSQLでテーブルスペースを一覧表示する

groovyとPostgreSQLでテーブルスペースを一覧表示するには、以下のコードを実行します。
@Grab(group='postgresql', module='postgresql', version='9.1-901.jdbc4')
import groovy.sql.Sql

sql = Sql.newInstance(
  "jdbc:postgresql://localhost:5432/postgres", 
   "postgres",
   "postgres", 
   "org.postgresql.Driver")

query = """
select
  spcname,  -- テーブルスペース名
  spcowner,  -- テーブルスペースのオーナーのoid
  spclocation  -- テーブルスペースのディレクトリ
from
  pg_tablespace
order by spcname
"""

sql.eachRow(query){
    println "${it.spcname},${it.spcowner},${it.spclocation}"
}

動作環境
groovy 1.8.6, JDK7 Update4, PostgreSQL 9.1