View Javadoc
1   package com.github.mygreen.supercsv.builder;
2   
3   import java.util.Optional;
4   
5   import org.supercsv.cellprocessor.ift.CellProcessor;
6   
7   import com.github.mygreen.supercsv.cellprocessor.format.TextFormatter;
8   
9   /**
10   * 解析したカラムのマッピング情報です。
11   *
12   * @version 2.5
13   * @author T.TSUCHIE
14   *
15   */
16  public class ColumnMapping implements Comparable<ColumnMapping> {
17  
18      private FieldAccessor field;
19  
20      private String label;
21  
22      private int number;
23  
24      /**
25       * 部分的なカラムかどうか。
26       */
27      private boolean partialized;
28  
29      /**
30       * 固定長カラムの情報
31       */
32      private Optional<FixedSizeColumnProperty> fixedSizeProperty = Optional.empty();
33  
34      private CellProcessor cellProcessorForReading;
35  
36      private CellProcessor cellProcessorForWriting;
37  
38      private TextFormatter<?> formatter;
39  
40      /**
41       * {@link #number}の昇順。
42       * <p>{@link #number}が同じ場合は、フィールド名の昇順。</p>
43       */
44      @Override
45      public int compareTo(final ColumnMapping o) {
46  
47          if(this.number == o.number) {
48              return this.field.getName().compareTo(o.field.getName());
49  
50          } else {
51              return Integer.compare(number, o.number);
52          }
53  
54      }
55  
56      /**
57       * 番号が決まっている(1以上)かどうか。
58       * @since 2.1
59       * @return trueの場合、番号は1以上であり決まっています。
60       */
61      public boolean isDeterminedNumber() {
62          return number >= 1;
63      }
64  
65      /**
66       * カラムの名称を取得する。
67       * @return Beanに定義されているフィールドの名称を取得します。
68       *         部分的なカラムの場合はnullを返します。
69       */
70      public String getName() {
71          return field != null ? field.getName() : null;
72      }
73  
74      /**
75       * フィールド情報を取得します。
76       * @return 部分的なカラムの場合はnullを返します。
77       */
78      public FieldAccessor getField() {
79          return field;
80      }
81  
82      public void setField(FieldAccessor field) {
83          this.field = field;
84      }
85  
86      /**
87       * ラベル情報を取得します。
88       * @return ラベル情報。
89       */
90      public String getLabel() {
91          return label;
92      }
93  
94      /**
95       * ラベル情報を設定します。
96       * @param label ラベル情報。
97       */
98      public void setLabel(String label) {
99          this.label = label;
100     }
101 
102     /**
103      * カラムの番号を取得します。
104      * @return 1から始まります。
105      */
106     public int getNumber() {
107         return number;
108     }
109 
110     /**
111      * カラムの番号を設定します。
112      * @param number 1から始まります。
113      */
114     public void setNumber(int number) {
115         this.number = number;
116     }
117 
118     /**
119      * 部分的なカラムかどうか判定する。
120      * @return trueの場合、部分的なカラムです。
121      */
122     public boolean isPartialized() {
123         return partialized;
124     }
125 
126     /**
127      * 部分的なカラムかどうか設定する。
128      * @param partialized trueの場合、部分的なカラムです。
129      */
130     public void setPartialized(boolean partialized) {
131         this.partialized = partialized;
132     }
133 
134     /**
135      * 固定長のカラム情報を取得する。
136      * @since 2.5
137      * @return 固定長の情報。設定情報がない場合はnullを返す。
138      */
139     public FixedSizeColumnProperty getFixedSizeProperty() {
140         return fixedSizeProperty.orElse(null);
141     }
142 
143     /**
144      * 固定長のカラム情報を設定する。
145      * @since 2.5
146      * @param fixedSizeProperty 固定長の情報。
147      */
148     public void setFixedSizeProperty(FixedSizeColumnProperty fixedSizeProperty) {
149         this.fixedSizeProperty = Optional.of(fixedSizeProperty);
150     }
151 
152     /**
153      * 読み込み時のCellProcessorを取得します。
154      * @return 読み込み時のCellProcessor
155      */
156     public CellProcessor getCellProcessorForReading() {
157         return cellProcessorForReading;
158     }
159 
160     /**
161      * 読み込み時のCellProcessorを設定します。
162      * @param cellProcessorForReading 読み込み時のCellProcessor
163      */
164     public void setCellProcessorForReading(CellProcessor cellProcessorForReading) {
165         this.cellProcessorForReading = cellProcessorForReading;
166     }
167 
168     /**
169      * 書き込み時のCellProcessorを取得します。
170      * @return 書き込み時のCellProcessor
171      */
172     public CellProcessor getCellProcessorForWriting() {
173         return cellProcessorForWriting;
174     }
175 
176     /**
177      * 書き込み時のCellProcessorを設定します。
178      * @param cellProcessorForWriting 書き込み時のCellProcessor
179      */
180     public void setCellProcessorForWriting(CellProcessor cellProcessorForWriting) {
181         this.cellProcessorForWriting = cellProcessorForWriting;
182     }
183 
184     /**
185      * フィールドのオブジェクトに対するフォーマッタ。
186      * @return 部分的なカラムの場合、nullを返す。
187      */
188     public TextFormatter<?> getFormatter() {
189         return formatter;
190     }
191 
192     public void setFormatter(TextFormatter<?> formatter) {
193         this.formatter = formatter;
194     }
195 
196 
197 }