/*
- * Meviz - Various tools collection to work with multimedia.
- * Copyright (C) 2012, 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.
+ * Meviz - Various tools collection to work with multimedia. Author: Svjatoslav Agejenko.
+ * This project is released under Creative Commons Zero (CC0) license.
*/
+
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.indexer.AbstractIndexer.isImage;
+import static eu.svjatoslav.meviz.htmlindexer.indexer.AbstractIndexer.isVideo;
+
/**
* Corresponds to single filesystem directory.
*/
private static final long serialVersionUID = 3526489102725366334L;
- private final HashMap<String, AbstractFile> fileNameToFileMap = new HashMap<String, AbstractFile>();
+ private final HashMap<String, AbstractFile> fileNameToFileMap = new HashMap<>();
public transient boolean changed;
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);
final String fileExtension = FilePathParser.getFileExtension(fileName)
.toLowerCase();
- if (AbstractIndexer.isImage(fileExtension))
+ if (isImage(fileExtension))
try {
return new Picture(parentDirectory, fileName);
} catch (final Exception exception) {
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);
return new GeneralFile(parentDirectory, fileName);
}
- public AbstractFile getFile(final String fileName) {
+ private AbstractFile getFile(final String fileName) {
return fileNameToFileMap.get(fileName);
}
public Collection<AbstractFile> getFiles() {
- final ArrayList<AbstractFile> files = new ArrayList<AbstractFile>(
+ final ArrayList<AbstractFile> files = new ArrayList<>(
fileNameToFileMap.values());
Collections.sort(files, new FileSortComparator());
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();
public void removeUnusedMetadataEntries() {
- for (final String key : new HashSet<String>(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;
+ });
}
}