/** * dataset => bean * * @param dataset * @param klass Java Beans Class * @return BaseBean * @throws Exception */ public BaseBean datasetToBean(Dataset dataset, Class klass) throws Exception { Map<String, String> beansPropertyNameMap = beansPropertyNameTable.get(klass.getName()); Object[] columnNameArray = beansPropertyNameMap.keySet().toArray(); BaseBean bean = (BaseBean) klass.newInstance(); if (dataset.getDeleteRowCount() == 1) { bean.setStatus("delete"); } else { bean.setStatus(dataset.getRowStatus(0)); } Variant columnValue = null; for (Object columnName : columnNameArray) { if (dataset.getDeleteRowCount() == 1) { columnValue = dataset.getDeleteColumn(0, (String) columnName); } else { columnValue = dataset.getColumn(0, (String) columnName); } if (columnValue != null) { callSetterMethod(bean, beansPropertyNameMap.get(columnName), columnValue); } } return bean; }
/** * dataset => beanList * * @param dataset * @param klass Java Beans Class * @return ArrayList<BaseBean> * @throws Exception */ public List<BaseBean> datasetToBeans(Dataset dataset, Class klass) throws Exception { // 반복문 내에서 사용될 변수 선언 및 초기화 BaseBean bean = null; Variant columnValue = null; List<BaseBean> beanList = new ArrayList<BaseBean>(); // Bean 클래스명을 키값으로 입력하여 Bean 멤버변수명을 값으로 갖는 HashMap<'dataset 컬럼명', 'bean 멤버변수명'>을 호출 Map<String, String> beansPropertyNameMap = beansPropertyNameTable.get(klass.getName()); // 위 HashMap에서 KeySet인 dataset 컬럼명을 String 배열로 추출 Object[] columnNameArray = beansPropertyNameMap.keySet().toArray(); // dataset의 레코드 수만큼 bean을 생성 int rowCount = dataset.getRowCount(); for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) { // Bean 객체를 생성하고 insert 또는 update 상태값을 저장 bean = (BaseBean) klass.newInstance(); bean.setStatus(dataset.getRowStatus(rowIndex)); // dataset 컬럼명에 해당하는 Bean setter 메소드를 모두 호출하여 값을 저장 for (Object columnName : columnNameArray) { // dataset 컬럼값을 호출 columnValue = dataset.getColumn(rowIndex, (String) columnName); if (columnValue != null) { // setter 메소드를 호출하여 값 저장 callSetterMethod(bean, beansPropertyNameMap.get(columnName), columnValue); } } beanList.add(bean); } // status가 delete인 레코드를 bean으로 변환. deleteColumn을 얻어온다는 것만 다름 rowCount = dataset.getDeleteRowCount(); for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) { bean = (BaseBean) klass.newInstance(); bean.setStatus("delete"); for (Object columnName : columnNameArray) { columnValue = dataset.getDeleteColumn(rowIndex, (String) columnName); if (columnValue != null) { callSetterMethod(bean, beansPropertyNameMap.get(columnName), columnValue); } } beanList.add(bean); } return beanList; }