157 lines
3.7 KiB
Java
157 lines
3.7 KiB
Java
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";
|
|
}
|
|
}
|
|
|
|
}
|