net.sf.jxls.reader.OffsetRowCheckImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jxls-reader Show documentation
Show all versions of jxls-reader Show documentation
jXLS is a small and easy-to-use Java library for generating Excel files using XLS templates
package net.sf.jxls.reader;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
/**
* @author Leonid Vysochyn
*/
public class OffsetRowCheckImpl implements OffsetRowCheck {
List cellChecks = new ArrayList();
int offset;
public OffsetRowCheckImpl() {
}
public OffsetRowCheckImpl(int offset) {
this.offset = offset;
}
public OffsetRowCheckImpl(List cellChecks) {
this.cellChecks = cellChecks;
}
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public List getCellChecks() {
return cellChecks;
}
public void setCellChecks(List cellChecks) {
this.cellChecks = cellChecks;
}
public boolean isCheckSuccessful(Row row) {
if( cellChecks.isEmpty() ){
return isRowEmpty( row );
}
for (int i = 0; i < cellChecks.size(); i++) {
OffsetCellCheck offsetCellCheck = (OffsetCellCheck) cellChecks.get(i);
if( !offsetCellCheck.isCheckSuccessful( row ) ){
return false;
}
}
return true;
}
public boolean isCheckSuccessful(XLSRowCursor cursor) {
if( !cursor.hasNext() ){
return isCellChecksEmpty();
}
Row row = cursor.getSheet().getRow( offset + cursor.getCurrentRowNum() );
if( row == null ){
return cellChecks.isEmpty();
}
return isCheckSuccessful( row );
}
private boolean isCellChecksEmpty() {
if( cellChecks.isEmpty() ){
return true;
}
for (int i = 0; i < cellChecks.size(); i++) {
OffsetCellCheck offsetCellCheck = (OffsetCellCheck) cellChecks.get(i);
if( !isCellCheckEmpty(offsetCellCheck) ){
return false;
}
}
return true;
}
private boolean isCellCheckEmpty(OffsetCellCheck cellCheck) {
if( cellCheck.getValue() == null ){
return true;
}
if( cellCheck.getValue().toString().trim().equals("") ){
return true;
}
return false;
}
public void addCellCheck(OffsetCellCheck cellCheck) {
cellChecks.add( cellCheck );
}
private boolean isRowEmpty(Row row) {
if( row == null ){
return true;
}
for(short i = row.getFirstCellNum(); i <= row.getLastCellNum(); i++){
Cell cell = row.getCell( i );
if( !isCellEmpty( cell ) ){
return false;
}
}
return true;
}
private boolean isCellEmpty(Cell cell) {
if( cell == null ){
return true;
}
switch( cell.getCellType() ){
case Cell.CELL_TYPE_BLANK:
return true;
case Cell.CELL_TYPE_STRING:
String cellValue = cell.getRichStringCellValue().getString();
return cellValue == null || cellValue.length() == 0 || cellValue.trim().length() == 0;
default:
return false;
}
}
}