gnu.caf.db.impl
Class RchCrossTab

java.lang.Object
  extended by gnu.caf.db.impl.RchCrossTab
All Implemented Interfaces:
RowCallbackHandler

public class RchCrossTab
extends java.lang.Object
implements RowCallbackHandler

 RowCallbackHandler 의 구현 클래스로써 ResultSet 처리시 컬럼에 해당하는 데이타를 
 Crosstab 형태의 HashMap 객체로 변환함.  
 
 ex)   
        
 
        java Code 작성방법
 
                RchCrossTab crosstab = RchFactory.getCrossTab();
                crosstab.setGroupByColumns("a,b");
                crosstab.setCrossColumn("c");
                crosstab.setTargetColumns("d,e,f"); 
                list = crosstab.convert(list);

                for ( int i=0, n=list.size(); i< n; i++) {
                        System.out.println(list.get(i));
                }


                또는 

                DBManager2 dbmanager = new DBManager2Oracle();

                RchCrossTab crosstab = RchFactory.getCrossTab();
                crosstab.setGroupByColumns("a,b");
                crosstab.setCrossColumn("c");
                crosstab.setTargetColumns("d,e,f"); 

                dbmanager.setRowCallbackHandler(crosstab);

                List list = null;
                try {
                        dbmanager.getConnection();
                        list = dbmanager.executeQueryForListByQueryGroup("sqlFilename", "sqlID", params); 
                }catch(SQLException sqle) {
                        sqle.printStackTrace();
                }finally{
                        dbmanager.close();
                }
                for ( int i=0, n=list.size(); i< n; i++) {
                        System.out.println(list.get(i));
                }


        sql 작성방법 및 데이타 변환로직. 

                a, b 컬럼이 좌측에 
                c 컬럼의 value 값이  상측으로 구성된 테이블을 만들고자 할 경우..

                GROUP BY a, b, c     되는 SQL작성 및 실행되는 결과값이 아래와 같은 경우

                a , b, c, d, e                                                  ==> HashMap             key={"a","b","c","d","e"}
                {
                1,  2, 1, 1, 2
                1,  2, 2, 3, 4
                1,  3, 1, 5, 6
                1,  3, 3, 7, 8         
                }               

                크로스탭 변환시 아래와 같은 형태로 변환.                         ==> HashMap     key={"a","b","d__1","d__2","d__3","e__1","e__2","e__3"}
                a , b, 1        ,2              ,3   의 형태로 변환.
                {
                1,  2, d=1 e=2  ,d=3 e=4
                1,  3, d=5 e=6  ,               ,d=7 e=8
                }               

        ※ /caf/samples/list_crosstab.jsp 를 참조.

        
 

Since:
1.0
Author:
이호성
See Also:
RowCallbackHandler

Constructor Summary
RchCrossTab()
           
 
Method Summary
 java.util.List convert(java.util.List list)
          List 객체를 크로스탭형태의 리스트로 변환함.
 java.lang.Object getColumnForRow(java.util.Map row, java.lang.String columnName, java.lang.Object crossColumnValue)
           
 java.lang.Object getColumnForRow(java.util.Map row, java.lang.String columnName, java.lang.Object crossColumnValue, java.lang.String nullStr)
           
 java.lang.String getCrossColumn()
           
 java.lang.Object[] getCrossColumnValues()
           
 java.lang.String getGroupByColumns()
           
 java.util.List getRsList(java.sql.ResultSet rs, int startRow, int maxRows)
          ResultSet 에 대하여 firstRow에 해당하는 만큼 rs.next() 처리후 maxResults 만큼 데이타를 처리후 List를 반환함.
 java.lang.String getSeperateCHAR()
           
 java.lang.String getTargetColumns()
           
static void main(java.lang.String[] args)
           
 void setCrossColumn(java.lang.String crossColumn)
           
 void setCrossColumnValues(java.lang.Object[] crossColumnValues)
          크로스탭 리스트 변환시 크로스탭으로 전환되는 컬럼의 value값을 설정함.
 void setGroupByColumns(java.lang.String groupByColumns)
           
 void setSeperateCHAR(java.lang.String seperateChar)
          크로스탭 리스트 변환시 crossColumn 의 value 값에 해당하는 키값+원래컬럼명 으로 키값을 저장시 키값구분 CHAR 설정함.
 void setTargetColumns(java.lang.String targetColumns)
          크로스탭 리스트 변환시 대상컬럼을 설정함.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RchCrossTab

public RchCrossTab()
Method Detail

getColumnForRow

public java.lang.Object getColumnForRow(java.util.Map row,
                                        java.lang.String columnName,
                                        java.lang.Object crossColumnValue)

getColumnForRow

public java.lang.Object getColumnForRow(java.util.Map row,
                                        java.lang.String columnName,
                                        java.lang.Object crossColumnValue,
                                        java.lang.String nullStr)

main

public static void main(java.lang.String[] args)
Parameters:
args -

getRsList

public java.util.List getRsList(java.sql.ResultSet rs,
                                int startRow,
                                int maxRows)
                         throws java.sql.SQLException
Description copied from interface: RowCallbackHandler
ResultSet 에 대하여 firstRow에 해당하는 만큼 rs.next() 처리후 maxResults 만큼 데이타를 처리후 List를 반환함. maxResults 가 -1 인 경우에는 전체 rs 에 대하여 처리후 List를 반환함.

Specified by:
getRsList in interface RowCallbackHandler
Returns:
List
Throws:
java.sql.SQLException
See Also:
RowCallbackHandler.getRsList(ResultSet, int, int)

convert

public java.util.List convert(java.util.List list)
List 객체를 크로스탭형태의 리스트로 변환함.

Parameters:
list -
Returns:
List

getCrossColumn

public java.lang.String getCrossColumn()

setCrossColumn

public void setCrossColumn(java.lang.String crossColumn)

getGroupByColumns

public java.lang.String getGroupByColumns()

setGroupByColumns

public void setGroupByColumns(java.lang.String groupByColumns)

getCrossColumnValues

public java.lang.Object[] getCrossColumnValues()

setCrossColumnValues

public void setCrossColumnValues(java.lang.Object[] crossColumnValues)
크로스탭 리스트 변환시 크로스탭으로 전환되는 컬럼의 value값을 설정함.

Parameters:
crossColumnValues -

getTargetColumns

public java.lang.String getTargetColumns()

setTargetColumns

public void setTargetColumns(java.lang.String targetColumns)
크로스탭 리스트 변환시 대상컬럼을 설정함.

Parameters:
targetColumns -

getSeperateCHAR

public java.lang.String getSeperateCHAR()

setSeperateCHAR

public void setSeperateCHAR(java.lang.String seperateChar)
크로스탭 리스트 변환시 crossColumn 의 value 값에 해당하는 키값+원래컬럼명 으로 키값을 저장시 키값구분 CHAR 설정함.

Parameters:
seperateChar -


Copyright © 2003 All Rights Reserved.