메타 데이터

메타 데이터를 커스터마이징 할 수 있는 영역을 제공합니다.

1. 제공되는 커스터마이징 목록(4)

메타 데이터에서 제공되는 커스터마이징 영역 목록
기능 설명

bindMetaLocalReader

로칼 저장소에 저장된 메타 데이터를 읽어오는 모듈을 바인딩합니다.

bindMetaLocalWriter

원격 저장소에서 읽어온 데이터를 로칼 저장소에 저장하는 모듈을 바인딩합니다.

bindMetaRemoteReader

원격 저장소의 메타 데이터를 읽어오는 모듈을 바인딩합니다.

bindMetaViewerColumnProvider

메타 뷰어의 컬럼 정보를 제공하는 모듈을 바인딩합니다.

2. 상세

메소드의 기능을 확인하고 필요한 부분을 커스터마이징 할 수 있습니다.

2.1. bindMetaLocalReader

로칼 저장소에 저장된 메타 데이터를 읽어오는 모듈을 바인딩합니다.

1. 인터페이스 및 클래스

모듈이 반드시 구현 해야하는 인터페이스 또는 상속 해야하는 클래스입니다.

com.bankwareglobal.ide.bxframework.core.meta.data.reader.impl.MetaLocalReader

2. 기본 구현 클래스

해당 기능을 위해 구현된 기본 클래스입니다. 인터페이스 및 클래스에서 필요한 기본 기능이 구현되어있으며 모듈을 확장할 경우 이 클래스를 상속 받아서 구현할 수 있습니다.

com.bankwareglobal.ide.bxframework.se.meta.BxmMetaLocalReader

3. 구현 예제

com.bankwareglobal.ide.bxframework.se.extensions.overriding.impl.ExtMetaLocalReader

                package com.bankwareglobal.ide.bxframework.se.extensions.overriding.impl;

                import com.bankwareglobal.ide.bxframework.core.documentation.Documentation;
                import com.bankwareglobal.ide.bxframework.core.meta.data.model.MetaData;
                import com.bankwareglobal.ide.bxframework.core.meta.util.MetaUtil;
                import com.bankwareglobal.ide.bxframework.se.extensions.meta.ExtMetaData;
                import com.bankwareglobal.ide.bxframework.se.meta.BxmMetaLocalReader;
                import com.bankwareglobal.ide.datatools.configuration.DatatoolsConfiguration;

                /**
                 * 로칼 저장소에 저장된 메타 데이터를 읽어오는 모듈
                 */
                public class ExtMetaLocalReader extends BxmMetaLocalReader {
                    /**
                    * 메타 데이터 파일의 절대 경로를 반환합니다.
                    */
                    @Override
                    protected String getTargetFilePath() {
                        return MetaUtil.getFilePath("/bxm/meta/ext_metadata.loc");
                    }

                    /**
                    * 메타 데이터 파일에서 읽어들인 정보로 MetaData 모델을 생성합니다.
                    */
                    @Override
                    protected MetaData createFrom(boolean isNumber2BigDecimal, String[] s) throws Exception {
                        int len = Integer.parseInt(s[3]);
                        int decimal = Integer.parseInt(s[4]);
                        String encode = s[5] == "NONE" ? null : s[5];
                        String extension = s.length > 6 ? (s[6] == null ? null : s[6]) : "";
                        if (!isNumber2BigDecimal && "BigDecimal".equals(s[0])
                                && len <= DatatoolsConfiguration.Database.getIntMaxLength() && decimal == 0) {
                            return new ExtMetaData("Integer", s[1], s[2], len, decimal, encode, extension);
                        } else {
                            return new ExtMetaData(s[0], s[1], s[2], len, decimal, encode, extension);
                        }
                    }
                }

4. 재구현된 메소드 목록(2)

재구현된 메소드 목록
메소드 이름 설명

getTargetFilePath

메타 데이터 파일의 절대 경로를 반환합니다.

createFrom

메타 데이터 파일에서 읽어들인 정보로 MetaData 모델을 생성합니다.

2.2. bindMetaLocalWriter

원격 저장소에서 읽어온 데이터를 로칼 저장소에 저장하는 모듈을 바인딩합니다.

1. 인터페이스 및 클래스

모듈이 반드시 구현 해야하는 인터페이스 또는 상속 해야하는 클래스입니다.

com.bankwareglobal.ide.bxframework.core.meta.data.writer.impl.MetaLocalWriter

2. 기본 구현 클래스

해당 기능을 위해 구현된 기본 클래스입니다. 인터페이스 및 클래스에서 필요한 기본 기능이 구현되어있으며 모듈을 확장할 경우 이 클래스를 상속 받아서 구현할 수 있습니다.

com.bankwareglobal.ide.bxframework.se.meta.BxmMetaLocalWriter

3. 구현 예제

com.bankwareglobal.ide.bxframework.se.extensions.overriding.impl.ExtMetaLocalWriter

                package com.bankwareglobal.ide.bxframework.se.extensions.overriding.impl;

                import com.bankwareglobal.ide.bxframework.core.meta.data.model.MetaData;
                import com.bankwareglobal.ide.bxframework.core.meta.util.MetaUtil;
                import com.bankwareglobal.ide.bxframework.se.extensions.meta.ExtMetaData;
                import com.bankwareglobal.ide.bxframework.se.meta.BxmMetaLocalWriter;
                import com.bankwareglobal.ide.commons.utils.StringUtils;

                /**
                 * 원격 저장소에서 읽어온 데이터를 로칼 저장소에 저장하는 모듈
                 */
                public class ExtMetaLocalWriter extends BxmMetaLocalWriter {

                    /**
                     * 메타 데이터 파일의 절대 경로를 반환합니다.
                     */
                    @Override
                    protected String getTargetFilePath() {
                        return MetaUtil.getFilePath("/bxm/meta/ext_metadata.loc");
                    }

                    /**
                     * 메타 데이터 파일에 저장하기 위해 MetaData 모델을 문자열 배열로 변환합니다.
                     */
                    @Override
                    protected String[] createFrom(MetaData metaData) {

                        if ( metaData instanceof ExtMetaData ) {
                            ExtMetaData _metaData= (ExtMetaData)metaData;

                            return new String[] {
                                    _metaData.getType()
                                    , _metaData.getName()
                                    , _metaData.getDescription()
                                    , String.valueOf(_metaData.getLength())
                                    , String.valueOf(_metaData.getDecimal())
                                    , String.valueOf(_metaData.getEncode())
                                    , StringUtils.nvl(_metaData.getExtension())
                            };
                        }
                        else {
                            return super.createFrom(metaData);
                        }
                    }
                }

4. 재구현된 메소드 목록(2)

재구현된 메소드 목록
메소드 이름 설명

getTargetFilePath

메타 데이터 파일의 절대 경로를 반환합니다.

createFrom

메타 데이터 파일에 저장하기 위해 MetaData 모델을 문자열 배열로 변환합니다.

2.3. bindMetaRemoteReader

원격 저장소의 메타 데이터를 읽어오는 모듈을 바인딩합니다.

1. 인터페이스 및 클래스

모듈이 반드시 구현 해야하는 인터페이스 또는 상속 해야하는 클래스입니다.

com.bankwareglobal.ide.bxframework.core.meta.data.reader.impl.MetaRemoteReader

2. 기본 구현 클래스

해당 기능을 위해 구현된 기본 클래스입니다. 인터페이스 및 클래스에서 필요한 기본 기능이 구현되어있으며 모듈을 확장할 경우 이 클래스를 상속 받아서 구현할 수 있습니다.

com.bankwareglobal.ide.bxframework.se.meta.BxmMetaRemoteReader

3. 구현 예제

com.bankwareglobal.ide.bxframework.se.extensions.overriding.impl.ExtMetaRemoteReader

                package com.bankwareglobal.ide.bxframework.se.extensions.overriding.impl;

                import java.sql.Connection;
                import java.sql.PreparedStatement;
                import java.sql.ResultSet;

                import com.bankwareglobal.ide.bxframework.core.meta.data.model.MetaData;
                import com.bankwareglobal.ide.bxframework.core.session.BxmUser;
                import com.bankwareglobal.ide.bxframework.core.session.SessionManager;
                import com.bankwareglobal.ide.bxframework.se.extensions.meta.ExtMetaData;
                import com.bankwareglobal.ide.bxframework.se.meta.BxmMetaRemoteReader;
                import com.bankwareglobal.ide.commons.utils.StringUtils;
                import com.bankwareglobal.ide.datatools.configuration.DatatoolsConfiguration;

                /**
                 * 원격 저장소의 메타 데이터를 읽어오는 모듈
                 */
                public class ExtMetaRemoteReader extends BxmMetaRemoteReader {

                    /**
                     * 원격 Reader의 ID를 반환합니다.
                     */
                    @Override
                    public String getName() {
                        return "ext.meta.remoteReader";
                    }

                    /**
                     * 메타 테이블 정보를 조회하는 SQL을 실행하고 결과를 반환합니다.
                     */
                    @Override
                    protected PreparedStatement prepareReadSql(Connection connection) throws Exception {
                        BxmUser bxmUser= SessionManager.instance().getUser();
                        String domainId= bxmUser.getDomainId(); // domain id 사용하지 않을 경우 "" 반환됨

                        String metaTableName= null;

                        String schemaName= DatatoolsConfiguration.Database.getFrameworkTableOwner();

                        if (StringUtils.isEmpty(schemaName)) {
                            metaTableName = "BXM_OMM_META";
                        } else {
                            metaTableName = schemaName + "." + "BXM_OMM_META";
                        }

                        PreparedStatement pstmt= null;

                        if ( StringUtils.isEmpty( domainId ) ){
                            pstmt= connection.prepareStatement("SELECT * FROM " + metaTableName + " WHERE USE_YN = 'Y'");
                        }
                        else{
                            pstmt= connection.prepareStatement("SELECT * FROM " + metaTableName + " WHERE USE_YN = 'Y' AND TENANT_ID= ?");
                            pstmt.setString(1, domainId);
                        }

                        return pstmt;
                    }

                    /**
                     * 메타 버전 정보를 조회하는 SQL을 실행하고 결과를 반환합니다.
                     */
                    @Override
                    protected PreparedStatement prepareReadVersionSql(Connection connection) throws Exception {
                        BxmUser bxmUser= SessionManager.instance().getUser();
                        String domainId= bxmUser.getDomainId(); // domain id 사용하지 않을 경우 "" 반환됨

                        String metaVersionTableName= null;

                        String schemaName= DatatoolsConfiguration.Database.getFrameworkTableOwner();

                        if (StringUtils.isEmpty(schemaName)) {
                            metaVersionTableName = "BXM_OMM_META_VERSION";
                        } else {
                            metaVersionTableName = schemaName + "." + "BXM_OMM_META_VERSION";
                        }

                        PreparedStatement pstmt= null;

                        if ( StringUtils.isEmpty( domainId ) ){
                            pstmt= connection.prepareStatement("SELECT MAX(META_VERSION) AS META_VERSION FROM " + metaVersionTableName);
                        }
                        else{
                            pstmt= connection.prepareStatement("SELECT MAX(META_VERSION) AS META_VERSION FROM " + metaVersionTableName + " WHERE TENANT_ID= ?");
                            pstmt.setString(1, domainId);
                        }

                        return pstmt;
                    }

                    /**
                     * DB에서 가져온 결과를 MetaData 모델로 변환합니다.
                     */
                    @Override
                    protected MetaData createFrom(ResultSet rs)
                            throws Exception
                    {
                        String type= rs.getString("META_DATA_TYPE_NM");
                        String name= rs.getString("META_NM");
                        String description= rs.getString("META_DESC");
                        int length= rs.getInt("META_LEN");
                        int decimal= rs.getInt("META_DECIMAL");
                        String encode= "";
                        String masking= null;

                        try {
                            masking= rs.getString("MASKING");
                        } catch (Exception e) {
                            logger.trace("Not support 'MASKING'");
                        }

                        ExtMetaData data= new ExtMetaData(
                                type
                                , name
                                , description
                                , length
                                , decimal
                                , encode
                                , StringUtils.nvl(masking)
                                );

                        return data;
                    }
                }

4. 재구현된 메소드 목록(4)

재구현된 메소드 목록
메소드 이름 설명

getName

원격 Reader의 ID를 반환합니다.

prepareReadSql

메타 테이블 정보를 조회하는 SQL을 실행하고 결과를 반환합니다.

prepareReadVersionSql

메타 버전 정보를 조회하는 SQL을 실행하고 결과를 반환합니다.

createFrom

DB에서 가져온 결과를 MetaData 모델로 변환합니다.

2.4. bindMetaViewerColumnProvider

메타 뷰어의 컬럼 정보를 제공하는 모듈을 바인딩합니다.

1. 인터페이스 및 클래스

모듈이 반드시 구현 해야하는 인터페이스 또는 상속 해야하는 클래스입니다.

com.bankwareglobal.ide.bxframework.core.meta.IMetaViewerColumnProvider

2. 기본 구현 클래스

해당 기능을 위해 구현된 기본 클래스입니다. 인터페이스 및 클래스에서 필요한 기본 기능이 구현되어있으며 모듈을 확장할 경우 이 클래스를 상속 받아서 구현할 수 있습니다.

com.bankwareglobal.ide.bxframework.core.meta.MetaViewerColumnProvider

3. 구현 예제

com.bankwareglobal.ide.bxframework.se.extensions.overriding.impl.ExtMetaViewerColumnProvider

                package com.bankwareglobal.ide.bxframework.se.extensions.overriding.impl;

                import java.util.List;

                import org.eclipse.jface.viewers.ITableLabelProvider;

                import com.bankwareglobal.ide.bxframework.core.meta.MetaViewerColumn;
                import com.bankwareglobal.ide.bxframework.core.meta.MetaViewerColumnProvider;
                import com.bankwareglobal.ide.bxframework.core.meta.data.model.MetaData;
                import com.bankwareglobal.ide.bxframework.se.extensions.meta.ExtMetaData;
                import com.bankwareglobal.ide.commons.controls.AbstractTableLabelProvider;
                import com.bankwareglobal.ide.commons.messages.CommonWord;
                import com.google.common.collect.Lists;

                /**
                 * 메타 뷰어의 컬럼 정보 제공자
                 */
                public class ExtMetaViewerColumnProvider extends MetaViewerColumnProvider {

                    /**
                     * 메타 뷰어의 컬럼 목록을 반환합니다.
                     */
                    @Override
                    public List<MetaViewerColumn> createColumns(){
                        List<MetaViewerColumn> columns= Lists.newArrayList();

                        columns.add(new MetaViewerColumn("physicalName", CommonWord.PHYSICAL_NAME, 200));
                        columns.add(new MetaViewerColumn("logicalName", CommonWord.LOGICAL_NAME, 200));
                        columns.add(new MetaViewerColumn("type", CommonWord.TYPE2, 150));
                        columns.add(new MetaViewerColumn("length", CommonWord.DATA_LENGTH, 100));
                        columns.add(new MetaViewerColumn("decimal", CommonWord.DECIMAL_POINT, 100));
                        columns.add(new MetaViewerColumn("encryption", CommonWord.ENCRYPTION, 100));
                        columns.add(new MetaViewerColumn("extesion", "확장", 100));

                        return columns;
                    }

                    /**
                     * 메타 뷰어의 라벨 제공자를 반환합니다.
                     */
                    @Override
                    public ITableLabelProvider createLabelProvider() {
                        return new AbstractTableLabelProvider() {

                            @Override
                            public String getColumnText(Object element, int columnIndex) {
                                if (!(element instanceof MetaData))
                                    return "";

                                ExtMetaData metaData = (ExtMetaData) element;

                                switch (columnIndex) {
                                case 0:
                                    // 물리이름
                                    return metaData.getName();
                                case 1:
                                    // 논리이름
                                    return metaData.getDescription();
                                case 2:
                                    // 타입: String, Integer, BigDecimal 등
                                    return metaData.getType();
                                case 3:
                                    // 길이
                                    return String.valueOf(metaData.getLength());
                                case 4:
                                    // 유효자리
                                    return String.valueOf(metaData.getDecimal());
                                case 5:
                                    // 암호화
                                    return String.valueOf(metaData.getEncode());
                                case 6:
                                    // 확장
                                    return metaData.getExtension();
                                default:
                                    break;
                                }
                                return "";
                            }
                        };
                    }
                }

4. 재구현된 메소드 목록(3)

재구현된 메소드 목록
메소드 이름 설명

createColumns

메타 뷰어의 컬럼 목록을 반환합니다.

createLabelProvider

메타 뷰어의 라벨 제공자를 반환합니다.

getColumnText

Copyright© Bankwareglobal All Rights Reserved.