package se.cth.hedgehogphoto.metadata; import java.io.File; import java.util.ArrayList; import java.util.List; import javax.swing.JFileChooser; import javax.swing.filechooser.FileNameExtensionFilter; import se.cth.hedgehogphoto.objects.ImageObject; /** * * @author Julia * */ public class PictureFetcher { private JFileChooser chooser = new JFileChooser(); private List<ImageObject> imageObjects = new ArrayList<ImageObject>(); private String [] validFileExtensions = {"png", "jpg", "jpeg", "gif"}; public PictureFetcher() { this.chooser.setDialogTitle("Choose pictures"); this.chooser.setCurrentDirectory(new File( System.getProperty("user.home") + "/Pictures")); this.chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); this.chooser.setAcceptAllFileFilterUsed(false); this.chooser.setMultiSelectionEnabled(true); ImagePreviewPanel preview = new ImagePreviewPanel(); this.chooser.setAccessory(preview); this.chooser.addPropertyChangeListener(preview); FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images & PNG", "jpg", "gif","png"); this.chooser.setFileFilter(filter); this.fetchFiles(); } public void fetchFiles() { int returnVal = this.chooser.showOpenDialog(null); if(returnVal == JFileChooser.APPROVE_OPTION) { File[] directorys = this.chooser.getSelectedFiles(); for(int i = 0; i < directorys.length;i++){ if(directorys[i].isDirectory()){ String album = directorys[i].getName(); File[] dirFiles = this.chooser.getSelectedFile().listFiles(); for(int j = 0; j < dirFiles.length; j++ ){ if(dirFiles[j].isDirectory()==false){ /*find the pos of the . in the filename*/ int pos = dirFiles[j].getName().lastIndexOf("."); /*get extension name and place into string ext*/ String end = dirFiles[j].getName().substring(pos + 1); if (isValidFileExtension(end) && dirFiles[j].isFile()){ ImageObject imageObject; if(dirFiles[j].isDirectory() == false){ imageObject = Metadata.getImageObject(dirFiles[j]); imageObject.setAlbumName(album); imageObject.setFileName(dirFiles[j].getName()); imageObject.setFilePath(dirFiles[j].getAbsolutePath()); this.imageObjects.add(imageObject); } } } } } else{ for(int k = 0; k < this.chooser.getSelectedFiles().length; k++){ ImageObject imageObject = Metadata.getImageObject(this.chooser.getSelectedFiles()[k]); imageObject.setAlbumName(this.chooser.getSelectedFiles()[k].getParentFile().getName()); imageObject.setFileName(chooser.getSelectedFiles()[k].getName()); imageObject.setFilePath(this.chooser.getSelectedFiles()[k].getAbsolutePath()); this.imageObjects.add(imageObject); } } } } } public List<ImageObject> getImageObjects(){ return this.imageObjects; } private boolean isValidFileExtension(String fileExtension) { boolean isValid = false; int nbrOfFileExtensions = this.validFileExtensions.length; for (int i = 0; i < nbrOfFileExtensions; i++) { if (fileExtension.equalsIgnoreCase(this.validFileExtensions[i])) { isValid = true; break; } } return isValid; } }