TLC_Post_Server/src/ImageFinder.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";
}
}
}