반응형
금융권( 특히 1금융 )의 사이트들에서는 물리모델을 생성할때 DDL문을 바로 사용하지 않습니다.
ERD를 그리고, META와 연동하여 모델을 관리하고, META에서 생성된 DDL스크립트를 이용하여 물리모델을 생성합니다.
컬럼매핑정의서를 이용하여 ERD를 그리는 프로그램입니다.
모델 객체는 생성되지만, Realation은 직접 그리셔야 합니다.
※ ERD 일괄등록 문서라 함은, ER-Win에서 제공하는 Accerator의 양식을 의미합니다.
■ SOURCE
private final static int T테이블 = 16;
private final static int 상태 = 23;
public static void main(String[] args) {
System.out.println( "■ ERD 등록문서 생성 START" );
ArrayList<ArrayList<String>> arr2AT = TxtFile.readArr2AT( "C:/workspace/컬럼매핑정의서/컬럼매핑정의서.dat" ); // 컬럼매핑정의서 READ
// ERD Template
String strERD = "Subject Name, Entity Name, Table Name, Entity Definition, Attribute Name, Column Name, Domain Name, Data Type, Attribute Definition, PK, Not Null, Logical Only";
int iERD = strERD.split( "," ).length;
HashMap<String, ArrayList<ArrayList<String>>> ma2ERD = new HashMap<String, ArrayList<ArrayList<String>>>();
String strDataType = ""; // 컬럼의 DataType
String strNNL = ""; // NotNull
for( int i = 0; i < arr2AT.size(); i++ ) {
ArrayList<String> arrATRow = arr2AT.get( i );
if( arrATRow.get( 상태 ).contains( "삭제" ) ) continue;
ArrayList<ArrayList<String>> arr2ERD = new ArrayList<ArrayList<String>>(); // ERD 등록대상
ArrayList<String> arrERDRow = new ArrayList<String>();
// ERD전체파일
// if( ma2ERD.containsKey( arrATRow.get( T테이블 ) ) ) arr2ERD = ma2ERD.get( arrATRow.get( T테이블 ) );
if( ma2ERD.containsKey( "ALL" ) ) arr2ERD = ma2ERD.get( "ALL" );
// ERD Template로 생성
for( int k = 0; k < iERD; k++ ) arrERDRow.add( "" );
// Data-Type 가공
if( !arrATRow.get( 20 ).trim().isEmpty() ) {
strDataType = arrATRow.get( 20 );
if( !arrATRow.get( 21 ).trim().isEmpty() ) {
strDataType += "(" + arrATRow.get( 21 );
if( arrATRow.get( 22 ).trim().isEmpty() ) strDataType += ")";
else strDataType += "," + arrATRow.get( 22 ) + ")";
}
}
// NotNull 가공
if( !arrATRow.get( 11 ).trim().isEmpty() ) strNNL = "NotNull";
// Data Setting
arrERDRow.add( 0, "대외" ); // Subject Name
arrERDRow.add( 1, arrATRow.get( 17 ) ); // Entity Name*
arrERDRow.add( 2, arrATRow.get( 16 ) ); // Table Name
arrERDRow.add( 3, arrATRow.get( 17 ) ); // Entity Definition( Entity Name )
arrERDRow.add( 4, arrATRow.get( 19 ) ); // Attribute Name*
arrERDRow.add( 5, arrATRow.get( 18 ) ); // Column Name
// arrERDRow.add( 6, "" ); // Domain Name
arrERDRow.add( 7, strDataType ); // Data Type
arrERDRow.add( 8, arrATRow.get( 25 ) ); // Attribute Definition
arrERDRow.add( 9, arrATRow.get( 12 ) ); // PK
arrERDRow.add( 10, strNNL ); // Not Null
// arrERDRow.add( 11, "N" ); // Logical Only
arr2ERD.add( arrERDRow );
ma2ERD.put( "ALL", arr2ERD );
}
for( String strKey : ma2ERD.keySet() ) {
XlsFile.writeArr2( "C:/workspace/컬럼매핑정의서/#ERDby테이블/ERD_등록문서_" + strKey, strERD, ma2ERD.get( strKey ) );
}
System.out.println( " - ERDby테이블 등록문서 생성 : " + ma2ERD.size() );
}
소스가 좀 지저분 합니다.
소스의 기본 구조는 테이블별로 ER-Win등록양식 파일로 각각 만드는 구조입니다.
이를 전체테이블을 하나의 파일로 만들기 위해 (임시로) 적용하다보니 좀 이상한 구조를 가지게 되었습니다.
ERD작업은 최초에 한번은 전체 테이블을 일괄로 Upload하여 생성하고, 이후에는 필요시마다 테이블 단위로 Upload하여 갱신합니다. 위의 소스는 '전체 테이블'을 ERD로 생성하기 위한 소스입니다.
// 테이블단위로 ERD등록문서 생성
// if( ma2ERD.containsKey( arrATRow.get( T테이블 ) ) ) arr2ERD = ma2ERD.get( arrATRow.get( T테이블 ) );
소스에서 위와 같이 '테이블단위로 ERD등록문서 생성'이라고 주석처리된 소스가 있습니다.
if( ma2ERD.containsKey( "ALL" ) ) arr2ERD = ma2ERD.get( "ALL" );
위의 소스 대신 주석으로 처리된 소스를 사용하면, 테이블 단위로 파일이 생성되게 됩니다.
끝.
반응형
'프로젝트 > 프로젝트 알아보기' 카테고리의 다른 글
온라인 거래 및 구조도 (0) | 2020.01.02 |
---|---|
계정계, 정보계, DW, 단위업무... 너희들은 누구니? (0) | 2020.01.01 |
컬럼매핑정의서로 META표준용어 일괄등록문서 생성하기 (0) | 2019.12.30 |
컬럼매핑정의서로 이행매핑정의서 생성하기 (0) | 2019.12.30 |
[프로젝트] 컬럼매핑정의서로 테이블정의서 생성하기 (0) | 2019.12.25 |