1 /*
2 * Copyright 2013 Olivier Godineau
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License. You may obtain a copy of
6 * the License at http://www.apache.org/licenses/LICENSE-2.0
7 *
8 * Unless required by applicable law or agreed to in writing, software
9 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
10 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
11 * License for the specific language governing permissions and limitations under
12 * the License.
13 */
14 package olg.csv.base;
15
16 /**
17 * Settings Class for spreadsheet document reader and writer class.
18 *
19 * @param <T>
20 * the concret settings type.
21 *
22 *
23 */
24 public abstract class AbstractSheetSettings<T extends AbstractSheetSettings<T>> {
25 /**
26 * Default with headers value.
27 */
28 public static final boolean DEFAULT_WITHHEADERS = true;
29 /**
30 * Default sheet num on which read/write.
31 */
32 public static final int DEFAULT_SHEETNUM = 0;
33 /**
34 * sheet num.
35 */
36 protected int sheetNum = DEFAULT_SHEETNUM;
37 /**
38 *
39 */
40 protected boolean withHeaders = DEFAULT_WITHHEADERS;
41 /**
42 * the row from which begin the reading/writing. first row is 1.
43 */
44 protected Integer beginAtRow = 1;
45 /**
46 * The row to which ends the reading/writing. Could be <code>null</code>.
47 */
48 protected Integer endAtRow = null;
49 /**
50 * the index column from which begin row reading/writing.
51 */
52 protected String beginAtColumn = null;
53 /**
54 * The index column to which end the row reading/writing.
55 */
56 protected String endAtColumn = null;
57 /**
58 * The sheet name on which read.
59 */
60 protected String sheetName = null;
61
62 /**
63 * Purpose default settings.
64 * <ul>
65 * <li>sheetNum = 0 : take the first sheet of the document</li>
66 * <li>withHeaders = true : skip first read line</li>
67 * <li>beginAtRow = 1 : begin reading or writing at the first line</li>
68 * <li>endAtRow = null : the reading ends at the end of the document</li>
69 * <li>beginAtColumn = null : the reading or writing begins at the first
70 * column on each line</li>
71 * <li>endAtColumn = null: the reading</li>
72 * </ul>
73 */
74 public AbstractSheetSettings() {
75 super();
76 }
77
78 /**
79 *
80 * @param sheetNum
81 * if sheetName parameter is <code>null</code>,try to load sheet
82 * with this index in the sheet list.
83 * @param withHeaders
84 * Only for Reading. If true skip the first read line, considered
85 * as headers line.
86 * @param beginAtRow
87 * specify which line of the file, starts the reading or writing,
88 * If <code>null</code>, start at the first line
89 * @param endAtRow
90 * specify which line of the file ends the reading. If
91 * <code>null</code>, end at the last line. Only on reading
92 * process
93 * @param beginAtColumn
94 * specify which column of each line starts the reading or
95 * writing. Sheet cell number format('A', 'B', 'C',..., 'AA',
96 * ...) or integer Format.May be <code>null</code>, in this case
97 * start at the first column of each line.
98 * @param endAtColumn
99 * Specify which column of each line end reading. Sheet cell
100 * number format('A', 'B', 'C',..., 'AA', ...) or integer Format.
101 * May be <code>null</code>
102 * @param sheetName
103 * if specified, try to load sheet with this name (sheetNum
104 * parameter is ignored then redefined)
105 */
106 public AbstractSheetSettings(int sheetNum, boolean withHeaders, Integer beginAtRow, Integer endAtRow,
107 String beginAtColumn, String endAtColumn, String sheetName) {
108 super();
109 this.sheetNum = sheetNum;
110 this.withHeaders = withHeaders;
111 this.beginAtRow = beginAtRow;
112 this.endAtRow = endAtRow;
113 this.beginAtColumn = beginAtColumn;
114 this.endAtColumn = endAtColumn;
115 this.sheetName = sheetName;
116 }
117
118 /**
119 *
120 * @return sheet index in the sheets list of the document
121 */
122 public int getSheetNum() {
123 return sheetNum;
124 }
125 /**
126 * Sets the sheet index in the sheets list of the document.
127 *
128 * @param sheetNum
129 * the sheet index in the document.
130 * @return the current instance
131 */
132 @SuppressWarnings("unchecked")
133 public T setSheetNum(int sheetNum) {
134 this.sheetNum = sheetNum;
135 return (T) this;
136 }
137
138 /**
139 * indicate if the first row must be skipped on reading or if an headers
140 * line must be written on writing.
141 *
142 * @return with headers or not.
143 */
144 public boolean isWithHeaders() {
145 return withHeaders;
146 }
147
148 /**
149 * Allows to skip headers line on reading or allows to write headers on
150 * writing.
151 *
152 * @param withHeaders
153 * indicate if the document has an header.
154 * @return the current instance
155 */
156 @SuppressWarnings("unchecked")
157 public T setWithHeaders(boolean withHeaders) {
158 this.withHeaders = withHeaders;
159 return (T) this;
160 }
161
162 /**
163 *
164 * @return the row number where to begin reading or writing.
165 */
166 public Integer getBeginAtRow() {
167 return beginAtRow;
168 }
169 /**
170 * Sets the row number where to begin reading or writing.
171 *
172 * @param beginAtRow
173 * May be <code>null</code>(the reading or writing begins at the
174 * first line of the document)
175 * @return the current instance
176 */
177 @SuppressWarnings("unchecked")
178 public T setBeginAtRow(Integer beginAtRow) {
179 this.beginAtRow = beginAtRow;
180 return (T) this;
181 }
182
183 /**
184 * Returns the last row to read if defined. Only for reading.
185 *
186 * @return the last row to read.
187 */
188 public Integer getEndAtRow() {
189 return endAtRow;
190 }
191
192 /**
193 * Set at which line end reading.Only for reading.
194 *
195 * @param endAtRow
196 * May be <code>null</code>(the reading ends at the last line of
197 * the document)
198 * @return the current instance
199 */
200 @SuppressWarnings("unchecked")
201 public T setEndAtRow(Integer endAtRow) {
202 this.endAtRow = endAtRow;
203 return (T) this;
204 }
205
206 /**
207 *
208 * @return the num of the first column to read/write.
209 */
210 public String getBeginAtColumn() {
211 return beginAtColumn;
212 }
213
214 /**
215 * Set from which column begin to read/write each line.
216 *
217 * @param beginAtColumn
218 * May be <code>null</code>(each read or written line start at
219 * the first column)
220 * @return the current instance
221 */
222 @SuppressWarnings("unchecked")
223 public T setBeginAtColumn(String beginAtColumn) {
224 this.beginAtColumn = beginAtColumn;
225 return (T) this;
226 }
227
228 /**
229 * Returns the num of the last column to read if defined. Only for reading.
230 *
231 * @return the num of the last column to read.
232 */
233 public String getEndAtColumn() {
234 return endAtColumn;
235 }
236
237 /**
238 * Set to which column end reading each line.Only for reading.
239 *
240 * @param endAtColumn
241 * May be <code>null</code>
242 * @return the current instance
243 */
244 @SuppressWarnings("unchecked")
245 public T setEndAtColumn(String endAtColumn) {
246 this.endAtColumn = endAtColumn;
247 return (T) this;
248 }
249
250 /**
251 * Returns the sheet name.
252 *
253 * @return the sheet name.
254 */
255 public String getSheetName() {
256 return sheetName;
257 }
258
259 /**
260 * The desire sheet name.
261 *
262 * @param sheetName
263 * the name of the sheet in the spreadsheet document.
264 * @return the current instance
265 */
266 @SuppressWarnings("unchecked")
267 public T setSheetName(String sheetName) {
268 this.sheetName = sheetName;
269 return (T) this;
270 }
271
272 }