package com.itstherules.mediacentre.controller;
import java.io.File;
import java.io.IOException;
import java.io.Writer;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import com.itstherules.image.AWTImage;
import com.itstherules.image.IImage;
import com.itstherules.stream.model.DirectoriesModel;
import com.itstherules.stream.model.ItemsModel;
public class ThumbnailsController extends BaseController {
@Override
public void update(Map<String, Object> parameters, HttpServletResponse response) throws IOException {
Writer writer = response.getWriter();
writer.write("<html><head><link type=\"text/css\" rel=\"stylesheet\" href=\"/css/media_centre.css\" /></head><body>");
writer.write("<table width=\"750\" id=\"mainScreen\" height=\"100\" cellpadding=\"0\" cellspacing=\"0\"><tr><td valign=\"top\" align=\"left\">" +
"<a href=\"/index.html\"><img src=\"/images/logo_icon.png\" border=\"0\" /></a></td><td valign=\"top\" align=\"left\"><img src=\"/images/logo.png\" />" +
"</td></tr></table>");
generateThumbnails(parameters, writer);
writer.write("<br/>Done creating thumbnails. Click <a href=\"/photoalbums2/list/index.html\">here</a> to continue");
writer.write("</body></html>");
writer.close();
}
public void generateThumbnails(Map<String, Object> parameters, Writer writer) {
String baseDirectory = "photos/";
String extensions = ".jpg,.JPG,.jpeg,.JPEG,.png,.PNG";
String currentDirectory = (String) parameters.get("directory");
String thumbnailsDirectoryPath = currentDirectory + "/thumbnails/";
File thumbnailsDirectory = new DirectoriesModel(baseDirectory+thumbnailsDirectoryPath).getDirectory();
ItemsModel imagesModel = new ItemsModel(baseDirectory, currentDirectory, extensions);
if(!thumbnailsDirectory.exists()) {
thumbnailsDirectory.mkdir();
}
generateThumbnails(thumbnailsDirectory.getAbsolutePath()+"/", imagesModel.asList(), writer, currentDirectory);
}
private void generateThumbnails(String thumbnailsDirectory, List<File> files, Writer writer, String currentDirectory) {
File thumbsDirFile = new File(thumbnailsDirectory);
for (File file : files) {
try {
File thumbnailFile = new File(thumbnailsDirectory + file.getName());
if(!thumbnailFile.exists()){
IImage image = new AWTImage(file.getAbsolutePath());
image.scale(125, 125, true, true);
image.saveAs(thumbnailFile.getAbsolutePath());
writer.write("<br>Generated thumbnail: <img src=\"/photos/"+currentDirectory+"/thumbnails/"+file.getName()+"\"/><br/>");
writer.flush();
}
} catch (IOException e) {
thumbsDirFile.delete();
}
}
}
}