2014年1月1日水曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg Wilson(著)長尾 高弘(翻訳))の15章(データベース)、15.11(練習問題)、1-c, d.をDartで解いてみる。

その他参考書籍

15.11(練習問題)、1-c, d.

コード

sample.dart

import 'dart:html';
import 'dart:indexed_db' as idb;
import 'dart:async' as async;

void main() {
  run.onClick.listen((MouseEvent event){
    pre.text = window.navigator.userAgent + '\n';
    if(idb.IdbFactory.supported){
      window.indexedDB.open('census.db',
          version: 2,
          onUpgradeNeeded: _initializeDatabase)
      .then(_loadFromDB);
    } else {
      pre.text += 'このブラウザではindexedDBは使用出来ません';
    }
  });
  clear.onClick.listen((MouseEvent event) => pre.text = '');
}

ButtonElement run= querySelector('#run_dart');
ButtonElement clear = querySelector('#clear');
PreElement pre = querySelector('#pre0');

async.Future _loadFromDB(idb.Database db){
  var transaction = db.transaction('Density', 'readwrite');
  var object_store = transaction.objectStore('Density');
  object_store.clear();
  data.forEach((var l) =>
      object_store.add({'State':l[0], 'Population':l[1], 'Area': l[2]}));
  pre.text += 'object store: ${object_store.name}\n';
  var cursors = object_store.openCursor(autoAdvance: true).asBroadcastStream();
  cursors.listen((var cursor) {
    pre.text += '${cursor.value}\n';
  });
}

void _initializeDatabase(idb.VersionChangeEvent e) {
  idb.Database db = (e.target as idb.Request).result;
  var object_store = db.createObjectStore('Density',
      keyPath:'State',
      autoIncrement: false);
}

var data = [["ニューファンドランド・ラブラドール州", 512930, 370501.69],
            ["プリンスエドワードアイランド州", 135294, 5684.39],
            ["ノバスコシア州", 908007, 52917.43],
            ["ニューブランズウィック州", 729498, 71355.67],
            ["ケベック州", 7237479, 1357743.08],
            ["オンタリオ州", 11410046, 907655.59],
            ["マニトバ州", 1119583, 551937.87],
            ["サスカチュワン州", 978933, 586561.35],
            ["アルバータ州", 2974807, 639987.12],
            ["ブリティッシュコロンビア州", 3907738, 926492.48],
            ["ユーコン準州", 28674, 474706.97],
            ["ノースウェスト準州", 37360, 1141108.37],
            ["ヌナブト準州", 26745, 1925460.18]];















						

0 コメント:

コメントを投稿