View Javadoc
1   package com.gh.mygreen.xlsmapper.annotation;
2   
3   import java.lang.annotation.Annotation;
4   
5   import com.gh.mygreen.xlsmapper.fieldprocessor.ProcessCase;
6   import com.gh.mygreen.xlsmapper.fieldprocessor.impl.HorizontalRecordsProcessor;
7   import com.gh.mygreen.xlsmapper.fieldprocessor.impl.IterateTablesProcessor;
8   
9   
10  /**
11   * {@link IterateTablesProcessor}から、{@link HorizontalRecordsProcessor}へ{@link XlsHorizontalRecords}の情報を渡す際のインタフェース用クラス。
12   * <p>アノテーションとしては直接には使用しない。</p>
13   * <p>{@link XlsIterateTables}により決定した表の開始位置を渡すために用いる。</p>
14   * <p>表の開始位置の指定は、{@link XlsIterateTables}で指定済みなので、{@link #headerColumn()}、{@link #headerRow()}以外での開始位置の指定は無効にする。</p>
15   *
16   * @version 2.0
17   * @author Mitsuyoshi Hasegawa
18   * @author T.TSUCHIE
19   */
20  public class XlsHorizontalRecordsForIterateTables implements XlsHorizontalRecords {
21  
22      private final Class<? extends Annotation> _annotationType;
23  
24      private int _headerColumn = -1;
25      private int _headerRow = -1;
26      private String _headerAddress = "";
27      private boolean _optional = false;
28      private int _range = -1;
29      private Class<?> _recordClass = null;
30      private String _tableLabel = "";
31      private RecordTerminal _terminal = null;
32      private String _terminateLabel = null;
33      private int _bottom = 1;
34      private int _headerLimit = 0;
35      private int _headerBottom = 1;
36      private ProcessCase[] _cases = {};
37  
38      /**
39       * アノテーションを元に、インスタンスを作成する。
40       * @param anno 元のアノテーション情報
41       * @param headerColumn 表の見出しの位置 - 列番号
42       * @param headerRow 表の見出しの位置 - 行番号
43       */
44      public XlsHorizontalRecordsForIterateTables(final XlsHorizontalRecords anno, int headerColumn, int headerRow) {
45          this._annotationType = anno.annotationType();
46  
47          this._headerColumn = headerColumn;
48          this._headerRow = headerRow;
49  
50          // headerColumn、headerRowを指定しているため、headerAddressは空で固定する。
51          this._headerAddress = "";
52  
53          // 表の開始位置は、headerColumn, headerRowで指定するため、タイトルによる位置指定は無効にする。
54          this._tableLabel = "";
55          this._bottom = 1;
56  
57          this._optional = anno.optional();
58          this._range = anno.range();
59          this._recordClass = anno.recordClass();
60  
61          this._terminal = anno.terminal();
62          this._terminateLabel = anno.terminateLabel();
63  
64          this._headerLimit = anno.headerLimit();
65          this._headerBottom = anno.headerBottom();
66  
67          this._cases = anno.cases();
68  
69      }
70  
71      @Override
72      public int headerColumn() {
73          return this._headerColumn;
74      }
75  
76      @Override
77      public int headerRow() {
78          return this._headerRow;
79      }
80  
81      @Override
82      public String headerAddress() {
83          return this._headerAddress;
84      }
85  
86      @Override
87      public boolean optional() {
88          return this._optional;
89      }
90  
91      @Override
92      public int range() {
93          return this._range;
94      }
95  
96      @Override
97      public Class<?> recordClass() {
98          return this._recordClass;
99      }
100 
101     @Override
102     public String tableLabel() {
103         return this._tableLabel;
104     }
105 
106     @Override
107     public RecordTerminal terminal() {
108         return this._terminal;
109     }
110 
111     @Override
112     public Class<? extends Annotation> annotationType() {
113         return this._annotationType;
114     }
115 
116     @Override
117     public String terminateLabel() {
118         return this._terminateLabel;
119     }
120 
121     @Override
122     public int bottom() {
123         return this._bottom;
124     }
125 
126     @Override
127     public int headerLimit() {
128         return this._headerLimit;
129     }
130 
131     @Override
132     public int headerBottom() {
133         return this._headerBottom;
134     }
135 
136     @Override
137     public ProcessCase[] cases() {
138         return this._cases;
139     }
140 
141 }