소프트웨어는 리소스의 개별 항목을 parameter로 명명한다.

소프트웨어는 parameter를 tree 구조를 차용하여 하위의 parameter를 포함하는 node와 value를포함하는 leaf로 구분한다. 그리고 리소스 파일로 관리하기 위해 다음과 같이 xml 파일 형식을 이용한다:

<node_name attribute=”attribute_value”>
<leaf_name attribute=”attribute_value”>value</leaf_name>
</node_name>

위에서, node_name은 node 리소스의 이름이며, 사용가능한 attribute는 다음과 같다:

Table: Node parameter attributes and their values

No.AttributeValue
1size리소스가 배열인 경우, 크기를 나타낸다. 디폴트는 1이다.
2index리소스가 배열인 경우, 특정 인덱스를 표시한다. 디폴트는 -1이다.
3node리소스가 node임을 표시한다.
4merge_insertmerge_insert가 true인 경우, node 리소스 이름이 같더라도 추가한다.
5merge_replacemerge_replace가 true인 경우, node 리소스에서, 같은 이름을 가진 다른 node 리소스를 덮어씀.
6combine_guardcombine_guard의 값을 리소스 이름으로 가지는 하위 leaf 리소스 값이 같은 경우, 리소스를 합침.

leaf_name은 leaf 리소스 이름이며, 사용가능한 attribute는 다음과 같다:

Table: Leaf parameter attributes and their values

No.AttributeValue
1size리소스가 배열인 경우, 크기를 나타낸다. 디폴트는 1이다.
2typeleaf 리소스인 경우 value 타입을 표시한다. 지원하는 타입은 다음과 같다: bool, char, short, int, int64, double, string
3precisiontype이 double인 경우, double을 string으로 변환할 경우 소수점 이하의 수를 표시한다. 디폴트는 6이다.
4nlstype이 string인 경우, 다국어로 변환할 지를 표시한다. 디폴트는 false이다.
5no_delimitervalue는 single value일 수도 있으며 multiple values일 수도 있다. multiple values인 경우 ‘;’를 이용하여 value를 구분하는데, no_delimiter가 true이면, ‘;’를 value 구분자로 사용하지 않는다. 디폴트는 false이다.
6no_esc_chartype이 string인 경우, ‘\’는 escape 문자로 사용된다. no_esc_char가 true이면 ‘\’를 값으로 처리한다. 디폴트는 false이다.
7dirty값이 변경되었는지를 나타낸다. 디폴트는 false이다.

다음의 리소스 파일을 예를 들면,

<root>
<a>
<b size = “3”>
      <d1 type=”int”>100</d1>
      <d2 type=”bool”>true</d2>
    </b>
    <c node=”true”/>
<g type=”int”>200;300</g>
    </a>
  <e>
    <f size=”2” type=”string”/>
  </e>
</root>

소프트웨어는 상기 리소스 파일을 다음과 같이 트리구조로 변환한다:

Figure: Parameter tree

소프트웨어는 ‘.’를 사용하여 리소스를 지정한다. 예를 들면 다음과 같다: root.a.b.0.d1

상기 리소스 파일을 저장하면 다음과 같이 xml 파일로 저장된다:

<root>
  <a>
    <b index=”0”>
      <d1 type=”int”>100</d1>
      <d2 type=”bool”>true</d2>
    </b>
    <b index=”1”>
      <d1 type=”int”>100</d1>
      <d2 type=”bool”>true</d2>
    </b>
    <b index=”2”>
      <d1 type=”int”>100</d1>
      <d2 type=”bool”>true</d2>
    </b>
    <c node=”true”/>
    <g type=”int”>200;300</g>
  </a>
  <e>
    <f index=”0” type=”string”/>
    <f index=”1” type=”string”/>
  </e>
</root>

소프트웨어는 [GoF]의 composite 패턴을 활용하여 다음과 같이 parameter 클래스를 구현한다:

Figure: Parameter classes

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다