package com.tesr;
import org.apache.poi.ss.usermodel.*;
import javax.swing.*;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
public class OldMain {
public static void main(String[] args) {
try {
// Variables
//Optimizer myBasicOptimizer = new Optimizer();
System.out.println("Optimizer instantiated...");
// Select Excel File which the user wants to investigate regarding machine optimization potential
// hier wieder ändern String excelFileName = selectExcelFile();
//hier wieder ändern System.out.println("File via openFileDialog selected: " + excelFileName);
// Read out data from excel sheet via Apache POI
// hier wieder ändern readExcelFileData(excelFileName);
Sheet sheet = readExcelFileData("/Users/michel/Downloads/Project/ProductionSheet.xlsx");
List<Row> rows = sortExcelFileData(sheet,19);
// Optimize machine planning and scheduling
//myBasicOptimizer.process();
// Write optimized data back to excel sheet
writeExcelFileData("/Users/michel/Downloads/Project/ProductionSheet NEU.xlsx", rows, 1);
System.out.println("Optimization done.");
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
// Select Excel file which we want to read out and retrieve necessary machine data
private static String selectExcelFile(){
String strFilename = "";
try {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));
int result = fileChooser.showOpenDialog(null);
switch(result) {
case JFileChooser.APPROVE_OPTION:
File selectedFile = fileChooser.getSelectedFile();
// user made a selection -> return selected file path
strFilename = selectedFile.toString();
break;
case JFileChooser.CANCEL_OPTION:
// user made no selection -> shutdown application
System.out.println("No selection made. Shutting down application...");
System.exit(0);
break;
default:
System.out.println("Something went wrong. Shutting down application...");
System.exit(0);
break;
}
} catch (Exception exFileSelection) {
System.out.println("Error in selectExcelFile()");
System.out.println("Error details: " + exFileSelection.toString());
} finally {
return strFilename;
}
}
private static List<Row> sortExcelFileData(Sheet sheet, int sortColumn)
{
List<Row> rows = new ArrayList<>();
try {
for (int i = 1; i<sheet.getPhysicalNumberOfRows();i ++ ) // i = 2???? es werden keine 0-Zeilen erzeugt
{
rows.add(sheet.getRow(i)); //(new SortRow(sheet.getRow(i).getCell(19).getStringCellValue(), sheet.getRow(i)));
}
// ToDo: Sortieren bei Zahlenwerten?
rows.sort((r1, r2) -> r1.getCell(sortColumn).getStringCellValue().compareTo(r2.getCell(sortColumn).getStringCellValue()));
}
catch (Exception exp) {
System.out.println("Error in writeExcelFileData()");
System.out.println("Error details: " + exp.toString());
}
return rows;
}
private static Sheet readExcelFileData(String fileName) {
Sheet sheet = null;
try {
Workbook workbook = WorkbookFactory.create(new File(fileName));
sheet = workbook.getSheetAt(1);
} catch (Exception exReadExcelFile) {
System.out.println("Error in readExcelFileData()");
System.out.println("Error details: " + exReadExcelFile.toString());
}
return sheet;
}
private static void writeExcelFileData(String filename, List<Row> rows, int startRow){
try {
Workbook workbook = WorkbookFactory.create(new File("/Users/michel/Downloads/Project/ProductionSheet.xlsx"));
Sheet sheet = workbook.getSheet("Input");
for (int i = 0; i < rows.size(); i++)
{
Row row = sheet.getRow(rows.get(i).getRowNum());
row.setRowNum(i + startRow);
for (int x = 0; x < rows.get(i).getPhysicalNumberOfCells(); x++)
{
if (rows.get(i).getCell(x).getCellType() == CellType.FORMULA)
{
String cellFormula = rows.get(i).getCell(x).getCellFormula();
String[] formulaSplitted = cellFormula.split("\\*");
for (int y = 0; y < formulaSplitted.length; y++) {
if (!formulaSplitted[y].matches("^[0-9]*$")) {
formulaSplitted[y] = formulaSplitted[y].replace(String.valueOf(rows.get(i).getRowNum() + 1), String.valueOf(i + startRow + 1));
}
}
row.createCell(x).setCellFormula(String.join("*", formulaSplitted));
}
else
{
System.out.println(rows.get(i).getCell(x).getCellType());
}
}
}
try (FileOutputStream outputStream = new FileOutputStream(filename)) {
workbook.write(outputStream);
}
System.out.println("Called writeExcelFileData()");
} catch (Exception exWriteExcelFile) {
System.out.println("Error in writeExcelFileData()");
System.out.println("Error details: " + exWriteExcelFile.toString());
}
}
}