package org.pixelgaffer.turnierserver.codr.utilities;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import javafx.scene.image.Image;
/**
* übernimmt die Verwaltung von Resourcen, wie z.B. das Codr-Bild
*
* @author Philip
*/
public class Resources {
/**
* Gibt das Default-Bild für die KIs zurück
*/
public static Image defaultPicture() {
try {
// return new Image(Paths.class.getResourceAsStream("default_ai.png"));
return new Image(Paths.class.getResourceAsStream("CodrIcon128.png"));
} catch (Exception ex) {
ErrorLog.write("Default-Bild konnte nicht geladen werden. " + ex);
return null;
}
}
public static Image codrIcon() {
try {
return new Image(Paths.class.getResourceAsStream("CodrIcon128.png"));
} catch (Exception ex) {
ErrorLog.write("Default-Bild konnte nicht geladen werden. " + ex);
return null;
}
}
public static Image codr() {
try {
return new Image(Paths.class.getResourceAsStream("Codr200.png"));
} catch (Exception ex) {
ErrorLog.write("Default-Bild konnte nicht geladen werden. " + ex);
return null;
}
}
/**
* berechnet den MD5 Hash einer Datei und lädt sie herunter
*/
public static byte[] getHash(File file) throws FileNotFoundException, IOException {
java.security.MessageDigest digest = null;
try {
digest = java.security.MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
return null;
}
InputStream in = new FileInputStream(file);
byte[] buf = new byte[8192]; int read;
while ((read = in.read(buf)) > 0)
digest.update(buf, 0, read);
in.close();
return digest.digest();
}
/**
* berechnet den Hash von zwei Dateien und vergleicht, ob sie identisch sind.
* @return true, wenn sie identisch sind
*/
public static boolean compareFiles(File f1, File f2) throws FileNotFoundException, IOException {
return Arrays.equals(getHash(f1), getHash(f2));
}
/**
* Gibt das Default-Bild für die KIs zurück
*/
public static Image imageFromFile(File file) {
try {
return imageFromFile(file.getPath());
} catch (Exception e) {
return null;
}
}
/**
* Gibt das Bild, das an der übergebenen Stelle gespeichert ist, zurück
*/
public static Image imageFromFile(String path) {
try {
FileInputStream fin = new FileInputStream(path);
Image img = new Image(fin);
fin.close();
return img;
} catch (Exception e) {
return null;
}
}
}