1 /* 2 * Copyright 2012 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.bean.getter.impl; 15 16 import olg.csv.base.Cell; 17 import olg.csv.base.Row; 18 import olg.csv.bean.getter.AbstractGetter; 19 import olg.csv.bean.getter.GetterException; 20 21 /** 22 * Default getter based on extract cell from a row. 23 * 24 */ 25 public final class DefaultGetter extends AbstractGetter { 26 27 /** 28 * the cell num. 29 */ 30 private int rang; 31 32 /** 33 * Returns the rank of the target cell. 34 * 35 * @return the number of the cell 36 */ 37 public int getRang() { 38 return rang; 39 } 40 41 /** 42 * Sets the rank of the target cell. 43 * 44 * @param rang 45 * the cell num. Must not be greater or equals 0. 46 */ 47 public void setRang(int rang) { 48 if (rang < 0) { 49 throw new IllegalArgumentException("Rang only greater or equals 0"); 50 } 51 this.rang = rang; 52 } 53 54 /** 55 * Extracts the target cell value from the given row. 56 * 57 * @param line 58 * the row from which get the string. 59 * @return the string. 60 */ 61 @Override 62 protected String doGet(Row line) { 63 String retour = null; 64 if (line != null) { 65 if (line.getSize() > rang) { 66 Cell cell = line.getCell(rang); 67 retour = (cell == null ? null : cell.getValue()); 68 } else { 69 throw new GetterException(String.format("rang[%s] too high in the row %s", rang, line)); 70 } 71 } 72 return retour; 73 } 74 75 /** 76 * Constructor with cell rank in argument. 77 * 78 * @param rang 79 * a non negative integer or a string in Sheet cell number format 80 * (as C, AB ,... ) 81 */ 82 public DefaultGetter(String rang) { 83 super(); 84 this.rang = Cell.fromSheetCellNumber(rang); 85 86 } 87 }