From 6b4c3dbc5dd6a064e7c68395610cb7b764e890ee Mon Sep 17 00:00:00 2001 From: localhorst Date: Thu, 21 Feb 2019 14:57:47 +0100 Subject: [PATCH] initial commit --- src/DBController.java | 201 ++++++++++++++++++++++++++++++++++++++++ src/Exif.java | 39 ++++++++ src/Image.java | 82 +++++++++++++++++ src/ImageFinder.java | 156 +++++++++++++++++++++++++++++++ src/Main.java | 168 ++++++++++++++++++++++++++++++++++ src/Output.java | 79 ++++++++++++++++ src/QueryImages.java | 208 ++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 933 insertions(+) create mode 100644 src/DBController.java create mode 100644 src/Exif.java create mode 100644 src/Image.java create mode 100644 src/ImageFinder.java create mode 100644 src/Main.java create mode 100644 src/Output.java create mode 100644 src/QueryImages.java diff --git a/src/DBController.java b/src/DBController.java new file mode 100644 index 0000000..2f4c323 --- /dev/null +++ b/src/DBController.java @@ -0,0 +1,201 @@ + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +class DBController +{ + + private Connection connection; + + private String DB_PATH_Linux; + + public String dbname = "tlcIndex"; + + public void main() + { + try { + connection = DriverManager + .getConnection("jdbc:sqlite:" + DB_PATH_Linux + dbname + ".db"); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public DBController(String projectPath) + { + this.DB_PATH_Linux = projectPath; + } + + public void connectDatabase() + { // connect to database + System.out.println("Verbinde ... DB name: " + dbname); + try { + if (connection != null) + return; + connection = DriverManager + .getConnection("jdbc:sqlite:" + DB_PATH_Linux + dbname + ".db"); + if (!connection.isClosed()) + System.out.println("DB Datei-Verbindung erstellt"); + } catch (SQLException e) { + throw new RuntimeException(e); + } + Runtime.getRuntime().addShutdownHook(new Thread() { + public void run() + { + try { + if (!connection.isClosed() && connection != null) { + connection.close(); + if (connection.isClosed()) + System.out.println(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + }); + } + + public void createTableImages() + { // create table position + System.out.println("Erstelle Tabelle images"); + try { + Statement stmt = connection.createStatement(); + stmt.executeUpdate("DROP TABLE IF EXISTS images;"); + stmt.executeUpdate( + "CREATE TABLE images (imageCounter, path, day, month, year, hour, minute, size, brightness);"); + } catch (SQLException e) { + System.err.println("Couldn't handle DB-Query"); + e.printStackTrace(); + } + } + + public void fillImages(int imageCounter, String path, int day, int month, + int year, int hour, int minute, int size, int brightness) + { // create new data in table + // System.out.println("Erstelle neuen images eintrag"); + try { + PreparedStatement ps = connection.prepareStatement( + "INSERT INTO images VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);"); + ps.setInt(1, imageCounter); // primary + ps.setString(2, path); + ps.setInt(3, day); + ps.setInt(4, month); + ps.setInt(5, year); + ps.setInt(6, hour); + ps.setInt(7, minute); + ps.setInt(8, size); + ps.setInt(9, brightness); + ps.addBatch(); + connection.setAutoCommit(false); + ps.executeBatch(); // SQL execution + connection.setAutoCommit(true); + } catch (SQLException e) { + System.err.println("Couldn't handle DB-Query"); + e.printStackTrace(); + } + } + + public List query(String pQuery) + { + List list = new ArrayList(); + + try { + Statement stmt = connection.createStatement(); + ResultSet rs = stmt.executeQuery(pQuery); + while (rs.next()) { + list.add(new Image(rs.getInt("imageCounter"), rs.getString("path"), + rs.getInt("day"), rs.getInt("month"), rs.getInt("year"), + rs.getInt("hour"), rs.getInt("minute"), rs.getInt("size"), + rs.getInt("brightness"))); + } // end while + return list; + } catch (SQLException e) { + System.err.println("Couldn't handle DB-Query"); + e.printStackTrace(); + return null; + } + } + + public String getPathFromIndex(int pCounter) + { + try { + Statement stmt = connection.createStatement(); + ResultSet rs = stmt + .executeQuery("SELECT path FROM images WHERE imageCounter = " + + pCounter + " ;"); + return rs.getString("path"); + } catch (SQLException e) { + System.err.println("Couldn't handle DB-Query"); + e.printStackTrace(); + return "Error 404"; + } + } + + public int getHourFromIndex(int pCounter) + { + try { + Statement stmt = connection.createStatement(); + ResultSet rs = stmt + .executeQuery("SELECT hour FROM images WHERE imageCounter = " + + pCounter + " ;"); + return rs.getInt("hour"); + } catch (SQLException e) { + System.err.println("Couldn't handle DB-Query"); + e.printStackTrace(); + return 404; + } + } + + public int getMinuteFromIndex(int pCounter) + { + try { + Statement stmt = connection.createStatement(); + ResultSet rs = stmt + .executeQuery("SELECT minute FROM images WHERE imageCounter = " + + pCounter + " ;"); + return rs.getInt("minute"); + } catch (SQLException e) { + System.err.println("Couldn't handle DB-Query"); + e.printStackTrace(); + return 404; + } + } + + public int getDayFromIndex(int pCounter) + { + try { + Statement stmt = connection.createStatement(); + ResultSet rs = stmt + .executeQuery("SELECT day FROM images WHERE imageCounter = " + + pCounter + " ;"); + return rs.getInt("day"); + } catch (SQLException e) { + System.err.println("Couldn't handle DB-Query"); + e.printStackTrace(); + return 404; + } + } + + public int getSizeFromIndex(int pCounter) + { + try { + Statement stmt = connection.createStatement(); + ResultSet rs = stmt + .executeQuery("SELECT size FROM images WHERE imageCounter = " + + pCounter + " ;"); + return rs.getInt("size"); + } catch (SQLException e) { + System.err.println("Couldn't handle DB-Query"); + e.printStackTrace(); + return 404; + } + } + +} diff --git a/src/Exif.java b/src/Exif.java new file mode 100644 index 0000000..e6648d7 --- /dev/null +++ b/src/Exif.java @@ -0,0 +1,39 @@ + +import com.drew.imaging.ImageMetadataReader; +import com.drew.imaging.ImageProcessingException; +import com.drew.metadata.Metadata; +import com.drew.metadata.exif.ExifSubIFDDirectory; +import java.io.File; +import java.io.IOException; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; +import java.util.Calendar; +import java.util.Date; + +public class Exif +{ + public Calendar getDate(String path) + { + File file = new File(path); + Date date = null; + Calendar calendar = Calendar.getInstance(); + try { + Metadata metadata = ImageMetadataReader.readMetadata(file); + ExifSubIFDDirectory directory = metadata + .getFirstDirectoryOfType(ExifSubIFDDirectory.class); + date = directory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL); + ZonedDateTime cetTimeZoned = ZonedDateTime.of( + new java.sql.Timestamp(date.getTime()).toLocalDateTime(), + ZoneId.of("CET")); + date = java.sql.Timestamp.valueOf(cetTimeZoned + .withZoneSameInstant(ZoneOffset.UTC).toLocalDateTime()); + calendar.setTime(date); + return calendar; + } catch (ImageProcessingException e) { + } catch (IOException e) { + } + return calendar; + } + +} diff --git a/src/Image.java b/src/Image.java new file mode 100644 index 0000000..cbdbb46 --- /dev/null +++ b/src/Image.java @@ -0,0 +1,82 @@ + +public class Image +{ + + private int imageCounter; + + private String path; + + private int day; + + private int month; + + private int year; + + private int hour; + + private int minute; + + private int size; + + private int brightness; + + public Image(int pImageCounter, String pPath, int pDay, int pMonth, + int pYear, int pHour, int pMinute, int pSize, int pBrightnes) + { + this.imageCounter = pImageCounter; + this.path = pPath; + this.day = pDay; + this.month = pMonth; + this.year = pYear; + this.hour = pHour; + this.minute = pMinute; + this.size = pSize; + this.brightness = pBrightnes; + } + + public int getImageCounter() + { + return imageCounter; + } + + public String getPath() + { + return path; + } + + public int getDay() + { + return day; + } + + public int getMonth() + { + return month; + } + + public int getYear() + { + return year; + } + + public int getHour() + { + return hour; + } + + public int getMinute() + { + return minute; + } + + public int getSize() + { + return size; + } + + public int getBrightness() + { + return brightness; + } + +} diff --git a/src/ImageFinder.java b/src/ImageFinder.java new file mode 100644 index 0000000..2006273 --- /dev/null +++ b/src/ImageFinder.java @@ -0,0 +1,156 @@ +import java.io.File; +import java.io.FileFilter; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Arrays; +import org.apache.commons.io.filefilter.WildcardFileFilter; + + +public class ImageFinder +{ + + short maxYears = 5; + int lengthRootFolder; + String rootFolder; + + int currentYear = 0; + int currentMonth = 0; + + String[] monthNames = { "01_January", "02_February", "03_March", + "04_April", "05_May", "06_June", "07_July", "08_August", + "09_September", "10_October", "11_November", "12_December" }; + + Boolean[][] month = new Boolean[maxYears][12]; + + String[] years = new String[maxYears]; + + public ImageFinder(String rootFolder) + { + this.rootFolder = rootFolder; + lengthRootFolder = rootFolder.length(); + } + + String findStartyear() + { + boolean next = true; + int i = 0; // start year + while (next) { + int currentyear = i; + if (Files.isDirectory(Paths.get(rootFolder + currentyear + "/"))) { + next = false; // When a year folder found + } else { + i = i + 1; + next = true; + } + } + return Integer.toString(i); // return first year folder name + } + + public void findYears(int yearCount, String startyear) + { + for (int i = 0; i <= years.length; i++) { + int currentyear = Integer.parseInt(startyear) + (i * 1); + if (Files.isDirectory(Paths.get(rootFolder + currentyear + "/"))) { + // System.out.println("Jahr " + currentyear + " gefunden!"); + years[i] = Integer.toString(currentyear); + yearCount = i + 1; + } else { + // System.out.println("Jahr " + currentyear + " nicht gefunden!"); + } + } + } + + public void findMonths(int yearCount) + { + for (int i = 0; i < years.length; i++) { + // System.out.println(i + " Year-Array: " + years[i]); + if (years[i] != null) { + + for (int j = 0; j < monthNames.length; j++) { + if (Files.isDirectory(Paths + .get(rootFolder + years[i] + "/" + monthNames[j] + "/"))) { + month[i][j] = true; + } else { + month[i][j] = false; + } + } + } else { + break; + } + } + } + + public void printFoundDirectories() + { + for (int i = 0; i < years.length; i++) { + if (years[i] != null) { + System.out.println("Jahr: " + years[i]); + + for (int j = 0; j < 12; j++) { + if (month[i][j]) { + System.out.print(monthNames[j] + ", "); + } + } + System.out.println(""); + } + } + + } + + public String getImagePath(int imageCounter) + { + String path = null; + + + + for (int i = currentYear; i < years.length; i++) { + if (years[i] != null) { + + for (int j = currentMonth; j < month[i].length; j++) { + if(month[i][j]) { + //System.out.println("Patth: " + rootFolder + years[i] + "/" + monthNames[j] + "/" ); + File dir = new File(rootFolder + years[i] + "/" + monthNames[j] + "/"); + FileFilter fileFilter = new WildcardFileFilter( + "*" + convertImageCounter(imageCounter) + "*.jpg"); + File[] files = dir.listFiles(fileFilter); + path = Arrays.toString(files); + path = path.replace("[", ""); + path = path.replace("]", ""); + if ((path == "null") || (files.length == 0)) { + //Nicht gefunden + //System.out.println("error404"); + }else { + //Gefunden + currentMonth = j; + currentYear = i; + return path.substring(lengthRootFolder); + } + } + } + currentMonth = 0; + } + } + return "404"; + } + + private String convertImageCounter(int imageCounter) + { + switch ((int) (Math.log10(imageCounter) + 1)) { + case 1: + return "00000" + Integer.toString(imageCounter); + case 2: + return "0000" + Integer.toString(imageCounter); + case 3: + return "000" + Integer.toString(imageCounter); + case 4: + return "00" + Integer.toString(imageCounter); + case 5: + return "0" + Integer.toString(imageCounter); + case 6: + return Integer.toString(imageCounter); + default: + return "000000"; + } + } + +} diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..e2c31d8 --- /dev/null +++ b/src/Main.java @@ -0,0 +1,168 @@ +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintWriter; +import java.util.Calendar; + +public class Main +{ + // read from UI later + static String rootFolderPath; // = "XXX/home/hendrik/FTP/camera01/"; + + // read from UI later + static String projectPath; // = "XXX/home/hendrik/Schreibtisch/"; + + // read from UI later + static String outputPath; // = "XXX/home/hendrik/Schreibtisch/testeritis/"; + + // read from UI later + static int maxImgageCounter; // = 83584; // read from UI later 16819 + + static boolean log = false; // DonĀ“t output image counter + + static boolean modi = true; // Create Database // False -> Copy/Link images + + // java -jar TLC_PostSW.jar -log -m createDB -r /home/hendrik/FTP/camera01/ + // -p /home/hendrik/Schreibtisch/ -o /home/hendrik/Schreibtisch/testeritis/ + // -n 83584 + public static void main(String[] args) + { + + for (int i = 0; i < args.length; i++) { + //System.out.println(i + ": " +args[i]); + + String value = args[i]; + + if (value.equals("-log")) { + System.out.println("Logging will be used"); + log = true; + } + + if (value.equals("-m")) { + i++; + if (args[i].equals("createDB")) { + modi = true; + System.out.println("[Modi] Index images and create DB"); + } else { + modi = false; + System.out.println("[Modi] Copy or Link images"); + } + } + + if (value.equals("-r")) { + i++; + rootFolderPath = args[i]; + System.out.println("[rootFolderPath] " + rootFolderPath); + } + + if (value.equals("-p")) { + i++; + projectPath = args[i]; + System.out.println("[projectPath] " + projectPath); + } + + if (value.equals("-o")) { + i++; + outputPath = args[i]; + System.out.println("[outputPath] " + outputPath); + } + + if (value.equals("-n")) { + i++; + maxImgageCounter = Integer.parseInt(args[i]); + System.out.println("[maxImgageCounter] " + maxImgageCounter); + } + + if (value.equals("-help")) { + System.out.println( + "-log -m createDB -r /home/hendrik/FTP/camera01/ -p /home/hendrik/Schreibtisch/ -o /home/hendrik/Schreibtisch/testeritis/ -n 83584"); + System.exit(1); + + } + + } + + //System.exit(1); + + if (modi) { + long timeStart; + ImageFinder imgF = new ImageFinder(rootFolderPath); + DBController db = new DBController(projectPath); + Exif exif = new Exif(); + + db.connectDatabase(); + db.createTableImages(); + + String startyear = imgF.findStartyear(); + int yearCount = Integer.parseInt(startyear); + + imgF.findYears(yearCount, startyear); + imgF.findMonths(yearCount); + + if(log = true) { + imgF.printFoundDirectories(); + } + + + timeStart = System.currentTimeMillis(); + System.out.println("Suche ..."); + + try { + PrintWriter missingTxt = new PrintWriter( + projectPath + "missingImages.txt"); + missingTxt.println("Nicht gefundene Bilder: \n"); + float multiplicator = (float) (100.0 / maxImgageCounter); + System.out.println("Multiplicator: " + multiplicator); + for (int i = 0; i <= maxImgageCounter; i++) { + if(log == true) { + float percent = multiplicator * i; + System.out.print(i + "/" + maxImgageCounter + " --> "); + System.out.printf("%.2f", percent); + System.out.println("%"); + } + String path = imgF.getImagePath(i); + // System.out.println(i + " Path: " + path); + if (path != "404") { + // gefunden + File f = new File(rootFolderPath + path); + int size = (int) f.length(); + Calendar calendar = exif.getDate(rootFolderPath + path); + + db.fillImages(i, path, calendar.get(Calendar.DAY_OF_MONTH), + (calendar.get(Calendar.MONTH) + 1), + calendar.get(Calendar.YEAR), + calendar.get(Calendar.HOUR_OF_DAY), + calendar.get(Calendar.MINUTE), size, 1234); + + } else { + // nicht gefunden + System.out.println("Nicht gefunden: " + i); + missingTxt.println(i); + } + } + missingTxt.close(); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + double processingTime = ((System.currentTimeMillis() - timeStart) + * 0.001); + System.out.println("Process time: " + processingTime + " seconds."); + } else { + /////////////////////////////////////////////////////////////////// + DBController db = new DBController(projectPath); + db.connectDatabase(); + QueryImages qi = new QueryImages(db, outputPath, rootFolderPath); + + //qi.outputImagesFromHour(0, 18, "copy", true); + + //qi.outputImagesFromHourToHour(0, 8, 19, "copy", false); + + qi.outputImagesEveryHour(0, 8, 19, "copy", false); + + //qi.outputImagesFromHourAndMinute(40177, 8, 30, "copy", true); + + // qi.outputImagesFromStartToEnd(16185, 16282, 10, "copy", false, + // 2000000); + } + } +} diff --git a/src/Output.java b/src/Output.java new file mode 100644 index 0000000..96ec761 --- /dev/null +++ b/src/Output.java @@ -0,0 +1,79 @@ +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Calendar; + +import org.apache.commons.io.FileUtils; + +public class Output +{ + + private String outputpath; + + private String foldername; + + public Output(String path) + { + outputpath = path; + } + + public void createFolder() + { + + Calendar calendar = Calendar.getInstance(); + foldername = Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)) + "." + + Integer.toString((calendar.get(Calendar.MONTH) + 1)) + "." + + Integer.toString(calendar.get(Calendar.YEAR)) + "_" + + Integer.toString(calendar.get(Calendar.HOUR_OF_DAY)) + ":" + + Integer.toString(calendar.get(Calendar.MINUTE)) + "/"; + + // System.out.println("ordner: " + outputpath+foldername); + File dir = new File(outputpath + foldername); + dir.mkdir(); + + } + + public void copyImage(String rootpath, String imagePath) + { + String imagename = imagePath.substring(imagePath.lastIndexOf("/") + 1); + + File src = new File(rootpath + imagePath); + File dst = new File(outputpath + foldername + imagename); + + try { + FileUtils.copyFile(src, dst); + } catch (IOException e) { + // TODO Auto-generated catch block + System.out.println("Konnte Datei nicht kopieren!"); + e.printStackTrace(); + } + } + + public void linkImage(String rootpath, String imagePath) + { + String imagename = imagePath.substring(imagePath.lastIndexOf("/") + 1); + Path newLink = Paths.get(outputpath + foldername + imagename); + Path target = Paths.get(rootpath + imagePath); + try { + Files.createSymbolicLink(newLink, target); + } catch (IOException x) { + System.err.println(x); + } catch (UnsupportedOperationException x) { + // Some file systems do not support symbolic links. + System.err.println(x); + } + + } + + public void outputMethod(String method, String rootpath, String imagePath) + { + if (method == "copy") { + copyImage(rootpath, imagePath); + } + if (method == "link") { + linkImage(rootpath, imagePath); + } + } +} diff --git a/src/QueryImages.java b/src/QueryImages.java new file mode 100644 index 0000000..0b41664 --- /dev/null +++ b/src/QueryImages.java @@ -0,0 +1,208 @@ +import java.util.Calendar; +import java.util.List; + +public class QueryImages +{ + + private DBController db; + + private Output op; + + private String outputPath; + + private String rootFolderPath; + + public QueryImages(DBController pDB, String pOutputPath, + String pRootFolderPath) + { + this.db = pDB; + this.outputPath = pOutputPath; + this.rootFolderPath = pRootFolderPath; + op = new Output(outputPath); + op.createFolder(); + } + + public boolean checkIfSunday(int day, int month, int year) + { + Calendar cal = Calendar.getInstance(); + + cal.set(Calendar.YEAR, year); + cal.set(Calendar.MONTH, (month - 1)); + cal.set(Calendar.DAY_OF_MONTH, day); + + // System.out.println("CAL: " + cal.getTime()); + + if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + // System.out.println("Sunday! " + day + "." + month + "." + year); + return false; + } + return true; + } + + private boolean timeCheck(int pH1, int pM1, int pH2, int pM2, int pInterval) + { + int time1 = (pH1 * 60) + pM1; + int time2 = (pH2 * 60) + pM2; + + if ((time2 - time1) >= pInterval) { + return true; + } + return false; + } + + public void outputImagesFromHour(int startcounter, int hour, String method, boolean sunday) + { + List resultList = db.query( + "SELECT imageCounter, path, day, month, year, hour, minute, size, brightness FROM images WHERE hour = " + + hour + " AND minute <= 5 AND minute > 0 ;"); + + for (int i = 0; i < resultList.size(); i++) { + + Image image = resultList.get(i); + + + if(image.getImageCounter() < startcounter) { + continue; + } + + if (!sunday) { + if (checkIfSunday(image.getDay(), image.getMonth(), + image.getYear())) { + System.out.println("Path = " + image.getPath()); + op.outputMethod(method, rootFolderPath, image.getPath()); + } + } else { + System.out.println("Path = " + image.getPath()); + op.outputMethod(method, rootFolderPath, image.getPath()); + } + } + resultList = null; //free + } + + public void outputImagesFromHourToHour(int startcounter, int starthour, int endhour, String method, boolean sunday) + { + List resultList = db.query( + "SELECT imageCounter, path, day, month, year, hour, minute, size, brightness FROM images WHERE hour >= " + + starthour + " AND hour < " + endhour + ";"); + + for (int i = 0; i < resultList.size(); i++) { + + Image image = resultList.get(i); + + + if(image.getImageCounter() < startcounter) { + continue; + } + + if (!sunday) { + if (checkIfSunday(image.getDay(), image.getMonth(), + image.getYear())) { + System.out.println("Path = " + image.getPath()); + op.outputMethod(method, rootFolderPath, image.getPath()); + } + } else { + System.out.println("Path = " + image.getPath()); + op.outputMethod(method, rootFolderPath, image.getPath()); + } + } + resultList = null; //free + } + + public void outputImagesFromHourAndMinute(int startcounter, int hour, int minute, String method, boolean sunday) + { +// List resultList = db.query( +// "SELECT imageCounter, path, day, month, year, hour, minute, size, brightness FROM images WHERE hour = " +// + hour + " AND minute >= ("+ (minute-3) +") AND minute <= ( "+ (minute+3) + ") ;"); + + List resultList = db.query( + "SELECT imageCounter, path, day, month, year, hour, minute, size, brightness FROM images WHERE hour = " + + hour + " AND minute = " + minute + ";"); + + for (int i = 0; i < resultList.size(); i++) { + Image image = resultList.get(i); + if(image.getImageCounter() < startcounter) { + //System.out.println(image.getImageCounter()); + continue; + } + if (!sunday) { + if (checkIfSunday(image.getDay(), image.getMonth(), + image.getYear())) { + System.out.println("Path = " + image.getPath()); + op.outputMethod(method, rootFolderPath, image.getPath()); + } + } else { + System.out.println("Path = " + image.getPath()); + op.outputMethod(method, rootFolderPath, image.getPath()); + } + } + resultList = null; //free + } + + public void outputImagesFromStartToEnd(int pStart, int pEnd, int pMinute, + String method, boolean sunday, int pSize) + { + op.createFolder(); + + int hour = db.getHourFromIndex(pStart); + int minute = db.getMinuteFromIndex(pStart); + int day = db.getDayFromIndex(pStart); + + for (int i = pStart; i < pEnd; i++) { + String path = db.getPathFromIndex(i); + if ((path == "Error 404") || (path == null)) { + continue; + } + + if (day != db.getDayFromIndex(i)) { + // neuer Tag + day = db.getDayFromIndex(i); + hour = db.getHourFromIndex(i); + minute = db.getMinuteFromIndex(i); + } + + if (timeCheck(hour, minute, db.getHourFromIndex(i), + db.getMinuteFromIndex(i), pMinute)) { + + if (db.getSizeFromIndex(i) > pSize) { + System.out.println("Pfad: " + db.getPathFromIndex(i)); + // System.out.println(db.getSizeFromIndex(i)); + hour = db.getHourFromIndex(i); + minute = db.getMinuteFromIndex(i); + op.outputMethod(method, rootFolderPath, path); + } + } else { + // System.out.println("Nein: Pfad: " + db.getPathFromIndex(i)); + } + } + } + + public void outputImagesEveryHour(int startcounter, int starthour, int endhour, String method, boolean sunday) + { + List resultList = db.query( + "SELECT imageCounter, path, day, month, year, hour, minute, size, brightness FROM images WHERE (hour >= " + + starthour + " AND hour <= " + endhour + ") AND minute <= 5 AND minute > 0 ;"); + + for (int i = 0; i < resultList.size(); i++) { + + Image image = resultList.get(i); + + + if(image.getImageCounter() < startcounter) { + continue; + } + + if (!sunday) { + if (checkIfSunday(image.getDay(), image.getMonth(), + image.getYear())) { + System.out.println("Path = " + image.getPath()); + op.outputMethod(method, rootFolderPath, image.getPath()); + } + } else { + System.out.println("Path = " + image.getPath()); + op.outputMethod(method, rootFolderPath, image.getPath()); + } + } + resultList = null; //free + } + +}