X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fload%2FMediaHelper.java;fp=tim%2Fprune%2Fload%2FMediaHelper.java;h=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hp=ab4f366d820967c67674e916c15985cddc5debb2;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465;p=GpsPrune.git diff --git a/tim/prune/load/MediaHelper.java b/tim/prune/load/MediaHelper.java deleted file mode 100644 index ab4f366..0000000 --- a/tim/prune/load/MediaHelper.java +++ /dev/null @@ -1,131 +0,0 @@ -package tim.prune.load; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import tim.prune.data.AudioClip; -import tim.prune.data.MediaObject; -import tim.prune.data.Photo; - -/** - * Class to provide helper functions for loading media - */ -public abstract class MediaHelper -{ - /** File filters */ - private static GenericFileFilter _jpegFilter = null, _audioFilter = null; - - - /** - * Construct a MediaObject for the given path - * @param inZipFile path to archive file (if any) - * @param inPath path to media file - * @param inSourceFile file from which data was loaded - * @return either Photo or AudioClip object as appropriate, or null - */ - public static MediaObject createMediaObject(File inZipFile, String inPath, File inSourceFile) - { - if (inPath == null || inPath.length() < 5) return null; - InputStream is = null; - ZipFile zf = null; - byte[] data = null; - String url = null; - try - { - // Check if path is a URL, in which case get an input stream from it - if (inPath.substring(0, 5).toLowerCase().equals("http:")) - { - url = inPath; - is = new URL(inPath).openStream(); - data = ByteScooper.scoop(is); - } - } - catch (IOException ioe) { - System.err.println("Got ioe from url: " + ioe.getMessage()); - } // is stays null - - // Now see if file is in the zip file - if (is == null && inZipFile != null && inZipFile.exists() && inZipFile.canRead()) - { - try - { - zf = new ZipFile(inZipFile); - ZipEntry entry = zf.getEntry(inPath); - if (entry != null && entry.getSize() > 0) - { - data = ByteScooper.scoop(zf.getInputStream(entry)); - // System.out.println("Size of data " + (data.length == entry.getSize()?"matches":"DOESN'T match")); - } - } - catch (IOException ioe) { - System.err.println("Got ioe from zip file: " + ioe.getMessage()); - } - } - // Clean up input streams - if (is != null) try { - is.close(); - } catch (IOException ioe) {} - if (zf != null) try { - zf.close(); - } catch (IOException ioe) {} - - if (data != null) - { - // Create Photo or AudioClip using this entry - String filename = new File(inPath).getName(); - initFilters(); - if (_jpegFilter.acceptFilename(inPath)) { - return new Photo(data, filename, url); - } - else if (_audioFilter.acceptFilename(inPath)) { - return new AudioClip(data, filename, url); - } - return null; - } - - // If we haven't got a result by now, try to load plain file - File file = new File(inPath); - if (inSourceFile != null && !file.isAbsolute()) { - file = new File(inSourceFile.getParent(), inPath); - } - // awkward construction because new File(startPath, absolutePath) doesn't work - return createMediaObject(file); - } - - /** - * Construct a MediaObject for the given file - * @param inFile file to load - * @return either Photo or AudioClip object as appropriate, or null - */ - private static MediaObject createMediaObject(File inFile) - { - if (inFile == null) {return null;} - if (!inFile.exists() || !inFile.canRead() || !inFile.isFile()) {return null;} - initFilters(); - // Check if filename looks like a jpeg - if (_jpegFilter.acceptFilename(inFile.getName())) { - return JpegLoader.createPhoto(inFile); - } - // Check if filename looks like an audio clip - if (_audioFilter.acceptFilename(inFile.getName())) { - return new AudioClip(inFile); - } - // Neither photo nor audio - return null; - } - - /** - * Initialise filters if necessary - */ - private static void initFilters() - { - if (_jpegFilter == null) { - _jpegFilter = new JpegFileFilter(); - _audioFilter = new AudioFileFilter(); - } - } -}