X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fhtmlindexer%2Fmetadata%2FDirectoryMetadata.java;h=ec10f90ef04d27fd26f0a28d747db0dc8f1760d8;hb=567410640f4e0428caf9de9fc83df4c73f0e5067;hp=0dcdf1200a55300c6c39b9db5bc6fc241c9b0372;hpb=1b742640af99284aae1cd10c259254137316ba7c;p=meviz.git diff --git a/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/DirectoryMetadata.java b/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/DirectoryMetadata.java index 0dcdf12..ec10f90 100755 --- a/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/DirectoryMetadata.java +++ b/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/DirectoryMetadata.java @@ -1,25 +1,25 @@ /* * Meviz - Various tools collection to work with multimedia. - * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * Copyright (C) 2012 -- 2019, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu * * This program is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public License - * as published by the Free Software Foundation. - */ + * modify it under the terms of version 3 of the GNU Lesser General Public License + * or later as published by the Free Software Foundation. +*/ package eu.svjatoslav.meviz.htmlindexer.metadata; import eu.svjatoslav.commons.file.FilePathParser; -import eu.svjatoslav.meviz.htmlindexer.AbstractIndexer; import eu.svjatoslav.meviz.htmlindexer.FileSortComparator; -import eu.svjatoslav.meviz.htmlindexer.ImageFormatError; import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.*; import java.io.File; -import java.io.IOException; import java.io.Serializable; import java.util.*; +import static eu.svjatoslav.meviz.htmlindexer.AbstractIndexer.isImage; +import static eu.svjatoslav.meviz.htmlindexer.AbstractIndexer.isVideo; + /** * Corresponds to single filesystem directory. */ @@ -27,7 +27,7 @@ public class DirectoryMetadata implements Serializable { private static final long serialVersionUID = 3526489102725366334L; - private final HashMap fileNameToFileMap = new HashMap(); + private final HashMap fileNameToFileMap = new HashMap<>(); public transient boolean changed; @@ -42,21 +42,21 @@ public class DirectoryMetadata implements Serializable { while (fileIterator.hasNext()) { final AbstractFile file = fileIterator.next(); - if (!file.isMetaInfoVerified()) + if (!file.isMetadataVerified()) fileIterator.remove(); } } - public void ensureFileMetainfoIsUpToDate(final File parentDirectory, + public void ensureFileMetadataIsUpToDate(final File parentDirectory, final File file) throws Exception { final String fileName = file.getName(); if (fileNameToFileMap.containsKey(fileName)) { - final boolean metainfoUpdated = fileNameToFileMap.get(fileName) - .ensureFileMetainfoIsUpToDate(parentDirectory); + final boolean metadataUpdated = fileNameToFileMap.get(fileName) + .ensureFileMetadataIsUpToDate(parentDirectory); - if (metainfoUpdated) + if (metadataUpdated) changed = true; } else registerFile(parentDirectory, file); @@ -72,7 +72,7 @@ public class DirectoryMetadata implements Serializable { final String fileExtension = FilePathParser.getFileExtension(fileName) .toLowerCase(); - if (AbstractIndexer.isImage(fileExtension)) + if (isImage(fileExtension)) try { return new Picture(parentDirectory, fileName); } catch (final Exception exception) { @@ -80,6 +80,14 @@ public class DirectoryMetadata implements Serializable { return new GeneralFile(parentDirectory, fileName); } + if (isVideo(fileExtension)) + try { + return new Video(parentDirectory, fileName); + } catch (final Exception exception) { + // in case video decoding failed, handle it as general file + return new GeneralFile(parentDirectory, fileName); + } + if (fileName.endsWith(".meviz.org")) return new MevizSpecialFile(parentDirectory, fileName); @@ -89,13 +97,13 @@ public class DirectoryMetadata implements Serializable { return new GeneralFile(parentDirectory, fileName); } - public AbstractFile getFile(final String fileName) { + private AbstractFile getFile(final String fileName) { return fileNameToFileMap.get(fileName); } public Collection getFiles() { - final ArrayList files = new ArrayList( + final ArrayList files = new ArrayList<>( fileNameToFileMap.values()); Collections.sort(files, new FileSortComparator()); @@ -112,13 +120,12 @@ public class DirectoryMetadata implements Serializable { return mevizSpecialFile.getFileContent(); } - public Dimension getImageDimensions(final String fileName) - throws IOException, ImageFormatError { + public Dimension getImageDimensions(final String fileName) { return ((Picture) getFile(fileName)).getDimensions(); } - public AbstractFile registerFile(final File parentDirectory, final File file) + private AbstractFile registerFile(final File parentDirectory, final File file) throws Exception { final String fileName = file.getName(); @@ -135,11 +142,10 @@ public class DirectoryMetadata implements Serializable { public void removeUnusedMetadataEntries() { - for (final String key : new HashSet(fileNameToFileMap.keySet())) - if (!fileNameToFileMap.get(key).isMetaInfoVerified()) { - fileNameToFileMap.remove(key); - changed = true; - } + new HashSet<>(fileNameToFileMap.keySet()).stream().filter(key -> !fileNameToFileMap.get(key).isMetadataVerified()).forEach(key -> { + fileNameToFileMap.remove(key); + changed = true; + }); } }