package org.rr.jeborker.metadata;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
import org.rr.commons.log.LoggerFactory;
import org.rr.commons.mufs.IResourceHandler;
import org.rr.jeborker.metadata.comicbook.ComicBookDocument;
import org.rr.jeborker.metadata.comicbook.ComicBookReader;
import org.rr.jeborker.metadata.comicbook.ComicBookWriter;
class ComicBookMetadataWriter implements IMetadataWriter {
private IResourceHandler resource;
ComicBookMetadataWriter(IResourceHandler resource) {
this.resource = resource;
}
@Override
public void writeMetadata(List<MetadataProperty> props) {
try {
final ComicBookReader reader = new ComicBookReader(resource);
final ComicBookDocument doc = reader.getDocument();
final ComicBookWriter writer = new ComicBookWriter(doc, resource);
final HashMap<String, Object> docInfo = doc.getInfo();
// final List<ComicBookPageInfo> docPages = doc.getPages();
docInfo.clear();
for(MetadataProperty prop : props) {
String name = prop.getName();
String value = prop.getValueAsString();
if(IMetadataReader.COMMON_METADATA_TYPES.COVER.getName().equalsIgnoreCase(name)) {
continue;
}
docInfo.put(name, value);
}
writer.writeDocument();
} catch (IOException e) {
LoggerFactory.getLogger().log(Level.WARNING, "Failed to store metadata to " + resource, e);
}
}
@Override
public void storePlainMetadata(byte[] plainMetadata) {
ComicBookWriter writer = new ComicBookWriter(null, resource);
try {
writer.writePlainXML(plainMetadata);
} catch (IOException e) {
LoggerFactory.getLogger().log(Level.WARNING, "Failed to store plain metadata to " + resource, e);
}
}
}