/** * Balero CMS Project: Proyecto 100% Mexicano de código libre. * Página Oficial: http://www.balerocms.com * * @author Anibal Gomez <anibalgomez@icloud.com> * @copyright Copyright (C) 2015 (20/10/15) ) Neblina Software. Derechos reservados. * @license Licencia BSD; vea LICENSE.txt */ package com.neblina.balero.util; import com.neblina.balero.domain.Media; import com.neblina.balero.domain.Template; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.nio.file.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class MediaManager { private static final Logger log = LogManager.getLogger(MediaManager.class.getName()); /** * Get Relative Path Of Specific Folder * @author Anibal Gomez * @return */ public String getResourcePath() { return System.getProperty("user.dir") + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator; } /** * Gets Uploads's Relative Path Folder * @return */ public String getResourceUploadsPath() { return getResourcePath() + "static" + File.separator + "images" + File.separator + "uploads" + File.separator; } public String getResourceTemplatesPath() { return getResourcePath() + "templates" + File.separator; } /** * Create Image Gallery Info Object * @author Anibal Gomez * Based on: * http://stackoverflow.com/questions/6300675/java-mixed-arraylists * http://stackoverflow.com/questions/672916/how-to-get-image-height-and-width-using-java * @return * @throws IOException */ public List<Media> retrieveImageGalleryList() throws IOException { List<Media> list = new ArrayList<>(); // Java 8 List Directory Files.walk(Paths.get(getResourceUploadsPath())).forEach(filePath -> { if (Files.isRegularFile(filePath)) { try { // |jpg|png|jpeg|bmp|gif| if(filePath.toString().endsWith(".jpg") || filePath.toString().endsWith(".png") || filePath.toString().endsWith(".jpeg") || filePath.toString().endsWith(".bmp") || filePath.toString().endsWith(".gif")) { // Image info (width, height, etc) BufferedImage bimg = ImageIO.read(new File(filePath.toString())); // Build FileGallery Object // Merge Objects Media fileGallery = new Media(); fileGallery.setFileName(filePath.getFileName().toString()); fileGallery.setWidth(bimg.getWidth()); fileGallery.setHeight(bimg.getHeight()); // Add object list.add(fileGallery); // Clean bimg = null; } } catch (IOException e) { e.printStackTrace(); } } }); return list; } public List<Template> retrieveTemplates() throws IOException { List<Template> list = new ArrayList<>(); File dir= new File(getResourceTemplatesPath()); File[] files = dir.listFiles(); for (File file : files) { if (file.isDirectory()) { if(!file.getName().equals("authorized")) { Template template = new Template(); template.setName(file.getName()); list.add(template); } } } return list; } public void deleteResourceFile(String fileName) { try { File file = new File(getResourceUploadsPath() + fileName); if(!file.exists()) { throw new Exception("File Do Not Exists!" + file); } file.delete(); log.debug("Deleting: " + file); } catch (Exception e) { log.debug(e.getMessage()); } } }