com.adobe.epubcheck.ctc.Epub3StructureCheck Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of epubcheck Show documentation
Show all versions of epubcheck Show documentation
EpubCheck is a tool to validate IDPF EPUB files. It can detect many types of errors in EPUB.
OCF container structure, OPF and OPS mark-up, and internal reference consistency are checked.
EpubCheck can be run as a standalone command-line tool, installed as a Java server-side web application
or used as a Java library.
The newest version!
package com.adobe.epubcheck.ctc;
import java.util.zip.ZipEntry;
import com.adobe.epubcheck.api.Report;
import com.adobe.epubcheck.ctc.epubpackage.EpubPackage;
import com.adobe.epubcheck.ctc.epubpackage.ManifestItem;
import com.adobe.epubcheck.ctc.xml.Epub3StructureHandler;
import com.adobe.epubcheck.ctc.xml.XMLContentDocParser;
import com.adobe.epubcheck.opf.DocumentValidator;
import com.adobe.epubcheck.util.SearchDictionary;
import com.adobe.epubcheck.util.SearchDictionary.DictionaryType;
/**
* === WARNING ==========================================
* This class is scheduled to be refactored and integrated
* in another package.
* Please keep changes minimal (bug fixes only) until then.
* ========================================================
*/
public class Epub3StructureCheck implements DocumentValidator
{
private final Report report;
private final EpubPackage epack;
public Epub3StructureCheck(EpubPackage epack, Report report)
{
this.report = report;
this.epack = epack;
}
@Override
public boolean validate()
{
boolean result = false;
SearchDictionary vtsd = new SearchDictionary(DictionaryType.VALID_TEXT_MEDIA_TYPES);
for (int i = 0; i < epack.getManifest().itemsLength(); i++)
{
ManifestItem mi = epack.getManifest().getItem(i);
if (vtsd.isValidMediaType(mi.getMediaType()))
{
XMLContentDocParser parser = new XMLContentDocParser(epack.getZip(), report);
Epub3StructureHandler epub3StructureHandler = new Epub3StructureHandler();
String fileToParse = epack.getManifestItemFileName(mi);
ZipEntry entry = epack.getZip().getEntry(fileToParse);
if (entry == null)
{
// already reported in core checkers
// report.message(MessageId.RSC_001, EPUBLocation.create(epack.getFileName()), fileToParse);
continue;
}
epub3StructureHandler.setFileName(epack.getFileName());
epub3StructureHandler.setReport(report);
parser.parseDoc(fileToParse, epub3StructureHandler);
if (epub3StructureHandler.getSpecificTagsCount() > 0)
{
result = true;
}
}
}
return result;
}
}