package org.insightech.er.editor.model.dbexport.excel.sheet_generator;
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.index.Index;
import org.insightech.er.util.POIUtils;
public class AllIndicesSheetGenerator extends IndexSheetGenerator {
@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)), diagram.getDiagramContents()
.getIndexSet());
HSSFSheet oldSheet = workbook.getSheetAt(sheetNo);
boolean first = true;
for (ERTable table : diagram.getDiagramContents().getContents()
.getTableSet()) {
if (diagram.getCurrentCategory() != null
&& !diagram.getCurrentCategory().contains(table)) {
continue;
}
for (Index index : table.getIndexes()) {
if (first) {
first = false;
} else {
POIUtils.copyRow(oldSheet, newSheet,
loopDefinition.startLine - 1, oldSheet
.getLastRowNum(), newSheet.getLastRowNum()
+ loopDefinition.spaceLine + 1);
}
this.setIndexData(workbook, newSheet, index);
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_indices_template";
}
}