/*
* Copyright 2005-2010 Ignis Software Tools Ltd. All rights reserved.
*/
package jsystem.extensions.analyzers.tabletext;
import jsystem.framework.analyzer.AnalyzerParameterImpl;
/**
* This analyzer is used to retrieve the value of a table cell using 3
* parameters: 1. The header of the key. 2. The key. 3. The header of the cell
* required.
*
* After calling the analyzer you should call to getCellValue method.
*
* @author guy.arieli
*
*/
public class GetTableCellValue extends AnalyzerParameterImpl {
String keyHeader;
String keyFieldValue;
String valueHeader;
String cellValue;
private int keyHeaderIndex = -1;
protected TTable table;
public GetTableCellValue(String keyHeader, String keyFieldValue, String valueHeader) {
this.keyHeader = keyHeader;
this.keyFieldValue = keyFieldValue;
this.valueHeader = valueHeader;
}
public GetTableCellValue(int keyHeaderIndex, String keyFieldValue, String valueHeader) {
this.keyHeaderIndex = keyHeaderIndex;
this.keyFieldValue = keyFieldValue;
this.valueHeader = valueHeader;
}
public void analyze() {
title = "TableCellValue: KeyHeader: " + keyHeader + " keyFieldValue: " + keyFieldValue + " valueHeader: "
+ valueHeader;
StringBuffer sb = new StringBuffer("KeyHeader: " + keyHeader + "\nkeyFieldValue: " + keyFieldValue
+ "\nvalueHeader: " + valueHeader + "\n");
int rowNumber = 0;
try {
// table = new Table((String)testAgainst);
if (testAgainst instanceof TableRepository) {
table = ((TableRepository) testAgainst).getTable();
} else {
table = new Table((String) testAgainst);
}
} catch (Exception e) {
sb.append("\r\nUnable to init table: " + e.getMessage());
sb.append(testAgainst);
message = sb.toString();
status = false;
return;
}
try {
if (keyHeaderIndex == -1)
rowNumber = table.getFirstRowIndex(keyHeader, keyFieldValue);
else
rowNumber = table.getFirstRowIndex(keyHeaderIndex, keyFieldValue);
} catch (Exception e) {
sb.append("\r\nUnable to find key row: " + e.getMessage());
sb.append(testAgainst);
message = sb.toString();
status = false;
return;
}
int columnNumber = 0;
try {
columnNumber = table.getHeaderFieldIndex(valueHeader);
} catch (Exception e) {
sb.append("\r\nUnable to header field: " + e.getMessage());
sb.append(testAgainst);
message = sb.toString();
status = false;
return;
}
cellValue = table.getCell(rowNumber, columnNumber);
sb.append("Cell Value: " + cellValue + "\n");
sb.append(testAgainst);
message = sb.toString();
status = true;
}
public String getCellValue() {
return cellValue;
}
}