« 2009年01月 | メイン | 2009年05月 »
なぜか、Windows XP Professional で、MySQL Migration Toolkit の 最初のステップ java loader をパスしない。なお、XPの場合「Windows ファイアウォール」のブロック解除を促される。
Windows 2003 server では動作確認できている。
java の version は 1.6.0_11。
根本的な解決ではないものの MySQLMigrationTool.exe にはオプションがあり
cd "C:\Program Files\MySQL\MySQL Tools for 5.0"
MySQLMigrationTool.exe -debug
で最初のステップを進められる。
マイグレーションには、MySQL Migration Toolkit でいけることを確認済み。ただし、全く同じテーブル構造で、全自動でなくINSERTのSQL文を生成させテキストエディタで手修正することが前提。
Lua と呼ばれるスクリプトでマイグレーションを制御できるが、どこまで可能か・記述方法の調査は断念。
業務で稼動している既存システムを切り替える為 停止できる期間は制限付き、人の手作業によるミスのリスクがある。さらにスキーマの設計を見直すための移行フェーズを予定しているため
oracle(スキーマA)
↓MySQL Migration Toolkit
MySQL(スキーマA)
↓?
MySQL(スキーマX)
は保険としておき、一気に新しいスキーマへ変換する際の java バッチアプリを検討。
oracle(スキーマA)
↓java バッチアプリ
MySQL(スキーマX)
全ての型やデータによる振る舞いをコーディングするのは、規則性が高くできればツールなどで自動的に正確なコードを生成させたい。
●Java標準のO/Rマッピング機能「Java Persistence API」
http://itpro.nikkeibp.co.jp/article/COLUMN/20060627/241918/?ST=develop&P=1
●Javaオブジェクトをデータベースへマッピング - Mr. Persister 3.0.1
http://journal.mycom.co.jp/news/2005/09/08/013.html
●Castorでデータバインディングに挑戦
http://www.atmarkit.co.jp/fxml/rensai2/xmltool03/01.html
●Hibernateで理解するO/Rマッピング★重量級
http://www.atmarkit.co.jp/fjava/rensai3/ormap01/ormap01.html
●DbUtils、Persist、Butterfly Persistence
http://d.hatena.ne.jp/Kishi/20081212/1229076102
●Cayenne★★★★
http://www.atmarkit.co.jp/fjava/products/cayenne/cayenne_1.html
●O/RマッピングをサポートするEclipseプラグイン「CROSSFIRE O/R」
http://codezine.jp/a/article/aid/339.aspx
●activeobjects★★
https://activeobjects.dev.java.net/
Modelerと呼ばれる設定ツールでマッピングすると各テーブルを操作するための基底クラスのコードやXML設定ファイルを自動生成する。
http://www.atmarkit.co.jp/fjava/products/cayenne/cayenne_1.html
activeobjects よりは軽快に動作する。基底クラスのコードやXML設定ファイルのカスタマイズも比較的容易。
行を操作する場合は絞込みを工夫しないと大量のメモリを消費する(out of memoryで停止)。
いろいろ勉強になったところで、自分でコーディングしたほうが確実で早いと判断に。
■先払い(チャージ)式電子マネーカード
Edy (電子マネー)
nanaco (ナナコ:セブン-イレブン)
モバイルWAON(モバイルワオン:イオングループ)
■後払い(クレジット)式電子マネーカード
QUICPay(クイックペイ)
VisaTouch(ビザタッチ)
Smartplus(スマートプラス)
■交通機関系ICカード
Suica (スイカ:JR東日本)
PASMO (パスモ:関東の鉄道・バス交通機関)
ICOCA (イコカ:JR西日本)
PiTaPa (ピタパ:関西の鉄道・バス交通機関)
TOICA (トイカ:JR東海)
■航空チケット、マイレージカード
全日空のANAマイレージクラブカード・ANAカード
日本航空のJALカード・JMBカード
■会員証・ポイントカード
club ap (am/pm)
KARUWAZA CLUB (サークルKサンクス)
ヨドバシカメラ(ゴールドポイントカード)
ビックカメラ(ビックポイントカード)
マツモトキヨシ(現金ポイントカード等)
STATUS;
DESC tableName;
DESC tableName fieldName;
テーブル クリエイト 命令もある
SHOW CREATE TABLE tableName;
MySQL Server version: 5.0.27-standard
class APPID_TABLEManager extends Ethna_AppManager{ function &getMeta( $column=null ){ $ethnadb =& $this->backend->getDB(); $peardb =& $ethnadb->db; $statment = "DESC tableName {$column}"; $resultSet = $peardb->getAll( $statment, null, DB_FETCHMODE_ASSOC ); if( PEAR::isError( $resultSet ) ){ $message = $resultSet->getCode().':'.$resultSet->getMessage(); Ethna::raiseWarning( $message ); } return $resultSet; } }あとは、view で、
$manager =& $this->backend->getManager( 'tableName' ); $this->action_form->setApp( 'tableName', $manager->getMeta() );とすれば、template で
<table border=1> <caption>tableName</caption> <tr> <th>項番</th> <th>列名</th> <th>データ型</th> <th>制約</th> </tr> {foreach from=$app.tableName item=p key=c name=x} <tr> <td align=right>{$c}</td> <td align=left>{$p.Field}</td> <td align=left>{$p.Type}</td> <td align=left> {if 'PRI'==$p.Key}PRIMARY KEY{/if} {if 'auto_increment'==$p.Extra}AUTO_INCREMENT{/if} {if 'NO'==$p.Null}NOT NULL{else} {/if} {if ''!=$p.Default}DEFAULT {$p.Default}{else} {/if} </td> </tr> {/foreach} <table>かなりベタ。
class APPID_ActionForm extends Ethna_ActionForm{ var $form_template = array( 'fieldName' => array( 'name' => '列に対するWEBでの表示名', 'required' => false, 'form_type'=> FORM_TYPE_RADIO, 'type' => VAR_TYPE_INT, 'option' => array( '1'=>'A', '2'=>'B', ), ), ~ ); }という具合。さらに、view の継承元で
class APPID_ViewClass extends Ethna_ViewClass{ function _setDefault(&$renderer){ $smarty->assign_by_ref( 'formDef', $this->action_form->getDef() ); } }とすれば、template で↓
APPID_ActionForm extends Ethna_ActionForm{ var $form_template = array( 'fieldName' => array( 'name' => '列に対するWEBでの表示名', 'required' => false, 'form_type'=> FORM_TYPE_RADIO, 'type' => VAR_TYPE_INT, 'option' => array( '1'=>'A', '2'=>'B', ), 'description'=> array( '2択', 'コードで格納 etc...', ), ), ~ ); }このままでは「プラグインがない」とワーニング。
class APPID_Plugin_Validator_Description extends Ethna_Plugin_Validator{ var $accept_array = true; function &validate( $name, $var, $params ){ return $this->ok(); /// 説明なのでなにもしない /// return $this->error('エラーだよ', E_APP_FORM_INVALIDVALUE); } }例えば↓このように出力すればそのままエクセルに貼り付けて・・・
完成例
項番 | 列名 | 属性名 | データ型 | 制約 | カラム説明 |
---|---|---|---|---|---|
0 | cd | cd | int(10) | PRIMARY KEY AUTO_INCREMENT NOT NULL | |
1 | ID | id | varchar(128) | NOT NULL | UNIQUE INDEX |
2 | パスワード | pass | varchar(128) | NOT NULL | MD5 |
3 | クラス | class | int(1) | DEFAULT 0 | 1:A 2:B 2択 コードで格納 etc... |
4 | 更新日時 | xcreate | datetime | ||
5 | 作成日時 | xupdate | datetime |
foreach( $hairetu as $v ){ $v = '更新データ'; }の、$v はコピーなので $v にいくら代入しても 実体の$hairetu には反映されない。正解は↓
foreach( $hairetu as $k => $v ){ $hairetu[$k] = '更新データ'; }か、あるいは php5 以降であれば 参照を明示的に指定できる
foreach( $hairetu as &$v ){ $v = '更新データ'; }
データベース 商品テーブル
CD(primary key) | NAME | PRICE |
aa | apple | \200 |
bb | grape | \100 |
cc | orange | \150 |
0 |
| ||||||
1 |
| ||||||
2 |
|
キー | 値 |
aa | \200 |
bb | \100 |
cc | \150 |
$row = $this->getObjectPropList( '商品テーブル' , $select // SELECT , $where // WHERE , $order // ORDER BY , $offset // OFFSET , $limit // LIMIT ); foreach( $row[1] as $k => $v ) $row[2][$v['CD']] =& $row[1][$k]['PRICE'];とすると $row は↓
foreach( $row[1] as $k => $v ) $row['CD'][$v['CD']] =& $row[1][$k]['PRICE'];イメージは
foreach( $row[1] as $k => $v ) $row[2][$v['CD']] =& $row[1][$k];とすると、記述を統一できる。$row は、
なぜか
「フォーム定義 」
http://ethna.jp/ethna-document-dev_guide-form.html
に「フォーム値の自動検証を行う(プラグイン編) 」
http://ethna.jp/ethna-document-dev_guide-form-validate_with_plugin.html
へのリンクがない。以前作成した file の拡張子チェックは、バリデータプラグインがセオリーのようです↓
Ethna 2.5.0-preview3 +PHP 5.2.6 + MySQL Server 5.1.30
では
$object = $this->backend->getObject( 'viewname', 'cd', 123 );
$object->isValid()
の振る舞いがおかしい。引き当てていながら false となる。
MySQL の view のつもりでgoogle検索しても ethna の view に関するドキュメントばかり・・・
AmaterasERD/UML
ArgoUML
Borland Together
BOUML
CA ERwin Data Modeler(AllFusion ERwin Data Modeler)
CA Gen(AllFusion Gen)
CodeGearシリーズ(RAD Studioなど、旧Delphi/Borland Developer Studioなど)
Cumulate Draw
Data-INTIMATE
DesignSaver
Dynamic Draw
EclipseUML(Free Edition、Studioなど)
Elapiz(Konesa)
Enterprise Architect
ER/Studio
IBM Rationalシリーズ(Data Architect、Software Architect、Software Modelerなど)
Interstage Studio(Interstage Apworks)
JUDE(Biz、Professional、Communityなど)
Microsoft Office Visio
Microsoft Visual Studio
Mind-Designer
OpenMeisterEnterprise
SI Object Browserシリーズ(AP、ERなど)
SystemDirectorシリーズ(Application Modeler UML Editorなど)
Telelogic TAU
TER-MINE
XEAD
Xupper II
ActiveBasic
ACUCOBOL-GT
Adobe ColdFusion
BCC Developer
C++Builder(Borland C++Builder)
CA Gen(AllFusion Gen)
COBOL2002ファミリー
CodeGearシリーズ(RAD Studio、旧Borland Developer Studioなど)
CPad
Delphi
DevPartnerシリーズ(Studio、Java Editionなど)
Eclipse
gcc Developer Station 2000
IBM Enterprise COBOL
IBM Rationalシリーズ(Application Developerなど)
IBM WebSphere Studio
Interstage Studio(Interstage Apworks)
JBuilder
MyEclipse
Micro Focus Net Express/Server Express
Microsoft Visual Studioシリーズ
NetCOBOL
Oracle JDeveloper
Oracle Workshop for Weblogic Platform(BEA Workshop for WebLogic Platform)
PL/SQL Developer
PowerBuilder
SI Object Browserシリーズ(AP、ERなど)
Sun Java Studio/Sun Studio
SystemDirectorシリーズ(Enterpriseなど)
Turboシリーズ
ActiveBasic
ACUCOBOL-GT
Adobe ColdFusion
BCC Developer
C++Builder(Borland C++Builder)
CA Gen(AllFusion Gen)
COBOL2002ファミリー
CodeGearシリーズ(RAD Studio、旧Borland Developer Studioなど)
CPad
Delphi
DevPartnerシリーズ(Studio、Java Editionなど)
Eclipse
gcc Developer Station 2000
IBM Enterprise COBOL
IBM Rationalシリーズ(Application Developerなど)
IBM WebSphere Studio
Interstage Studio(Interstage Apworks)
JBuilder
MyEclipse
Micro Focus Net Express/Server Express
Microsoft Visual Studioシリーズ
NetCOBOL
Oracle JDeveloper
Oracle Workshop for Weblogic Platform(BEA Workshop for WebLogic Platform)
PL/SQL Developer
PowerBuilder
SI Object Browserシリーズ(AP、ERなど)
Sun Java Studio/Sun Studio
SystemDirectorシリーズ(Enterpriseなど)
Turboシリーズ
Visual Windows for BC++
Web Performer
Zend Studio
Agitator
Assam WebBench
Borland Silkperformer
CA Gen(AllFusion Gen)
Checkstyle
clover
Cobertura
DevPartnerシリーズ
e-Load
EMMA
E-SUP AP Test/Web
e-Tester
FindBugs
IBM Rationalシリーズ
Jameleon
JCoverage
JMeter
HP BTO Softwareシリーズ(旧Mercuryシリーズなど)
Microsoft Application Center Test
Microsoft Visual Studioシリーズ
Parasoft シリーズ (C++ test、Jtestなど)
PL/SQL Developer
QALoad
SADEE 2
Selenium
SIMPLIA JFシリーズ
SI Object Browserシリーズ
Solex
SystemDirectorシリーズ(Enterpriseなど)
TestPartner
WebLOAD
WebSPARK
xUnit(JUnit、CUnit、VBUnit、NUnitなど)
CVS
Borland StarTeam
IBM Rationalシリーズ(ClearCase、ClearQuestなど)
mantis
Microsoft Visual Studioシリーズ(Team Foundation Server、Visual SourceSafeなど)
Serena PVCS Professional Suite(PVCS Version Manager)
SourceForge Enterprise Edition
Subclipse
Subversion
Telelogicシリーズ(Change、SYNERGYなど)
TortoiseCVS/SVN
Artemis 7
Compass standard
GanttProject
IBM Rationalシリーズ(Portfolio Managerなど)
JIRA
M1 for Windows
Microsoft Office Project(MS Project)
Microsoft Visual Studioシリーズ
Oracle Project Collaboration
PJMS AxisWave
ProcessDirector
Project Keeper
Select Process Director
Serena PVCS
SourceForge Enterprise Edition
Streber
trac
TUTOS
xDTS
アリエル・エアワン・プロジェクトA