--- /dev/null
+package org.argeo.suite.workbench.commands;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.argeo.connect.ConnectException;
+import org.argeo.eclipse.ui.EclipseUiUtils;
+
+import jxl.Cell;
+import jxl.CellType;
+import jxl.JXLException;
+import jxl.Sheet;
+import jxl.Workbook;
+import jxl.WorkbookSettings;
+
+/** Centralise useful methods to simplify development with JXL library */
+class JxlUtils {
+
+ public static boolean isEmptyCell(Sheet sheet, int x, int y) {
+ Cell cell = sheet.getCell(x, y);
+ CellType type = cell.getType();
+ return type == CellType.EMPTY;
+ }
+
+ public static String getStringValue(Sheet sheet, int x, int y) {
+ Cell cell = sheet.getCell(x, y);
+ CellType type = cell.getType();
+ String stringValue = null;
+ if (type == CellType.LABEL || type == CellType.NUMBER)
+ stringValue = cell.getContents();
+ return stringValue;
+ }
+
+ public static String getCompulsoryStringValue(Sheet sheet, int x, int y) {
+ Cell cell = sheet.getCell(x, y);
+ CellType type = cell.getType();
+ String stringValue = null;
+ if (type == CellType.LABEL)
+ stringValue = cell.getContents();
+ else if (type == CellType.NUMBER)
+ stringValue = cell.getContents();
+ if (EclipseUiUtils.isEmpty(stringValue))
+ throw new ConnectException("No name defined at [" + x + "," + y + "], cannot parse indicator file");
+ return stringValue;
+ }
+
+ public static Double getNumberValue(Sheet sheet, int x, int y) {
+ Cell cell = sheet.getCell(x, y);
+ CellType type = cell.getType();
+ if (type == CellType.NUMBER)
+ return new Double(cell.getContents());
+ else if (type == CellType.EMPTY)
+ return null;
+ else
+ throw new ConnectException("Not a number at [" + x + "," + y + "]: " + type.toString());
+ }
+
+ public static Sheet getOnlySheet(InputStream in, String encoding) throws IOException {
+ Workbook wkb = toWorkbook(in, encoding);
+ Sheet sheet = wkb.getSheet(0);
+ return sheet;
+ }
+
+ public static Sheet getSheet(InputStream in, String encoding, int index) throws IOException {
+ Workbook wkb = toWorkbook(in, encoding);
+ return wkb.getSheet(index);
+ }
+
+ public static Workbook toWorkbook(InputStream in, String encoding) throws IOException {
+ try {
+ WorkbookSettings ws = new WorkbookSettings();
+ ws.setEncoding(encoding);
+ return Workbook.getWorkbook(in, ws);
+ } catch (JXLException e) {
+ throw new ConnectException("Unable to open XLS file", e);
+ }
+ }
+
+ // Prevents instantiation
+ private JxlUtils() {
+ }
+}