com.monitorjbl.xlsx.impl.StreamingWorkbook Maven / Gradle / Ivy
package com.monitorjbl.xlsx.impl;
import com.monitorjbl.xlsx.exceptions.MissingSheetException;
import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.formula.udf.UDFFinder;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.PictureData;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.SheetVisibility;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;
public class StreamingWorkbook implements Workbook, AutoCloseable {
private final StreamingWorkbookReader reader;
public StreamingWorkbook(StreamingWorkbookReader reader) {
this.reader = reader;
}
int findSheetByName(String name) {
for(int i = 0; i < reader.getSheetProperties().size(); i++) {
if(reader.getSheetProperties().get(i).get("name").equals(name)) {
return i;
}
}
return -1;
}
/* Supported */
/**
* {@inheritDoc}
*/
@Override
public Iterator iterator() {
return reader.iterator();
}
/**
* {@inheritDoc}
*/
@Override
public Iterator sheetIterator() {
return iterator();
}
/**
* {@inheritDoc}
*/
@Override
public String getSheetName(int sheet) {
return reader.getSheetProperties().get(sheet).get("name");
}
/**
* {@inheritDoc}
*/
@Override
public int getSheetIndex(String name) {
return findSheetByName(name);
}
/**
* {@inheritDoc}
*/
@Override
public int getSheetIndex(Sheet sheet) {
if(sheet instanceof StreamingSheet) {
return findSheetByName(sheet.getSheetName());
} else {
throw new UnsupportedOperationException("Cannot use non-StreamingSheet sheets");
}
}
/**
* {@inheritDoc}
*/
@Override
public int getNumberOfSheets() {
return reader.getSheets().size();
}
/**
* {@inheritDoc}
*/
@Override
public Sheet getSheetAt(int index) {
return reader.getSheets().get(index);
}
/**
* {@inheritDoc}
*/
@Override
public Sheet getSheet(String name) {
int index = getSheetIndex(name);
if(index == -1) {
throw new MissingSheetException("Sheet '" + name + "' does not exist");
}
return reader.getSheets().get(index);
}
/**
* {@inheritDoc}
*/
@Override
public boolean isSheetHidden(int sheetIx) {
return "hidden".equals(reader.getSheetProperties().get(sheetIx).get("state"));
}
/**
* {@inheritDoc}
*/
@Override
public boolean isSheetVeryHidden(int sheetIx) {
return "veryHidden".equals(reader.getSheetProperties().get(sheetIx).get("state"));
}
/**
* {@inheritDoc}
*/
@Override
public void close() throws IOException {
reader.close();
}
/* Not supported */
/**
* Not supported
*/
@Override
public int getActiveSheetIndex() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void setActiveSheet(int sheetIndex) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public int getFirstVisibleTab() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void setFirstVisibleTab(int sheetIndex) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void setSheetOrder(String sheetname, int pos) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void setSelectedTab(int index) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void setSheetName(int sheet, String name) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public Sheet createSheet() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public Sheet createSheet(String sheetname) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public Sheet cloneSheet(int sheetNum) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void removeSheetAt(int index) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public Font createFont() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public Font findFont(boolean b, short i, short i1, String s, boolean b1, boolean b2, short i2, byte b3) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public short getNumberOfFonts() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public int getNumberOfFontsAsInt() { throw new UnsupportedOperationException(); }
/**
* Not supported
*/
@Override
public Font getFontAt(short idx) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public Font getFontAt(int i) { throw new UnsupportedOperationException(); }
/**
* Not supported
*/
@Override
public CellStyle createCellStyle() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public int getNumCellStyles() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public CellStyle getCellStyleAt(int i) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void write(OutputStream stream) throws IOException {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public int getNumberOfNames() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public Name getName(String name) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public List extends Name> getNames(String s) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public List extends Name> getAllNames() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public Name getNameAt(int nameIndex) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public Name createName() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public int getNameIndex(String name) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void removeName(int index) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void removeName(String name) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void removeName(Name name) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public int linkExternalWorkbook(String name, Workbook workbook) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void setPrintArea(int sheetIndex, String reference) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void setPrintArea(int sheetIndex, int startColumn, int endColumn, int startRow, int endRow) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public String getPrintArea(int sheetIndex) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void removePrintArea(int sheetIndex) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public MissingCellPolicy getMissingCellPolicy() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void setMissingCellPolicy(MissingCellPolicy missingCellPolicy) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public DataFormat createDataFormat() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public int addPicture(byte[] pictureData, int format) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public List extends PictureData> getAllPictures() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public CreationHelper getCreationHelper() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public boolean isHidden() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void setHidden(boolean hiddenFlag) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void setSheetHidden(int sheetIx, boolean hidden) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public SheetVisibility getSheetVisibility(int i) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void setSheetVisibility(int i, SheetVisibility sheetVisibility) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void addToolPack(UDFFinder toopack) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public void setForceFormulaRecalculation(boolean value) {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public boolean getForceFormulaRecalculation() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public SpreadsheetVersion getSpreadsheetVersion() {
throw new UnsupportedOperationException();
}
/**
* Not supported
*/
@Override
public int addOlePackage(byte[] bytes, String s, String s1, String s2) throws IOException {
throw new UnsupportedOperationException();
}
}