|
|
@ -22,7 +22,7 @@ import me.ag2s.epublib.util.StringUtil; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Reads the package document metadata. |
|
|
|
* Reads the package document metadata. |
|
|
|
* |
|
|
|
* <p> |
|
|
|
* In its own separate class because the PackageDocumentReader became a bit large and unwieldy. |
|
|
|
* In its own separate class because the PackageDocumentReader became a bit large and unwieldy. |
|
|
|
* |
|
|
|
* |
|
|
|
* @author paul |
|
|
|
* @author paul |
|
|
@ -30,7 +30,7 @@ import me.ag2s.epublib.util.StringUtil; |
|
|
|
// package
|
|
|
|
// package
|
|
|
|
class PackageDocumentMetadataReader extends PackageDocumentBase { |
|
|
|
class PackageDocumentMetadataReader extends PackageDocumentBase { |
|
|
|
|
|
|
|
|
|
|
|
private static final String TAG= PackageDocumentMetadataReader.class.getName(); |
|
|
|
private static final String TAG = PackageDocumentMetadataReader.class.getName(); |
|
|
|
|
|
|
|
|
|
|
|
public static Metadata readMetadata(Document packageDocument) { |
|
|
|
public static Metadata readMetadata(Document packageDocument) { |
|
|
|
Metadata result = new Metadata(); |
|
|
|
Metadata result = new Metadata(); |
|
|
@ -38,7 +38,7 @@ class PackageDocumentMetadataReader extends PackageDocumentBase { |
|
|
|
.getFirstElementByTagNameNS(packageDocument.getDocumentElement(), |
|
|
|
.getFirstElementByTagNameNS(packageDocument.getDocumentElement(), |
|
|
|
NAMESPACE_OPF, OPFTags.metadata); |
|
|
|
NAMESPACE_OPF, OPFTags.metadata); |
|
|
|
if (metadataElement == null) { |
|
|
|
if (metadataElement == null) { |
|
|
|
Log.e(TAG,"Package does not contain element " + OPFTags.metadata); |
|
|
|
Log.e(TAG, "Package does not contain element " + OPFTags.metadata); |
|
|
|
return result; |
|
|
|
return result; |
|
|
|
} |
|
|
|
} |
|
|
|
result.setTitles(DOMUtil |
|
|
|
result.setTitles(DOMUtil |
|
|
@ -78,6 +78,7 @@ class PackageDocumentMetadataReader extends PackageDocumentBase { |
|
|
|
/** |
|
|
|
/** |
|
|
|
* consumes meta tags that have a property attribute as defined in the standard. For example: |
|
|
|
* consumes meta tags that have a property attribute as defined in the standard. For example: |
|
|
|
* <meta property="rendition:layout">pre-paginated</meta> |
|
|
|
* <meta property="rendition:layout">pre-paginated</meta> |
|
|
|
|
|
|
|
* |
|
|
|
* @param metadataElement metadataElement |
|
|
|
* @param metadataElement metadataElement |
|
|
|
* @return Map<QName, String> |
|
|
|
* @return Map<QName, String> |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -103,6 +104,7 @@ class PackageDocumentMetadataReader extends PackageDocumentBase { |
|
|
|
/** |
|
|
|
/** |
|
|
|
* consumes meta tags that have a property attribute as defined in the standard. For example: |
|
|
|
* consumes meta tags that have a property attribute as defined in the standard. For example: |
|
|
|
* <meta property="rendition:layout">pre-paginated</meta> |
|
|
|
* <meta property="rendition:layout">pre-paginated</meta> |
|
|
|
|
|
|
|
* |
|
|
|
* @param metadataElement metadataElement |
|
|
|
* @param metadataElement metadataElement |
|
|
|
* @return Map<String, String> |
|
|
|
* @return Map<String, String> |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -128,8 +130,8 @@ class PackageDocumentMetadataReader extends PackageDocumentBase { |
|
|
|
if (packageElement == null) { |
|
|
|
if (packageElement == null) { |
|
|
|
return null; |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
|
return packageElement |
|
|
|
return DOMUtil.getAttribute(packageElement, NAMESPACE_OPF, OPFAttributes.uniqueIdentifier); |
|
|
|
.getAttributeNS(NAMESPACE_OPF, OPFAttributes.uniqueIdentifier); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static List<Author> readCreators(Element metadataElement) { |
|
|
|
private static List<Author> readCreators(Element metadataElement) { |
|
|
@ -165,10 +167,10 @@ class PackageDocumentMetadataReader extends PackageDocumentBase { |
|
|
|
Date date; |
|
|
|
Date date; |
|
|
|
try { |
|
|
|
try { |
|
|
|
date = new Date(DOMUtil.getTextChildrenContent(dateElement), |
|
|
|
date = new Date(DOMUtil.getTextChildrenContent(dateElement), |
|
|
|
dateElement.getAttributeNS(NAMESPACE_OPF, OPFAttributes.event)); |
|
|
|
DOMUtil.getAttribute(dateElement, NAMESPACE_OPF, OPFAttributes.event)); |
|
|
|
result.add(date); |
|
|
|
result.add(date); |
|
|
|
} catch (IllegalArgumentException e) { |
|
|
|
} catch (IllegalArgumentException e) { |
|
|
|
Log.e(TAG,e.getMessage()); |
|
|
|
Log.e(TAG, e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return result; |
|
|
|
return result; |
|
|
@ -189,7 +191,7 @@ class PackageDocumentMetadataReader extends PackageDocumentBase { |
|
|
|
authorString.substring(spacePos + 1)); |
|
|
|
authorString.substring(spacePos + 1)); |
|
|
|
} |
|
|
|
} |
|
|
|
result.setRole( |
|
|
|
result.setRole( |
|
|
|
authorElement.getAttributeNS(NAMESPACE_OPF, OPFAttributes.role)); |
|
|
|
DOMUtil.getAttribute(authorElement, NAMESPACE_OPF, OPFAttributes.role)); |
|
|
|
return result; |
|
|
|
return result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -198,7 +200,7 @@ class PackageDocumentMetadataReader extends PackageDocumentBase { |
|
|
|
NodeList identifierElements = metadataElement |
|
|
|
NodeList identifierElements = metadataElement |
|
|
|
.getElementsByTagNameNS(NAMESPACE_DUBLIN_CORE, DCTags.identifier); |
|
|
|
.getElementsByTagNameNS(NAMESPACE_DUBLIN_CORE, DCTags.identifier); |
|
|
|
if (identifierElements.getLength() == 0) { |
|
|
|
if (identifierElements.getLength() == 0) { |
|
|
|
Log.e(TAG,"Package does not contain element " + DCTags.identifier); |
|
|
|
Log.e(TAG, "Package does not contain element " + DCTags.identifier); |
|
|
|
return new ArrayList<>(); |
|
|
|
return new ArrayList<>(); |
|
|
|
} |
|
|
|
} |
|
|
|
String bookIdId = getBookIdId(metadataElement.getOwnerDocument()); |
|
|
|
String bookIdId = getBookIdId(metadataElement.getOwnerDocument()); |
|
|
@ -206,8 +208,7 @@ class PackageDocumentMetadataReader extends PackageDocumentBase { |
|
|
|
identifierElements.getLength()); |
|
|
|
identifierElements.getLength()); |
|
|
|
for (int i = 0; i < identifierElements.getLength(); i++) { |
|
|
|
for (int i = 0; i < identifierElements.getLength(); i++) { |
|
|
|
Element identifierElement = (Element) identifierElements.item(i); |
|
|
|
Element identifierElement = (Element) identifierElements.item(i); |
|
|
|
String schemeName = identifierElement |
|
|
|
String schemeName = DOMUtil.getAttribute(identifierElement, NAMESPACE_OPF, DCAttributes.scheme); |
|
|
|
.getAttributeNS(NAMESPACE_OPF, DCAttributes.scheme); |
|
|
|
|
|
|
|
String identifierValue = DOMUtil |
|
|
|
String identifierValue = DOMUtil |
|
|
|
.getTextChildrenContent(identifierElement); |
|
|
|
.getTextChildrenContent(identifierElement); |
|
|
|
if (StringUtil.isBlank(identifierValue)) { |
|
|
|
if (StringUtil.isBlank(identifierValue)) { |
|
|
|