001/*=================================================================================== 002 * Copyright(c) 2012 POSCO ICT 003 * 004 * Project : glue-master-access 005 * Source File Name : com.poscoict.app.glue.master.access.type.PosRuleValueInfo.java 006 * Description : 007 * Author : 허두녕 008 * Version : 1.0.0 009 * File Name related : 010 * Class Name related : 011 * Created Date : 2012. 12. 14. 012 * Updated Date : 2012. 12. 14. 013 * Last modifier : 허두녕 014 * Updated content : 최초작성 015 * 016 *==================================================================================*/ 017package com.poscoict.app.glue.master.access.type; 018 019import java.util.ArrayList; 020import java.util.LinkedHashMap; 021import java.util.List; 022import java.util.Map; 023 024import com.poscoict.app.glue.master.access.exception.PosMasterDataException; 025 026/** 027 * PosRuleValueInfo.java 028 * 029 * @author 허두녕 030 * @version 1.0.0 031 * @since 2012. 12. 14. 032 */ 033public class PosRuleValueInfo extends ArrayList<LinkedHashMap<String, String>> { 034 private static final long serialVersionUID = 866898289494226942L; 035 036 private String m_headerInfo; 037 private final List<String> m_itemIDList; 038 039 /** 040 * 생성자 041 */ 042 public PosRuleValueInfo( List<String> itemIDList ) { 043 this.m_itemIDList = itemIDList; 044 } 045 046 /** 047 * 마스터 헤더 정보를 반환한다. 048 * 049 * @return 마스터 헤더 정보 050 */ 051 public String getHeaderInfo() { 052 return m_headerInfo; 053 } 054 055 /** 056 * 마스터 헤더 정보를 설정한다. 057 * 058 * @param headerInfo 마스터 헤더 정보 059 */ 060 public void setHeaderInfo( String headerInfo ) { 061 this.m_headerInfo = headerInfo; 062 } 063 064 /** 065 * 업무기준 항목ID 목록을 반환한다. 066 * 067 * @return 항목ID 목록 068 */ 069 public List<String> getItemIDList() { 070 return m_itemIDList; 071 } 072 073 /** 074 * 업무기준 모든 결과를 반환한다. 075 * 076 * @return 업무기준 결과 (List<LinkedHashMap<항목ID, 결과값>>) 077 */ 078 public List<LinkedHashMap<String, String>> getRuleResultAll() { 079 return this; 080 } 081 082 /** 083 * 업무기준 결과를 추가한다. 084 * 085 * @param ruleValueList 결과값 목록 086 */ 087 public void addRuleResult( List<String> ruleValueList ) { 088 if ( m_itemIDList.size() == ruleValueList.size() ) { 089 LinkedHashMap<String, String> ruleValueMap = new LinkedHashMap<String, String>( m_itemIDList.size() ); 090 for ( int i = 0; i < m_itemIDList.size(); i++ ) { 091 ruleValueMap.put( m_itemIDList.get( i ), ruleValueList.get( i ) ); 092 } 093 this.add( ruleValueMap ); 094 } else { 095 throw new PosMasterDataException( "Does not match size!! ItemID[" + m_itemIDList.size() + "] != Result[" + ruleValueList.size() 096 + "]" ); 097 } 098 } 099 100 /** 101 * 순서에 해당하는 업무기준 결과를 반환한다. 102 * 103 * @param index 순서 104 * @return 업무기준 결과 (배열) 105 */ 106 public String[] getRuleResult( int index ) { 107 if ( ( index < this.size() ) && ( index >= 0 ) ) { 108 return this.getRuleResultMap( index ).values().toArray( new String[] {} ); 109 } else { 110 throw new PosMasterDataException( "Index[" + index + "] must be less than Size[" + this.size() + "]" ); 111 } 112 } 113 114 /** 115 * 순서에 해당하는 업무기준 결과를 반환한다. 116 * 117 * @param index 순서 118 * @return 업무기준 결과 (Map<항목ID, 결과값>) 119 */ 120 public Map<String, String> getRuleResultMap( int index ) { 121 if ( ( index < this.size() ) && ( index >= 0 ) ) { 122 return this.get( index ); 123 } else { 124 throw new PosMasterDataException( "Index[" + index + "] must be less than Size[" + this.size() + "]" ); 125 } 126 } 127 128 /* 129 * (non-Javadoc) 130 * @see java.lang.Object#toString() 131 */ 132 @Override 133 public String toString() { 134 StringBuilder sb = new StringBuilder(); 135 sb.append( "=== Header Information ===" ).append( "\n" ); 136 sb.append( m_headerInfo ).append( "\n" ); 137 sb.append( "=== Business Rule Information ===" ).append( "\n" ); 138 139 for ( Map<String, String> resultMap : this ) { 140 sb.append( resultMap ).append( "\n" ); 141 } 142 143 return sb.toString(); 144 } 145}