Rational Developer for System z

JET2 템플리트

데이터베이스 애플리케이션 생성기는 JET2를 코드 생성 템플리트 시스템으로 사용합니다. 이 주제에서는 JET2 템플리트 및 변환 출력의 예제를 제공합니다.

템플리트 시스템으로서 JET2는 JSP 페이지 작성과 비슷한 역할을 합니다. 필요한 위치에서 태그 라이브러리 및 Java™ 스니펫을 지원합니다. 템플리트가 특정 모델의 스펙에 작성된 경우 JET2는 EMF 모델을 입력으로 직접 사용할 수도 있습니다.

IBM® developerWorks®는 다음 주소에서 JET2에 대한 안내서를 제공합니다.

http://www.ibm.com/developerworks/opensource/library/os-ecl-jet/

주: 각 템플리트 그룹에는 ID가 있습니다.

예제

다음 코드는 단순 EMF 모델 입력 인스턴스의 예제입니다.
<?xml version="1.0" encoding="UTF-8"?>
<dataAccess:Employee xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:dataAccess="http:///dataAccess.ecore" name="Bob Smith" address="123 Main St" employeeNumber="12345">
  <customers name="Sam Brown" address="55 Bank St">
    <orders orderNumber="101" date="2005-12-15T00:00:00.000-0500" quantity="25"/>
    <orders orderNumber="13" date="2005-11-15T00:00:00.000-0500" quantity="55"/>
  </customers>
  <customers name="Tim Safari" address="18 Elephant Rd">
    <orders orderNumber="77" date="2005-11-20T00:00:00.000-0500" quantity="3"/>
  </customers>
</dataAccess:Employee>
시작점은 control.jet 파일입니다. 예제:
<%@taglib prefix="ws" id="org.eclipse.emf.jet2.workspaceTags" %>

	<%-- run a template that lists employees and creates a file list.txt --%>
	<ws:file template="templates/listEmployees.jet" path="list.txt"/>
두 번째 세그먼트는 템플리트 파일입니다(예: 다음 listEmployees.jet 파일).
<%@taglib prefix="c" id="org.eclipse.emf.jet2.controlTags" %>

<%-- /selects the document root, which in this case is the emf Resource object --%>
<%-- /selects the contents of the Resource.getContents() --%>
<c:iterate select="/contents" var="employee">
Employee: <c:get select="$employee/@name"/> (<c:get select="$employee/@employeeNumber"/>), <c:get select="$employee/@address"/>
<c:iterate select="$employee/customers" var="customer">
   Customer: <c:get select="$customer/@name"/>, <c:get select="$customer/@address"/>
<c:iterate select="$customer/orders" var="order">
         Order: <c:get select="$order/@orderNumber"/>, <c:get select="$order/@date"/>,  qty: <c:get select="$order/@quantity"/>
</c:iterate>
</c:iterate>
</c:iterate>

Orders for 'Sam Brown'
<c:iterate select="/contents/customers [@name='Sam Brown']/orders" var="order">
         Order: <c:get select="$order/@orderNumber"/>, <c:get select="$order/@date"/>,  qty: <c:get select="$order/@quantity"/>
</c:iterate>
템플리트는 다음과 같은 JET2 태그를 사용합니다.
  • <c:iterate>

    XPath 표현식을 평가하고(일종의 결과 세트 가져옴) 결과 세트의 각 요소에 대한 태그 컨텐츠 시간을 처리합니다.

  • <c:get>

    XPath 표현식을 평가하고, 결과를 문자열로 변환하여, 템플리트 출력에 작성합니다.

XPath 표현식이 평가될 때 맨 앞에 있는 /가 EMF 자원 오브젝트에 맵핑됩니다. 자원의 루트 요소에는 contents 하위(/contents)를 참조하여 액세스합니다. 이 작업은 Resource.getContents()를 호출하는 것과 같습니다. 예를 들어, <c:iterate select="/contents" var="employee"> 태그는 Resource.getContents() 결과 세트에서 반복됩니다. 각 반복에서, employee 변수가 결과 세트의 현재 요소를 가리킵니다.

초기 자원 오브젝트 이후 <c:iterate select="$employee/customers" var="customer"> 태그

다음과 같이 XPath @ 속성 축 지정자를 사용하여 EMF 속성에 액세스할 수 있습니다.
<c:get select="$employee/@name"/>
이렇게 하면 Employee의 name 속성 값(Employee.getName())이 리턴됩니다.
보다 효과적인 XPath 예제는 다음과 같습니다.
<c:iterate select="/contents/customers [@name='Sam Brown']/orders" var="order">
이 코드는 name 속성이 Sam Brown인 고객을 찾고, 해당 주문을 찾아, 이를 반복합니다.
변환 출력은 다음과 같습니다.
Employee: Bob Smith (12345), 123 Main St
   Customer: Sam Brown, 55 Bank St
         Order: 101, Thu Dec 15 00:00:00 EST 2005,  qty: 25
         Order: 13, Tue Nov 15 00:00:00 EST 2005,  qty: 55
   Customer: Tim Safari, 18 Elephant Rd
         Order: 77, Sun Nov 20 00:00:00 EST 2005,  qty: 3

Orders for 'Sam Brown'
         Order: 101, Thu Dec 15 00:00:00 EST 2005,  qty: 25
         Order: 13, Tue Nov 15 00:00:00 EST 2005,  qty: 55

추가 정보는 JET 학습서를 참조하십시오.


이용 약관 | 피드백

이 Information Center는 Eclipse 기술로 구현됩니다. (http://www.eclipse.org 웹사이트 참조)