import java.io.File;
import java.io.IOException;
-import java.io.InputStream;
-import java.net.URISyntaxException;
import java.net.URL;
-import be.nikiroo.fanfix.Instance;
import be.nikiroo.fanfix.data.MetaData;
/**
* @author niki
*/
class InfoText extends Text {
- @Override
- public String getSourceName() {
- return "info-text";
+ protected File getInfoFile() {
+ return new File(assureNoTxt(getSourceFile()).getPath() + ".info");
}
@Override
- protected MetaData getMeta(URL source, InputStream in) throws IOException {
- try {
- MetaData meta = InfoReader.readMeta(
- new File(new File(source.toURI()).getPath() + ".info"),
- true);
-
- // Some old .info files don't have those now required fields...
- String test = meta.getTitle() == null ? "" : meta.getTitle();
- test += meta.getAuthor() == null ? "" : meta.getAuthor();
- test += meta.getDate() == null ? "" : meta.getDate();
- test += meta.getUrl() == null ? "" : meta.getUrl();
- if (test.isEmpty()) {
- MetaData superMeta = super.getMeta(source, reset(in));
- if (meta.getTitle() == null || meta.getTitle().isEmpty()) {
- meta.setTitle(superMeta.getTitle());
- }
- if (meta.getAuthor() == null || meta.getAuthor().isEmpty()) {
- meta.setAuthor(superMeta.getAuthor());
- }
- if (meta.getDate() == null || meta.getDate().isEmpty()) {
- meta.setDate(superMeta.getDate());
- }
- if (meta.getUrl() == null || meta.getUrl().isEmpty()) {
- meta.setUrl(superMeta.getUrl());
- }
- }
-
- return meta;
-
- } catch (URISyntaxException e) {
- throw new IOException("Cannot parse URL to file: " + source, e);
- }
+ protected MetaData getMeta() throws IOException {
+ return InfoReader.readMeta(getInfoFile(), true);
}
@Override
protected boolean supports(URL url) {
- if ("file".equals(url.getProtocol())) {
- File file;
- try {
- file = new File(url.toURI());
- file = new File(file.getPath() + ".info");
- } catch (URISyntaxException e) {
- Instance.syserr(e);
- file = null;
- }
-
- return file != null && file.exists();
- }
-
- return false;
+ return supports(url, true);
}
}