목차

사용자 정의 템플릿 추가 기능

개요

전자정부 프레임워크에서 제공하는 기본 템플릿 외에도 사용자가 필요한 템플릿을 작성하여 추가할 수 있는 기능을 제공한다. 전자정부 프레임워크 템플릿 Code Gen. 은 플러그인 방식으로 개발되었기 때문에 사용자가 전자정부 프레임워크 템플릿 Code Gen. 의 플러그인을 확장하여 다양한 템플릿을 작성할 수 있고, 프로젝트에서 이를 활용할 수 있다.

설명

전자정부 프레임워크에서 제공하는 템플릿 Code Gen. 은 기본적으로 Velocity Template Engine 을 사용한다. 사용자 정의 템플릿을 추가하기 위해서는 다음과 같은 구성요소가 필요하다.

템플릿 작성 방법

~ Velocity Template 기본 작성방법은 다음 사이트를 참조한다.

http://wiki.apache.org/velocity/FrontPage

Wizard 생성 방법

- Wizard 는 XML 문법에 따라 작성하며 사용법은 다음과 같다.

Wizard 의 구성

사용자 정의 템플릿 마법사 페이지는 model-page 와 component-page 가 있으며, 하나 이상의 페이지를 생성 또는 추가할 수 있다.

모델 페이지의 생성

<model-page type="table" required="true">
	<!-- SelectSomeTable	테이블 선택 -->
	<description>Select some Table</description>
</model-page>

컴포넌트 페이지의 생성 예시

<component-page>
	<description>Input resource information</description>
	<group label="" required="true">
		<textfield name="author" label="Author :" required="true" value="" />
		<container name="voPackage" label="VO Package: " required="true" type="package" />
	</group>
</component-page>

(설명)

UI 입력 컴포넌트 생성 및 추가

group : 하나 이상의 UI 컴포넌트 를 그룹화한다.

<group name="" label="" checkbox="" >
	    ... 
</group>

(설명)

Container : 패키지 또는 폴더를 선택하기 위한 것이다.

<container name="actionPackage"
           label="Package:" 
           required="true" 
           type="package|folder" 
           value="" />

(type 설명)

textField : 텍스트 입력박스

<textfield name=""
           label="" 
           required="true/false" 
           extension="" />

checkbox :

<checkbox name="createValidation" 
          label="Create the Action-validation.xml ?" 
          value="false" />

radio :

<combo name="radio" label="View:" value="FreeMarker">
	<elements>
		<option value="freemarker">FreeMarker</option>
		<option value="velocity">Velocity</option>
		<option value="dispatcher">JSP</option>
		<option value="xslt">XSLT</option>
	</elements>
</combo>

combo :

<combo name="radio" label="View:" value="FreeMarker">
	<elements>
		<option value="freemarker">FreeMarker</option>
		<option value="velocity">Velocity</option>
		<option value="dispatcher">JSP</option>
		<option value="xslt">XSLT</option>
	</elements>
</combo>

Output 작성 예시

- 코드 생성을 하기 위해서는 위저드에서 입력받은 내용을 어떤 템플릿 파일과 매핑시켜서 코드를 생성할 것인지 <output> 에 지정해주어야 한다.

		<output>
			<template component="txtFileName" velocity="sequenceId.vm"
				extension="xml" container="txtPath">
			</template>
			<condition variable="checkService" value="true" />
		</output>

(설명)

위저드/템플릿에서 데이타베이스 테이블 정보를 사용하는 방법

~ 데이타베이스 테이블을 선택하여 코드를 생성할 때 해당 테이블 정보를 활용하는 방법은 다음과 같다.

테이블 명칭을 이용한 파일 생성 예시

~ 파일을 생성할 테이블 정보를 활용할 수 있고, 예시는 다음과 같다.

		<output>
			<template component="dao" expression="${model.entity.pcName}DAO"
				velocity="java/pkg/service/impl/Sample2DAO.vm" extension="java"
				container="daoPackage">
				<condition variable="checkDataAccess" value="true" />
			</template>
		</output>

템플릿에서 테이블 및 컬럼 정보를 이용한 데이타베이스 쿼리 생성 예시

     SELECT
#set($i=0)	
#foreach($attribute in $model.attributes)
#if($i == 0)
				${attribute.name}
#else
				, ${attribute.name}
#end
#set($i=$i+1)
#end	
		FROM ${model.entity.name}
		ORDER BY 
#set($i=0)				
#foreach($attribute in $model.primaryKeys)
#if($i == 0)
			${attribute.name} DESC
#else
			, ${attribute.name} DESC
#end
#set($i=$i+1)
#end

템플릿에서 데이타베이스 벤더 정보를 이용한 다른 쿼리문 생성 예시

   #set($vender="$model.vender")
   #if($vender == "HSQLDB")
   .....
   #elseif($vender == "Oracle")
   .....
   #end

Wizard 목록 작성 방법

Category 별로 작성한 wizard 목록을 기술하며, template 경로는 wizard 목록 xml 파일의 상대경로를 기술하면 된다.

예시

<?xml version="1.0" encoding="UTF-8"?>
<templates>
	<category name="CRUD">
		<wizards>
			<wizard-def description="CRUD Program" template="crud/wizard.xml"/>
		</wizards>
	</category>
</templates>

사용자 템플릿 플러그인 프로젝트 제작 방법

1. 개발환경에서 플러그인 프로젝트를 생성하고, 위 설명을 참조하여 Template 과 Wizard, Wizard 목록 파일을 생성한다.
2. MANIFEST.MF 을 Plug-in Manifest Editor 로 열고, Extensions 탭을 클릭한다.
3. Add… 버튼을 클릭하고, egovframework.dev.imp.codegen.template.templateWizards 를 더블클릭하여 Extensions 에 추가한다.
4. Extensions 세부 항목을 입력한다. 임의의 ID와 이름, 마법사 목록 XML 경로를 입력한다.

<수정된 plugin.xml 의 내용>

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         point="egovframework.dev.imp.codegen.template.templateWizards">
      <wizards
            id="CustomTemplates.wizards"
            name="Custom Templates"
            wizardsFile="templates/wizards.xml">
      </wizards>
   </extension>
 
</plugin>

5. Feature 와 update site 프로젝트를 만들고 제작한 템플릿 플러그인을 패키징한다.
6. 제작한 템플릿 플러그인을 개발환경에 업데이트한다. (Help>Software Updates>Add Site…>”업데이트 사이트 주소 또는 파일 선택”)
7. Template 목록 조회 : Window>Show View>eGovFrame Templates 를 선택한다.
8. 사용자 정의 템플릿이 추가되어 정상작동하는 것을 확인한다.

사용법

사용자 정의 템플릿 예제 - 아래 소스는 사용자 템플릿 예제 프로젝트입니다.

매뉴얼을 참조하셔서 원하는 템플릿을 추가 또는 수정하셔서 사용하시면 됩니다.

사용자정의 템플릿 프로젝트 소스

(파일 설명)
사용자 정의 샘플 프로젝트는 다음의 3개 프로젝트로 구성되어 있다.

실제 사용자정의 템플릿은 CustomTemplates 프로젝트 내에 있고, feature 프로젝트와 update site 프로젝트는 CustomTemplates 플러그인을 하나의 단위 플러그인으로 묶고 로딩하여 업데이트할 수 있도록 하기 위한 것이다.

사용자정의 템플릿 업데이트 파일

(파일 설명)
위의 파일은 사용자정의 템플릿을 업데이트할 수 있도록 최종적으로 빌드한 업데이트 예제 파일이다. 사용법은 다음과 같다.

  1. 위의 파일을 다운로드받은 후 개발환경 메뉴에서 Help>Software Updates 를 선택한다.
  2. Available Software 탭에서 우측 중앙에 있는 Add Site… 버튼을 클릭한다.
  3. “Add Site” 팝업 화면에서 우측에 있는 Archive… 버튼을 클릭한다.
  4. 다운로드 받은 파일을 선택하고, OK 버튼을 클릭한다.
  5. Available Software 목록에 추가된 “Custom Template”을 선택하고, Install 버튼을 클릭한다.
  6. Install 이 완료되면 안내에 따라 플러그인을 재시작하고, Template 목록 조회을 조회하여 사용자 템플릿이 추가된 것을 확인한다.

사용자 정의 템플릿 추가에 대한 사용자 팁

사용자 정의 템플릿을 추가하기를 원하지만, 플러그인 프로젝트에 익숙하지 않는 경우 다음과 같은 방법으로 사용자 정의 템플릿을 추가할 수 있다.

  1. 사용하고자 하는 Velocity Template 과 Wizard 파일을 작성한다.
  2. plugin 폴더에 해당 파일을 저장한다.
    • 저장위치 : \plugins\egovframework.dev.imp.codegen.template.templates_<버전정보>\eGovFrameTemplates\
  3. wizards.xml (Wizard 목록 파일)을 편집하여 사용자 정의 템플릿에 대한 내용을 추가한다. (수정방법은 위의 템플릿 목록 XML 설명 참조)
  4. Template 목록 조회 : 개발환경에서 Window>Show View>eGovFrame Templates 를 선택한다.
  5. 사용자 정의 템플릿이 추가되어 정상작동하는 것을 확인한다.
  6. 단, 버전이 업데이트될 때에는 파일이 초기화되므로, 재작업을 해야 한다.