Check Overlap
unknown
java
3 years ago
3.6 kB
23
Indexable
package crossCheck;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
public class CheckOverlap {
public static void main(String[] args) throws Exception {
XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
FileInputStream fis = new FileInputStream(new File("/home/thaontv/Downloads/input_test.xlsx"));
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sheet = wb.getSheetAt(0);
FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator();
for (Row row : sheet) //iteration over row using for each loop
{
if (row == sheet.getRow(0)) continue;
boolean validInput = true;
for (int i = 0; i < 6; i++) {
if (formulaEvaluator.evaluateInCell(row.getCell(i)).getCellType() != CellType.NUMERIC) {
validInput = false;
}
;
}
if (validInput) {
int x1 = (int) row.getCell(0).getNumericCellValue();
int y1 = (int) row.getCell(1).getNumericCellValue();
int l1 = (int) row.getCell(2).getNumericCellValue();
int x2 = (int) row.getCell(3).getNumericCellValue();
int y2 = (int) row.getCell(4).getNumericCellValue();
int l2 = (int) row.getCell(5).getNumericCellValue();
// System.out.println("Check overlap: " + checkOverlap(x1, y1, l1, x2, y2, l2));
run.setText("Check overlap: " + checkOverlap(x1, y1, l1, x2, y2, l2));
} else {
// System.out.print("Invalid input");
run.setText("Invalid input");
}
run.addBreak();
}
FileOutputStream out = new FileOutputStream(new File("/home/thaontv/Downloads/output_test.docx"));
document.write(out);
out.close();
System.out.println("written successully");
}
static boolean checkOverlap(int x1, int y1, int l1, int x2, int y2, int l2) {
boolean check1 = checkXLine(x1 - l1, x1 + l1, x2 - l2, x2 + l2, y1, y2);
boolean check2 = checkYLine(y1 - l1, y1 + l1, y2 - l2, y2 + l2, x1, x2);
boolean check3 = checkXYLine(x1 - l1, x1 + l1, y1, y2 - l2, y2 + l2, x2);
boolean check4 = checkXYLine(x2 - l2, x2 + l2, y2, y1 - l1, y1 + l1, x1);
return !(check1 && check2 && check3 && check4);
}
static boolean checkXLine(int min1, int max1, int min2, int max2, int y1, int y2) {
if (y1 != y2) return true;
if (min1 > max2 || max1 < min2) return true;
return false;
}
static boolean checkYLine(int min1, int max1, int min2, int max2, int x1, int x2) {
if (x1 != x2) return true;
if (min1 > max2 || max1 < min2) return true;
return false;
}
static boolean checkXYLine(int minX, int maxX, int Y, int minY, int maxY, int X) {
if (X < minX || X > maxX) return true;
if (Y < minY || Y > maxY) return true;
return false;
}
}
Editor is loading...