com.poscoict.glueframework.dao.manager
Class GlueQueryLoader

java.lang.Object
  extended by com.poscoict.glueframework.dao.manager.GlueQueryLoader
All Implemented Interfaces:
GlueCacheLoader, InitializingBean

public class GlueQueryLoader
extends Object
implements GlueCacheLoader, InitializingBean

CacheLoader 구현체. 쿼리정보(GlueQueryDefinition)를 로딩하여 서비스하는 클래스.
config path에 존재하는 모든 xxx-query.glue_sql( or xxx-query.xml ) 파일 정보를 로딩하여 GlueQueryDefinition 을 생성한 후 java.util.HashMap을 구성한다.
config path에 존재하는 query file의 naming 및 확장자에 유의한다. Application do not use this class.

 Bean Property
 
 - rootPath : (필수) default는 'query'
 
 - extraQueryFiles : (선택)
 
 - loadDesc : (선택) default는 'false'
             true 인 경우 GlueQuery File에서 desc 정보를 GlueQueryDefinition에 추가하므로 다음 코드 사용 가능함.
             Strin desc = dao.getQueryManager().getQueryDefinition("emp.select").getDescription();
 
 
 예제
 사용 예# 1
 - application의 classpath에서 query 폴더에 있는 쿼리파일을 로딩함.
 
     <bean id="queryLoader" class="com.poscoict.glueframework.dao.manager.GlueQueryLoader"/>
 
 
 사용 예# 2
 - application의 classpath에서 rootPath 로 지정된 폴더에 있는 쿼리파일을 로딩함.
 
     <bean id="queryLoader" class="com.poscoict.glueframework.dao.manager.GlueQueryLoader">
         <property name="rootPath" value="ext/query"/>
     </bean>
 
 
 사용 예# 3
 - application의 classpath의 rootPath외의 query 파일을 로딩함. jar 파일안에 master-query/easyaccess-query.glue_sql 이 있음.
 
     <bean id="queryLoader" class="com.poscoict.glueframework.dao.manager.GlueQueryLoader">
         <property name="extraQueryFiles">
             <list>
                 <value>master-query/easyaccess-query.glue_sql</value>
             </list>
         </property>
     </bean>
 
 
 사용 예# 4
 - GlueQuery File에서 desc 정보도 GlueQueryDefinition에 추가할 경우
 
     <bean id="queryLoader" class="com.poscoict.glueframework.dao.manager.GlueQueryLoader">
         <property name="loadDesc" value="true"/>
     </bean>
 
 
 
 참고 : {name}-query.glue_sql
 
     <query id="emp.select" desc="Type #1" resultType="" isNamed="false">
         <![CDATA[
               select EMPNO, ENAME, JOB, MGR, HIREDATE, SAL,DEPTNO
               from EMP
               where DEPTNO=?
         ]]>
     </query>
 


Field Summary
protected static String QUERYMAP
          Deprecated. 
 
Constructor Summary
GlueQueryLoader()
           
 
Method Summary
 void afterPropertiesSet()
          주어진 정보로 쿼리파일('*.glue_sql') List를 구성한다. rootPath(default는 'query')에 존재하는 모든 쿼리파일이 해당한다.
 String getRootPath()
          getter method.
 Object loadCacheObject(Object cacheKey, String regionName)
          주어진 캐쉬 영역명에 해당하는 캐쉬영역에서 캐쉬 키를 사용하여 오브젝트를 로딩함
 void setExtraQueryFiles(List<String> extraQueryFiles)
          setter method for DI.
 void setLoadDesc(boolean loadDesc)
          setter method for DI.
 void setPathEncoding(String pathEncoding)
          setter method for DI.
 void setRootPath(String queryRoot)
          setter method for DI.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

QUERYMAP

@Deprecated
protected static final String QUERYMAP
Deprecated. 
See Also:
Constant Field Values
Constructor Detail

GlueQueryLoader

public GlueQueryLoader()
Method Detail

loadCacheObject

public Object loadCacheObject(Object cacheKey,
                              String regionName)
                       throws GlueException
Description copied from interface: GlueCacheLoader
주어진 캐쉬 영역명에 해당하는 캐쉬영역에서 캐쉬 키를 사용하여 오브젝트를 로딩함

Specified by:
loadCacheObject in interface GlueCacheLoader
Parameters:
cacheKey - 캐쉬 키
regionName - 캐쉬 영역명
Returns:
캐쉬된 오브젝트
Throws:
GlueException - - 캐쉬관련 에러발생 시

setRootPath

public void setRootPath(String queryRoot)
setter method for DI.
 <bean id="queryLoader" class="com.poscoict.glueframework.dao.manager.GlueQueryLoader">
     <property name="rootPath" value="ext/query"/>
 </bean>
 

Parameters:
queryRoot - 2가지 type이 가능. directory의 구분자는 슬래시(/)인지 역슬래시(\)인지 확인필요함.
 1. Class Loader를 이용한 상대경로 지정
 <property name="rootPath" value="ext/query"/> 일 경우 
     ==> Thread.currentThread().getContextClassLoader().getResource( "ext/query" ) 가 사용됨. 
 2. glue.properties 이용한 절대 경로 지정
 
     ext/query=C://apache-tomcat-7.0.47
     ==> Thread.currentThread().getContextClassLoader().getResource( "C://apache-tomcat-7.0.47" ) 가 사용됨.
 

setExtraQueryFiles

public void setExtraQueryFiles(List<String> extraQueryFiles)
setter method for DI.

Parameters:
extraQueryFiles -

setLoadDesc

public void setLoadDesc(boolean loadDesc)
setter method for DI.

Parameters:
loadDesc -

setPathEncoding

public void setPathEncoding(String pathEncoding)
setter method for DI.

Parameters:
pathEncoding -

getRootPath

public String getRootPath()
getter method.

Returns:
rootPath

afterPropertiesSet

public void afterPropertiesSet()
                        throws Exception
주어진 정보로 쿼리파일('*.glue_sql') List를 구성한다. rootPath(default는 'query')에 존재하는 모든 쿼리파일이 해당한다.
 
 URL url = GlueFileResourceUtil.getResource( "query" );
 logger.trace( "{}' url : {}", rootPath, url ); 의 결과로 정리함.
 
 [was] 별 [url 값] 
 Tomcat    : file:/C:/apache-tomcat-7.0.47/work/Catalina/localhost/sample-ui/WEB-INF/classes/query/
 Tomcat    : file:/C:/apache-tomcat-7.0.47/webapps/sample-ui/WEB-INF/classes/query/
 Tomcat 8  : jar:file:/C:/apache-tomcat-8.0.18/webapps/sample-ui.war!/WEB-INF/classes/query/
 jBoss AS  : vfs:/C:/jboss-eap-6.2/bin/content/sample-ui.war/WEB-INF/classes/query/
 jBoss AS  : vfs:/C:/jboss-eap-6.2/standalone/deployments/sample-ui.war/WEB-INF/classes/query/
 WebLogic  : zip:C:/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/_appsdir_sample-ui_war/wq0kqk/war/WEB-INF/lib/_wl_cls_gen.jar!/query
 WebSphere : file:/C:/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/hwangyujin-pcNode01Cell/sample-ui.ear/sample-ui.war/WEB-INF/classes/query/
 Zeus      : 
 java      : jar,  jar:file:/C:/eclipse/workspace-glue-4-sample/sample-schedule-2/build/user-application.jar!/query
 
 
 
(non-Javadoc)

Specified by:
afterPropertiesSet in interface InitializingBean
Throws:
Exception
See Also:
InitializingBean.afterPropertiesSet()


Copyright © 2013–2016 POSCO ICT. All rights reserved.