package de.tud.kom.socom.util.media;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import de.tud.kom.socom.GlobalConfig;
import de.tud.kom.socom.util.LoggerFactory;
import de.tud.kom.socom.util.ResourceLoader;
public class MediaHandler implements GlobalConfig{
private static final String GAME_IMG_DIR = ResourceLoader.getResource("war_dir") + "/" + DATA_DIR + "/" + GAME_IMAGE_DIR;
public static String saveGameImage(String game, String version, String extension, InputStream imageStream) {
File imageDir = new File(GAME_IMG_DIR);
checkDir(imageDir);
int i = 0;
File f = null;
while ((f = new File(imageDir, game + "_" + version + "_image" + i++ + "." + extension)).exists())
;
copyFile(f, imageStream);
return GAME_IMAGE_DIR + "/" + f.getName();
}
public static String saveContextImage(String game, String version, String contextid, String extension, InputStream imageStream) {
File imageDir = new File(GAME_IMG_DIR);
checkDir(imageDir);
int i = 0;
File f = null;
while ((f = new File(imageDir, game + "_" + version + "_context_" + contextid + "_image" + i++ + "." + extension)).exists())
;
copyFile(f, imageStream);
return GAME_IMAGE_DIR + "/" + f.getName();
}
private static void checkDir(File imageDir) {
if (!imageDir.exists())
imageDir.mkdirs();
}
private static File copyFile(File f, InputStream imageStream) {
try {
OutputStream out = new FileOutputStream(f);
int read = 0;
byte[] bytes = new byte[1024];
while ((read = imageStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
imageStream.close();
out.flush();
out.close();
} catch (IOException e) {
LoggerFactory.getLogger().Error(e);
}
return f;
}
}