package org.insightech.er.editor.model.dbexport.excel.sheet_generator;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.eclipse.core.runtime.IProgressMonitor;
import org.insightech.er.editor.model.ERDiagram;
import org.insightech.er.editor.model.ObjectModel;
import org.insightech.er.editor.model.dbexport.excel.ExportToExcelManager.LoopDefinition;
import org.insightech.er.editor.model.diagram_contents.element.node.table.ERTable;
import org.insightech.er.editor.model.diagram_contents.element.node.table.TableSet;
import org.insightech.er.util.POIUtils;
public class AllTablesSheetGenerator extends TableSheetGenerator {
@Override
public void generate(IProgressMonitor monitor, HSSFWorkbook workbook,
int sheetNo, boolean useLogicalNameAsSheetName,
Map<String, Integer> sheetNameMap,
Map<String, ObjectModel> sheetObjectMap, ERDiagram diagram,
Map<String, LoopDefinition> loopDefinitionMap) {
this.clear();
LoopDefinition loopDefinition = loopDefinitionMap.get(this
.getTemplateSheetName());
HSSFSheet newSheet = createNewSheet(workbook, sheetNo,
loopDefinition.sheetName, sheetNameMap);
sheetObjectMap.put(workbook.getSheetName(workbook
.getSheetIndex(newSheet)), new TableSet());
HSSFSheet oldSheet = workbook.getSheetAt(sheetNo);
List<ERTable> tableContents = null;
if (diagram.getCurrentCategory() != null) {
tableContents = diagram.getCurrentCategory().getTableContents();
} else {
tableContents = diagram.getDiagramContents().getContents()
.getTableSet().getList();
}
boolean first = true;
for (ERTable table : tableContents) {
if (first) {
first = false;
} else {
POIUtils
.copyRow(oldSheet, newSheet,
loopDefinition.startLine - 1, oldSheet
.getLastRowNum(), newSheet
.getLastRowNum()
+ loopDefinition.spaceLine + 1);
}
this.setTableData(workbook, newSheet, table);
newSheet.setRowBreak(newSheet.getLastRowNum()
+ loopDefinition.spaceLine);
monitor.worked(1);
}
if (first) {
for (int i = loopDefinition.startLine - 1; i <= newSheet
.getLastRowNum(); i++) {
HSSFRow row = newSheet.getRow(i);
if (row != null) {
newSheet.removeRow(row);
}
}
}
}
@Override
public String getTemplateSheetName() {
return "all_tables_template";
}
@Override
public int count(ERDiagram diagram) {
return diagram.getDiagramContents().getContents().getTableSet()
.getList().size();
}
}