• 検索結果がありません。

180221_ssql-変換済み

N/A
N/A
Protected

Academic year: 2022

シェア "180221_ssql-変換済み"

Copied!
36
0
0

読み込み中.... (全文を見る)

全文

(1)

SSQL 教育

190218

1

(2)

SuperSQL とは

データベース検索、構造化、メディア変換を統合するシステム

出力を

データ

構造

メディア抽象

3要素に直交分解し、SuperSQLによって3要素を合成

SQL × 構造化 × メディア抽象

2

(3)

SuperSQL とは

SQLの拡張言語

関係DBの出力結果を構造化

短いコードで多彩なレイアウト表現を実現

RDB

SQL Java LDAP

Super SQL

E~cel XML

HTML

3

(4)

もちろん、知ってるかとは思いますが。。。

多彩なレイアウト実現方法

結合子( , ! % )

‘SSQL’ , ‘WIX’ ! ‘RMX’

反復子( [], []!) [teams],

[teams]!

装飾子( @{} )

‘SSQL’@{bgcolor=‘red’}

SSQL WIX RMX

SSQL WIX RMX CS RT A

SSQL

4

(5)

SuperSQL とは

SQLの場合

フラットな表しか得られない!

SQLクエリ

SELECT d.name, e.name, e.salary

FROM dept d, employee e WHERE d.manager = e.manager;

5

(6)

SuperSQL とは

SuperSQLの場合

多彩なレイアウトを実現!

結合子 反復子 装飾子

SuperSQLクエリ

GENERATE HTML

[ s.city@{align=“center”,

bgcolor=“navy”, color=“white”}!

[d.floor, [d.name, [i.name]! ]! ]!

],@{bgcolor=“cyan”, color=“blue”}

FROM shop s,dept d, item i

WHERE i.dept=d.id AND d.shop=s.id 6

(7)

システム概要

SuperSQLQuery

Parser QuerySQL

Data Constructor

CodeGenerator

RDB Flat DBMS

Table Tree

Structured Data Layout Expression

HTML XML PDF EXCEL

DatabaseInterface

7

(8)

内部処理

構文解析部(parser)

ANTLR4(コンパイラコンパイラ、パーサージェネレータ)を用いて実装

クエリをSuperSQLの文法にしたがって解析しSQLクエリとレイア ウ ト情報に分ける

SuperSQLを大きく根本を変えるならここから

ex. 結合子を増やしたい!

ex2. 反復方向を増やしたい!

後で少しいじってもらいま

SuperSQLQuery

Parser QuerySQL

Data Constructor

Code Generator

RDB DBM S Flat

Table Tree

Structured Data Layout Expression

HTML XML PDF EXCEL

DatabaseInterface

8

(9)

内部処理

Data Constructor

構造情報と検索結果を組み合わせる

レイアウトに合わせてデータをリスト 化

SuperSQLQuery

Parser QuerySQL

Data Constructor

Code Generator

RDB Flat DBMS

Table Tree

Structured Data Layout Expression

HTML XML PDF EXCEL

DatabaseInterface

9

(10)

内部処理

コード生成部(code generator)

レイアウト構造に合わせてメディアコードを生

装飾子情報などはここで判別

関数の機能実装は基本ここ

メディアごとに生成部は別実装

SuperSQLQuery

Parser QuerySQL

Data Constructor

CodeGenerator

RDB Flat DBMS

Table Tree

Structured Data Layout Expression

HTML XML PDF EXCEL

DatabaseInterface

10

(11)

演習準備

11

(12)

準備 ~ 必要なファイルの DL~

Homebrewでgitをインストール

eclipseのworkspace ( [$dir]/workspace ) に移動

Githubからコードを取得

$ brew install git

$ cd [$dir]/workspace

$ git clone https://github.com/ssqltatsu/SSQLeduc2019.git

12

(13)

準備 ~ssql の設定 ~

eclipse: ファイル→インポート→既存の

Mavenプロジェクト を選択

SSQLeduc2019を参照

13

(14)

Maven とは

Java用のプロジェクト管理ツール

pom.xmlに色々書くことでビルドの際に色

々してくれる

ライブラリのインポート

ビルドの際にjarを作るなどの設定 などなど…

14

(15)

準備 ~Antlr4 の導入 ~

.bash_profileにエイリアスの登録

alias antlr4='java -Xmx500M -cp "/usr/local/lib/antlr-4.5-complete.jar:

$CLASSPATH" org.antlr.v4.Tool’

を記述

• ANTLRファイルのコンパイル

• cd ssqleduc/src/main/java/supersql/parser

• antlr4 [ファイル名].g4

• eclipse→ssqleducを右クリックリフレッシュ

$ brew install antlr4

$ source ~/.bash_profile

15

(16)

準備 ~ データベース作成 ~

コマンドラインからpostgresqlにアクセス

データベースの作成

作成したデータベース内で以下のコマンドを実行

$ psql postgres

postgres=#create database [ssqleduc2019(任意)]

postgres=#q

$ psql [ssqleduc2019]

ssqleduc2019=#i [$dir]/

workspace/ssqleduc2019/ssqleduc2019_database.sql

16

(17)

準備

ホームディレクトリにconfig.ssqlを作成

vi ~/config.ssql

—————————————————————————————————————————

driver=postgresql

db=[作成したデータベース名]

outdir=[$dir]/workspace/ssqleduc2019/output

—————————————————————————————————————————

17

(18)

Eclipse: 実行

実行方法

実行実行構成

メインプロジェクト:ssqleduc2019 メイン・クラス:supersql.FrontEnd

引数プログラムの引数

-f [$dir]/workspace/ssqleduc2019/input/1.ssql

実行

ssqlファイルが読み込まれて、HTMLファイルが生成されてたら OK!

18

(19)

SuperSQL: 補足

実行時オプション

起動条件等。引数で指定

オプション 役割

-f SuperSQLクエリファイル の読み込み

-d 出力ディレクトリの指定 -o 出力ファイル名の指定 -debug Log.outを出力(デバッグ用)

-ehtml 埋め込み型実行用

19

(20)

Eclipse: 補足

便利なショートカット

複数ファイルの同時検索

検索ファイル

含まれるテキスト:検索ワード ファイル名のパターン:*.java

機能 ショートカットキー

前回の構成で実行 [command]+[shift]+[F11]

コメントアウト [command]+/

文字列検索 [command]+f 宣言を開く [command]+k

20

(21)

( ちょっと早いですが ) お昼休み !!!

21

(22)

演習

22

(23)

演習 ①

GENERATE HTML

[link(d.name, ‘emp.ssql’, d.id)]!

FROM dept d

FOREACH d.id GENERATE HTML

[m.name, [e.name, e.salary],]!

FROM dept d, employee e, employee m

WHERE d.manager = m.id AND e.manager = m.id

query.g4

Parser

query.g4prefix.g4で文法を決めている prefix.g4

23

(24)

演習 ①

文法ルール(parse rules)と語彙(lexer rules)を定義して いる

ルール名 : ルール内容 の形になってい る ルール名小英文字で定義

lexer rule…大英文字で定義

表現 内容

? 0 or 1

+ 1回以上

* 0回以上

| OR 24

(25)

演習 ①

やること

現在の複合反復子のパターン

複合反復子のパターンを増やそう!

• 6パターンしかない複合反復子を12パターンに増やす とりあえず、1~12.ssqlのパーズが通ればOK

[ TFE ],2! [ TFE ],2!3% [ TFE ],2%

[ TFE ]!2, [ TFE ]!2,3% [ TFE ]!2%

25

(26)

ヒント

定義方法(再掲)

ルール名:小英文字で定義

lexer rule:大英文字で定義

( tatsu )? →tatsuというrule0または1

( tatsu )* →tatsuというrule0回以上

( tatsu )+ →tatsuというruleが1回以上

TFEの記述ルールを定義 supersql/parser/query.g4

複合反復子を定義しているところは?composite_iteratorルール

[TFE],2! [ TFE ],2!3% [ TFE ],2%

[ TFE ]!2, [ TFE ]!2,3% [ TFE ]!2%

[ TFE ],2%3!

[ TFE ]!2%3, [ TFE ]%2, [ TFE ]%2,3! [ TFE ]%2! [ TFE ]%2!3,

26

(27)

composite_iteratorルールを編集

こんな感じにできてればOK

答え

27

(28)

ちなみに

定義したparserは基本はクエリに何が書か れ ているか判断するだけ

SuperSQLが必要なLayout Expressionは作ってくれない その後の処理はもちろんやってくれない

新しい定義に対して機能を付けるには?

28

(29)

システム概要

SuperSQLQuery

Parser QuerySQL

Data Constructor

CodeGenerator

RDB Flat DBMS

Table Tree

Structured Data Layout Expression

HTML XML

DatabaseInterface

定義したルールが正しくLayout Expressionに入るように処理

出力したいHTMLタグ (HTMLなら)を生成

PDF EXCEL

29

(30)

演習② ~ 関数の作成 ~

HTML, Mobile_HTML5, Unity,XML…

出力形式を増やす場合は、

supersql.codegenerator.◯◯◯

のようなコード生成のクラス群を作る

supersql.codegenerator.Mobile_HTML5

• Mobile_HTML5Attribute:HTMLタグの属性を書いたりする

• Mobile_HTML5C1, C2,…,G1,…:レイアウト式毎の各処理

• Mobile_HTML5Env:出力機構の環境。装飾子を作れる。

• Mobile_HTML5Function:関数を作れる。image, link関数など

• Mobile_HTML5Manager:ファイルを生成して文字列を出力 30

(31)

演習② ~ 関数の作成 ~

新しい関数を作ろう

GENERATE HTML_bootstrapを使用

簡単にbootstrapの機能を実現

http://getbootstrap.com/javascript/

31

(32)

演習② ~ 関数の作成 ~

GENERATE HTML_bootstrap

[image_pop(e.name, e.image, ’./image’, ’left’)]!

新しい関数を作ろう

マウスオーバーしたら画像がポップアッ プする関数

マウスオーバー時に ポップアップする画像

FROM employee e;

画像がポップ アップする 方向を指定 画像のpath

を指定

32

(33)

ヒント

すべきこと

Code Generatorのどこかに関数の追加

/output/jscss/supersql.jsでjs側の挙 動を指定 マニュアルを読んで参考にしてみよう!

https://bootstrapdocs.com/v3.3.6/docs/javascript/#t ooltips

33

(34)

ヒント

関数をなにか追加したい Mobile_HTML5Function.java

関数名の判別が必要

image

SuperSQLには、 関数などが多数の関数が存在

関数の引数の取得+HTMLに必要なタグを記述している

他のわかりやすい関数を参考にしてみよう

34

(35)

Mobile_HTML5Fuction.java

workメソッド内

Func_image_pop関数の実装

答え

35

(36)

答え

supersql.js

36

参照

関連したドキュメント

5.3 コンフィグレーションファイルのスキーマの変更について 5

[PC ~/vmware-player-distrib]$ 図 3.8 vmware-install.pl でのインストール方法

シェープファイルフォルダ (入力)

シェープファイルフォルダ (入力)

エラー項目一覧 出力ログに表示されるエラーは、以下の通りです。 種別 メッセージ/概要 「標準スキーマ定義ファイルの読み込みに失敗しました」 実行ディレクトリの conf

用語解説

Debug オブジェクトに依るデバッグ コードのデバッグに使用するメソッドとプロパティのセットを提供するオブジェクト

Debug オブジェクトに依るデバッグ コードのデバッグに使用するメソッドとプロパティのセットを提供するオブジェクト