X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=meviz.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fmeviz%2Fhtmlindexer%2Fmetadata%2FDirectoryMetadata.java;h=d6e65fc0d224b7e52a4b87b7ca3a5d85eb9a7e43;hp=84fad12e5f785b2dd48100dfcd538b6fd9f8df71;hb=cf6e4ace4972f24f40f88ea12fcf99c763e4e40a;hpb=bc50d9d413e133d50fbab07a234d476b680d4185 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 84fad12..d6e65fc 100755 --- a/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/DirectoryMetadata.java +++ b/src/main/java/eu/svjatoslav/meviz/htmlindexer/metadata/DirectoryMetadata.java @@ -1,6 +1,6 @@ /* * Meviz - Various tools collection to work with multimedia. - * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * Copyright (C) 2012 -- 2018, 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 @@ -9,146 +9,133 @@ package eu.svjatoslav.meviz.htmlindexer.metadata; -import java.io.File; -import java.io.IOException; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; - 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.AbstractFile; -import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.DirectoryFile; -import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.GeneralFile; -import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.MevizSpecialFile; -import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.Picture; +import eu.svjatoslav.meviz.htmlindexer.metadata.fileTypes.*; + +import java.io.File; +import java.io.Serializable; +import java.util.*; /** * Corresponds to single filesystem directory. */ public class DirectoryMetadata implements Serializable { - private static final long serialVersionUID = 3526489102725366334L; + private static final long serialVersionUID = 3526489102725366334L; - private final HashMap fileNameToFileMap = new HashMap(); + private final HashMap fileNameToFileMap = new HashMap<>(); - public transient boolean changed; + public transient boolean changed; - /** - * Performs cleanup of directory model. In particular removes metadata for - * images that no longer exist in the filesystem. - */ - public void cleanup() { - final Iterator fileIterator = fileNameToFileMap.values() - .iterator(); + /** + * Performs cleanup of directory model. In particular removes metadata for + * images that no longer exist in the filesystem. + */ + public void cleanup() { + final Iterator fileIterator = fileNameToFileMap.values() + .iterator(); - while (fileIterator.hasNext()) { - final AbstractFile file = fileIterator.next(); + while (fileIterator.hasNext()) { + final AbstractFile file = fileIterator.next(); - if (!file.isMetaInfoVerified()) - fileIterator.remove(); - } - } + if (!file.isMetaInfoVerified()) + fileIterator.remove(); + } + } - public void ensureFileMetainfoIsUpToDate(final File parentDirectory, - final File file) throws Exception { + public void ensureFileMetainfoIsUpToDate(final File parentDirectory, + final File file) throws Exception { - final String fileName = file.getName(); + final String fileName = file.getName(); - if (fileNameToFileMap.containsKey(fileName)) { - final boolean metainfoUpdated = fileNameToFileMap.get(fileName) - .ensureFileMetainfoIsUpToDate(parentDirectory); + if (fileNameToFileMap.containsKey(fileName)) { + final boolean metainfoUpdated = fileNameToFileMap.get(fileName) + .ensureFileMetainfoIsUpToDate(parentDirectory); - if (metainfoUpdated) - changed = true; - } else - registerFile(parentDirectory, file); + if (metainfoUpdated) + changed = true; + } else + registerFile(parentDirectory, file); - } + } - private AbstractFile getAbstractFile(final File parentDirectory, - final File file, final String fileName) throws Exception { + private AbstractFile getAbstractFile(final File parentDirectory, + final File file, final String fileName) throws Exception { - if (file.isDirectory()) - return new DirectoryFile(parentDirectory, fileName); + if (file.isDirectory()) + return new DirectoryFile(parentDirectory, fileName); - final String fileExtension = FilePathParser.getFileExtension(fileName) - .toLowerCase(); + final String fileExtension = FilePathParser.getFileExtension(fileName) + .toLowerCase(); - if (AbstractIndexer.isImage(fileExtension)) - try { - return new Picture(parentDirectory, fileName); - } catch (final Exception exception) { - // in case image decoding failed, handle image as general file - return new GeneralFile(parentDirectory, fileName); - } + if (AbstractIndexer.isImage(fileExtension)) + try { + return new Picture(parentDirectory, fileName); + } catch (final Exception exception) { + // in case image decoding failed, handle image as general file + return new GeneralFile(parentDirectory, fileName); + } - if (fileName.endsWith(".meviz.org")) - return new MevizSpecialFile(parentDirectory, fileName); + if (fileName.endsWith(".meviz.org")) + return new MevizSpecialFile(parentDirectory, fileName); - if (fileName.endsWith(".meviz.html")) - return new MevizSpecialFile(parentDirectory, fileName); + if (fileName.endsWith(".meviz.html")) + return new MevizSpecialFile(parentDirectory, fileName); - return new GeneralFile(parentDirectory, fileName); - } + return new GeneralFile(parentDirectory, fileName); + } - public AbstractFile getFile(final String fileName) { - return fileNameToFileMap.get(fileName); - } + private AbstractFile getFile(final String fileName) { + return fileNameToFileMap.get(fileName); + } - public Collection getFiles() { + public Collection getFiles() { - final ArrayList files = new ArrayList( - fileNameToFileMap.values()); + final ArrayList files = new ArrayList<>( + fileNameToFileMap.values()); - Collections.sort(files, new FileSortComparator()); + Collections.sort(files, new FileSortComparator()); - return files; - } + return files; + } - public String getHeaderMevizMetadataHtml() { - final AbstractFile headerFile = getFile("header.meviz.html"); - if (headerFile == null) - return ""; + public String getHeaderMevizMetadataHtml() { + final AbstractFile headerFile = getFile("header.meviz.html"); + if (headerFile == null) + return ""; - final MevizSpecialFile mevizSpecialFile = (MevizSpecialFile) headerFile; - return mevizSpecialFile.getFileContent(); - } + final MevizSpecialFile mevizSpecialFile = (MevizSpecialFile) headerFile; + return mevizSpecialFile.getFileContent(); + } - public Dimension getImageDimensions(final String fileName) - throws IOException, ImageFormatError { + public Dimension getImageDimensions(final String fileName) { - return ((Picture) getFile(fileName)).getDimensions(); - } + return ((Picture) getFile(fileName)).getDimensions(); + } - public AbstractFile registerFile(final File parentDirectory, final File file) - throws Exception { + private AbstractFile registerFile(final File parentDirectory, final File file) + throws Exception { - final String fileName = file.getName(); + final String fileName = file.getName(); - final AbstractFile abstractFile = getAbstractFile(parentDirectory, - file, fileName); + final AbstractFile abstractFile = getAbstractFile(parentDirectory, + file, fileName); - fileNameToFileMap.put(fileName, abstractFile); + fileNameToFileMap.put(fileName, abstractFile); - changed = true; + changed = true; - return abstractFile; - } + return abstractFile; + } - public void removeUnusedMetadataEntries() { + 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).isMetaInfoVerified()).forEach(key -> { + fileNameToFileMap.remove(key); + changed = true; + }); - } + } }