DA# Macro_v2.13_20221217 배포
Reverse 관련 두 가지 오류를 수정한 DA# Macro_v2.13_20221217 를 배포한다. 수정한 오류는 다음과 같다.
- [Fix] Reverse: template에 지정한 Attribute 특성 값 밀림 수정(표준화, 정보보호여부, 정보보호등급, 암호화여부, 스크램블)
- [Fix] Reverse: 정보보호등급 값 설정되지 않는 버그 수정
참고로, DA# Macro 소개글(DA# Macro(1): DA#, DA# API, DA# Macro (매크로) 개요 – 생산성 Skill (prodskill.com))은 v2.12를 기준으로 설명했었다.
1. 버그 현상
1.1. Reverse: template에 지정한 Attribute 특성 값 밀림
template 파일의 “Column” 시트에 지정한 값이 하나씩 뒤로 밀려서 설정되는 버그이다. 예를 들어, template 파일에 다음과 같이 입력한 경우에 이 버그가 재현된다.
각 Attribute 특성에 입력할 수 있는 값은 다음과 같다.
- 표준화: 정해진 값 중 하나만 입력 가능
- 정보보호여부: Y/N 중 하나만 입력 가능
- 정보보호등급: 문자열
- 암호화여부: Y/N 중 하나만 입력 가능
- 스크램블: 문자열
입력할 수 있는 값이 각각 다르기 때문에, 하나씩 밀리면 정상적으로 설정되지 않는다.
1.2. Reverse: 정보보호등급 값 설정되지 않음
위 이미지에서 “정보보호등급” 값을 입력했음에도 데이터 모델에 값이 설정되지 않는 버그이다. “정보보호등급” 값을 Y/N 중 하나만 입력 가능하도록 다루고 있어서 문자열 값을 무시하고 입력되지 않는다.
2. 수정 내용
2.1. [Fix] Reverse: template에 지정한 Attribute 특성 값 밀림 수정
modDAConstType 모듈의 변경 전 코드(일부 발췌)는 다음과 같다.
'---------------------------------------------------------------------------------------------------- 'Reverse Attribute property Index Public Const DA_REVATTR_Sequence_IDX As Long = 0 Public Const DA_REVATTR_ModelName_IDX As Long = 1 Public Const DA_REVATTR_EntityName_IDX As Long = 2 Public Const DA_REVATTR_Name_IDX As Long = 3 ... Public Const DA_REVATTR_Inclusive_IDX As Long = 27 Public Const DA_REVATTR_StandardType_IDX As Long = 28 Public Const DA_REVATTR_PrivacyAct_IDX As Long = 29 Public Const DA_REVATTR_PrivacyGrade_IDX As Long = 30 Public Const DA_REVATTR_Encryption_IDX As Long = 31 Public Const DA_REVATTR_EncryptionMethod_IDX As Long = 32
DA_REVATTR_Inclusive_IDX 를 주석처리하고 그 이후 상수값을 하나씩 줄였다. 이 상수값은 Reverse template 파일 “Column” sheet의 컬럼 순번을 나타낸다.
'---------------------------------------------------------------------------------------------------- 'Reverse Attribute property Index Public Const DA_REVATTR_Sequence_IDX As Long = 0 Public Const DA_REVATTR_ModelName_IDX As Long = 1 Public Const DA_REVATTR_EntityName_IDX As Long = 2 Public Const DA_REVATTR_Name_IDX As Long = 3 ... 'Public Const DA_REVATTR_Inclusive_IDX As Long = 27 '2022-12-17 주석 처리(Reverse에는 사용하지 않도록 처리함) Public Const DA_REVATTR_StandardType_IDX As Long = 27 Public Const DA_REVATTR_PrivacyAct_IDX As Long = 28 Public Const DA_REVATTR_PrivacyGrade_IDX As Long = 29 Public Const DA_REVATTR_Encryption_IDX As Long = 30 Public Const DA_REVATTR_EncryptionMethod_IDX As Long = 31
2.2. [Fix] Reverse: 정보보호등급 값 설정되지 않는 버그 수정
CDAAttribute 클래스의 SetValue 프로시져에 정보보호등급 값을 GetBoolean 함수로 변환하고 있었다. 정보보호등급은 Y/N 으로 설정하는 값이 아니고 입력한 문자열을 그대로 설정해야 하는데 불필요하게 GetBoolean 함수를 실행하여 값이 설정되지 않았다.
다음과 같이 코드를 수정하였다.
'DA# Attribute 개체에 값 설정 Public Sub SetValue(ByRef aodAttribute As Modeler5.Attribute) .... '-- 변경 전 코드 arrAttr(Modeler5.ATR_PRIVACYGRADE) = GetBoolean(Me.m_s정보보호등급) '-- 변경 후 코드 arrAttr(Modeler5.ATR_PRIVACYGRADE) = Me.m_s정보보호등급
참고로, GetBoolean 함수는 다음과 같이 구현되어 있다.
'Text(Y, N)의 Boolean value 변환(True, False) Public Function GetBoolean(aValue As String) As Boolean GetBoolean = IIf(UCase(Trim(aValue)) = "Y", True, False) 'Y=True, Else=False End Function
3. DA# Macro_v2.13_20221217 다운로드
버그를 수정한 버전을 github에 올려 두었다. 아래 URL에서 다운로드할 수 있다.
https://github.com/DAToolset/DA-Macro/raw/main/DA%23%20Macro_v2.13_20221217.xlsm