public DocumentDTO transformYElement( YExportable yExportable, ZipArchive currentZipArchive, String currentXmlPath) { DocumentDTO productObject = null; if (yExportable instanceof YElement) { YElement yElement = (YElement) yExportable; MetadataToProtoMetadataParser mtd2prt = new MetadataToProtoMetadataParserImpl(); DocumentMetadata docMetadata = mtd2prt.yelementToDocumentMetadata( yElement, currentZipArchive, currentXmlPath, collection); if (docMetadata != null) { productObject = new DocumentDTO(); productObject.setKey(docMetadata.getKey()); // Document and DocumentMetadata should have the same key? productObject.setDocumentMetadata(docMetadata); List<YContentEntry> contents = yElement.getContents(); for (YContentEntry content : contents) { // get a media path from yElement handleContent(productObject, content, currentZipArchive); } } } return productObject; }