mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-09 19:13:18 +00:00
Simplify adding coverpage code logic, formatting tweaks
This commit is contained in:
@@ -81,6 +81,13 @@ public class CitationDocument {
|
|||||||
*/
|
*/
|
||||||
private static ArrayList<String> citationEnabledCollectionsList;
|
private static ArrayList<String> citationEnabledCollectionsList;
|
||||||
|
|
||||||
|
private static File tempDir;
|
||||||
|
|
||||||
|
private static String[] header1;
|
||||||
|
private static String[] header2;
|
||||||
|
private static String[] fields;
|
||||||
|
private static String footer;
|
||||||
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
// Add valid format MIME types to set. This could be put in the Schema
|
// Add valid format MIME types to set. This could be put in the Schema
|
||||||
@@ -143,6 +150,24 @@ public class CitationDocument {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
header1 = new String[]{"The Ohio State University", ""};
|
||||||
|
header2 = new String[]{"Knowledge Bank", "http://kb.osu.edu"};
|
||||||
|
fields = new String[]{"dc.date.issued", "dc.date.created", "dc.title", "dc.creator", "dc.contributor.author", "dc.publisher", "_line_", "dc.identifier.citation", "dc.identifier.uri"};
|
||||||
|
footer = "Downloaded from the Knowledge Bank, The Ohio State University's intitutional repository";
|
||||||
|
|
||||||
|
String tempDirString = ConfigurationManager.getProperty("dspace.dir") + "/temp";
|
||||||
|
tempDir = new File(tempDirString);
|
||||||
|
if(!tempDir.exists()) {
|
||||||
|
boolean success = tempDir.mkdir();
|
||||||
|
if(success) {
|
||||||
|
log.info("Created temp dir");
|
||||||
|
} else {
|
||||||
|
log.info("Not created temp dir");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.info(tempDir + " exists");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -247,27 +272,6 @@ public class CitationDocument {
|
|||||||
return VALID_TYPES.contains(bitstream.getFormat().getMIMEType());
|
return VALID_TYPES.contains(bitstream.getFormat().getMIMEType());
|
||||||
}
|
}
|
||||||
|
|
||||||
public File makeCitedDocument(Bitstream bitstream) {
|
|
||||||
try {
|
|
||||||
|
|
||||||
Item item = (Item) bitstream.getParentObject();
|
|
||||||
CitationMeta cm = new CitationMeta(item);
|
|
||||||
if(cm == null) {
|
|
||||||
log.error("CitationMeta was null");
|
|
||||||
}
|
|
||||||
|
|
||||||
File citedDocumentFile = makeCitedDocument(bitstream, cm);
|
|
||||||
if(citedDocumentFile == null) {
|
|
||||||
log.error("Got a null citedDocumentFile in makeCitedDocument for bitstream");
|
|
||||||
}
|
|
||||||
return citedDocumentFile;
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("makeCitedDocument from Bitstream fail!" + e.getMessage());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a
|
* Creates a
|
||||||
* cited document from the given bitstream of the given item. This
|
* cited document from the given bitstream of the given item. This
|
||||||
@@ -283,195 +287,126 @@ public class CitationDocument {
|
|||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @param bitstream The source bitstream being cited. This must be a PDF.
|
* @param bitstream The source bitstream being cited. This must be a PDF.
|
||||||
* @param cMeta The citation information used to generate the coverpage.
|
|
||||||
* @return The temporary File that is the finished, cited document.
|
* @return The temporary File that is the finished, cited document.
|
||||||
* @throws java.io.FileNotFoundException
|
* @throws java.io.FileNotFoundException
|
||||||
* @throws SQLException
|
* @throws SQLException
|
||||||
* @throws org.dspace.authorize.AuthorizeException
|
* @throws org.dspace.authorize.AuthorizeException
|
||||||
*/
|
*/
|
||||||
private File makeCitedDocument(Bitstream bitstream, CitationMeta cMeta)
|
public File makeCitedDocument(Bitstream bitstream)
|
||||||
throws IOException, SQLException, AuthorizeException, COSVisitorException {
|
throws IOException, SQLException, AuthorizeException, COSVisitorException {
|
||||||
//Read the source bitstream
|
|
||||||
PDDocument document = new PDDocument();
|
PDDocument document = new PDDocument();
|
||||||
PDDocument sourceDocument = new PDDocument();
|
PDDocument sourceDocument = new PDDocument();
|
||||||
sourceDocument = sourceDocument.load(bitstream.retrieve());
|
try {
|
||||||
log.info("loaded pdf");
|
Item item = (Item) bitstream.getParentObject();
|
||||||
PDPage coverPage = new PDPage(PDPage.PAGE_SIZE_LETTER);
|
sourceDocument = sourceDocument.load(bitstream.retrieve());
|
||||||
|
log.info("loaded pdf");
|
||||||
|
PDPage coverPage = new PDPage(PDPage.PAGE_SIZE_LETTER);
|
||||||
|
generateCoverPage(document, coverPage, item);
|
||||||
|
addCoverPageToDocument(document, sourceDocument, coverPage);
|
||||||
|
|
||||||
List<PDPage> sourcePageList = sourceDocument.getDocumentCatalog().getAllPages();
|
document.save(tempDir.getAbsolutePath() + "/bitstream.cover.pdf");
|
||||||
//Is the citation-page the first page or last-page?
|
return new File(tempDir.getAbsolutePath() + "/bitstream.cover.pdf");
|
||||||
if(isCitationFirstPage()) {
|
} finally {
|
||||||
//citation as cover page
|
sourceDocument.close();
|
||||||
document.addPage(coverPage);
|
document.close();
|
||||||
for(PDPage sourcePage : sourcePageList) {
|
|
||||||
document.addPage(sourcePage);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//citation as tail page
|
|
||||||
for(PDPage sourcePage : sourcePageList) {
|
|
||||||
document.addPage(sourcePage);
|
|
||||||
}
|
|
||||||
document.addPage(coverPage);
|
|
||||||
}
|
}
|
||||||
log.info("added pages");
|
|
||||||
sourcePageList.clear();
|
|
||||||
|
|
||||||
generateCoverPage(document, coverPage, cMeta);
|
|
||||||
log.info("3");
|
|
||||||
|
|
||||||
String tempDirString = ConfigurationManager.getProperty("dspace.dir") + "/temp";
|
|
||||||
File tempDir = new File(tempDirString);
|
|
||||||
if(!tempDir.exists()) {
|
|
||||||
boolean success = tempDir.mkdir();
|
|
||||||
if(success) {
|
|
||||||
log.info("Created temp dir");
|
|
||||||
} else {
|
|
||||||
log.info("Not created temp dir");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.info(tempDir + " exists");
|
|
||||||
}
|
|
||||||
|
|
||||||
document.save(tempDir.getAbsolutePath() + "/bitstream.cover.pdf");
|
|
||||||
document.close();
|
|
||||||
sourceDocument.close();
|
|
||||||
return new File(tempDir.getAbsolutePath() + "/bitstream.cover.pdf");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void generateCoverPage(PDDocument document, PDPage coverPage, CitationMeta citationMeta) throws IOException, COSVisitorException {
|
private void generateCoverPage(PDDocument document, PDPage coverPage, Item item) throws IOException, COSVisitorException {
|
||||||
String[] header1 = {"The Ohio State University", ""};
|
|
||||||
String[] header2 = {"Knowledge Bank", "http://kb.osu.edu"};
|
|
||||||
String[] fields1 = {"dc.date.issued", "dc.date.created"};
|
|
||||||
String[] fields2 = {"dc.title", "dc.creator", "dc.contributor.author", "dc.publisher"};
|
|
||||||
String[] fields3 = {"dc.identifier.citation", "dc.identifier.uri"};
|
|
||||||
String footer = "Downloaded from the Knowledge Bank, The Ohio State University's intitutional repository";
|
|
||||||
|
|
||||||
PDPageContentStream contentStream = new PDPageContentStream(document, coverPage);
|
PDPageContentStream contentStream = new PDPageContentStream(document, coverPage);
|
||||||
try {
|
try {
|
||||||
Item item = citationMeta.getItem();
|
int ypos = 760;
|
||||||
int ypos = 700;
|
int xpos = 30;
|
||||||
int xpos = 50;
|
int xwidth = 550;
|
||||||
int ygap = 20;
|
int ygap = 20;
|
||||||
log.info("1");
|
|
||||||
|
|
||||||
PDFont fontHelvetica = PDType1Font.HELVETICA;
|
PDFont fontHelvetica = PDType1Font.HELVETICA;
|
||||||
PDFont fontHelveticaBold = PDType1Font.HELVETICA_BOLD;
|
PDFont fontHelveticaBold = PDType1Font.HELVETICA_BOLD;
|
||||||
PDFont fontHelveticaOblique = PDType1Font.HELVETICA_OBLIQUE;
|
PDFont fontHelveticaOblique = PDType1Font.HELVETICA_OBLIQUE;
|
||||||
|
contentStream.setNonStrokingColor(Color.BLACK);
|
||||||
log.info("2");
|
|
||||||
|
|
||||||
String[][] content = {header1};
|
String[][] content = {header1};
|
||||||
drawTable(coverPage, contentStream, ypos, xpos, content);
|
drawTable(coverPage, contentStream, ypos, xpos, content, fontHelveticaBold, 11, false);
|
||||||
ypos -=(ygap);
|
ypos -=(ygap);
|
||||||
|
|
||||||
String[][] content2 = {header2};
|
String[][] content2 = {header2};
|
||||||
drawTable(coverPage, contentStream, ypos, xpos, content2);
|
drawTable(coverPage, contentStream, ypos, xpos, content2, fontHelveticaBold, 11, false);
|
||||||
ypos -=ygap;
|
ypos -=ygap;
|
||||||
|
|
||||||
contentStream.setNonStrokingColor(Color.BLACK);
|
contentStream.fillRect(xpos, ypos, xwidth, 1);
|
||||||
contentStream.fillRect(xpos, ypos, 500, 1);
|
|
||||||
contentStream.closeAndStroke();
|
contentStream.closeAndStroke();
|
||||||
//ypos -=(ygap/2);
|
|
||||||
|
|
||||||
String[][] content3 = {{getOwningCommunity(item), getOwningCollection(item)}};
|
String[][] content3 = {{getOwningCommunity(item), getOwningCollection(item)}};
|
||||||
drawTable(coverPage, contentStream, ypos, xpos, content3);
|
drawTable(coverPage, contentStream, ypos, xpos, content3, fontHelvetica, 9, false);
|
||||||
ypos -=ygap;
|
ypos -=ygap;
|
||||||
|
|
||||||
contentStream.setNonStrokingColor(Color.BLACK);
|
contentStream.fillRect(xpos, ypos, xwidth, 1);
|
||||||
contentStream.fillRect(xpos, ypos, 500, 1);
|
|
||||||
contentStream.closeAndStroke();
|
contentStream.closeAndStroke();
|
||||||
ypos -=(ygap*2);
|
ypos -=(ygap*2);
|
||||||
|
|
||||||
log.info("Drew table");
|
for(String field : fields) {
|
||||||
|
|
||||||
for(String field : fields1) {
|
|
||||||
PDFont font = fontHelvetica;
|
PDFont font = fontHelvetica;
|
||||||
int fontSize = 12;
|
int fontSize = 11;
|
||||||
|
|
||||||
if(field.contains("title")) {
|
if(field.contains("title")) {
|
||||||
font = fontHelveticaBold;
|
|
||||||
fontSize = 26;
|
fontSize = 26;
|
||||||
} else if(field.contains("identifier")) {
|
ypos -= ygap;
|
||||||
fontSize = 11;
|
} else if(field.contains("creator") || field.contains("contributor")) {
|
||||||
|
fontSize = 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(StringUtils.isNotEmpty(item.getMetadata(field))) {
|
if(field.equals("_line_")) {
|
||||||
|
contentStream.fillRect(xpos, ypos, xwidth, 1);
|
||||||
|
contentStream.closeAndStroke();
|
||||||
|
ypos -=(ygap);
|
||||||
|
|
||||||
|
} else if(StringUtils.isNotEmpty(item.getMetadata(field))) {
|
||||||
ypos = drawStringWordWrap(coverPage, contentStream, item.getMetadata(field), xpos, ypos, font, fontSize);
|
ypos = drawStringWordWrap(coverPage, contentStream, item.getMetadata(field), xpos, ypos, font, fontSize);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
contentStream.setNonStrokingColor(Color.BLACK);
|
|
||||||
contentStream.fillRect(xpos, ypos, 500, 1);
|
|
||||||
contentStream.closeAndStroke();
|
|
||||||
ypos -=(ygap*2);
|
|
||||||
|
|
||||||
for(String field : fields2) {
|
|
||||||
PDFont font = fontHelvetica;
|
|
||||||
int fontSize = 12;
|
|
||||||
if(field.contains("title")) {
|
if(field.contains("title")) {
|
||||||
font = fontHelveticaBold;
|
ypos -=ygap;
|
||||||
fontSize = 26;
|
|
||||||
} else if(field.contains("identifier")) {
|
|
||||||
fontSize = 11;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotEmpty(item.getMetadata(field))) {
|
|
||||||
ypos = drawStringWordWrap(coverPage, contentStream, item.getMetadata(field), xpos, ypos, font, fontSize);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
contentStream.setNonStrokingColor(Color.BLACK);
|
|
||||||
contentStream.fillRect(xpos, ypos, 500, 1);
|
|
||||||
contentStream.closeAndStroke();
|
|
||||||
ypos -=(ygap*2);
|
|
||||||
|
|
||||||
for(String field : fields3) {
|
|
||||||
PDFont font = fontHelvetica;
|
|
||||||
int fontSize = 12;
|
|
||||||
if(field.contains("title")) {
|
|
||||||
font = fontHelveticaBold;
|
|
||||||
fontSize = 26;
|
|
||||||
} else if(field.contains("identifier")) {
|
|
||||||
fontSize = 11;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(StringUtils.isNotEmpty(item.getMetadata(field))) {
|
|
||||||
ypos = drawStringWordWrap(coverPage, contentStream, item.getMetadata(field), xpos, ypos, font, fontSize);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
contentStream.beginText();
|
contentStream.beginText();
|
||||||
contentStream.setFont(fontHelveticaOblique, 11);
|
contentStream.setFont(fontHelveticaOblique, 11);
|
||||||
contentStream.moveTextPositionByAmount(xpos, ypos);
|
contentStream.moveTextPositionByAmount(xpos, ypos);
|
||||||
contentStream.drawString(footer);
|
contentStream.drawString(footer);
|
||||||
contentStream.endText();
|
contentStream.endText();
|
||||||
log.info("13");
|
|
||||||
ypos -=ygap;
|
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
contentStream.close();
|
contentStream.close();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
log.info("14");
|
private void addCoverPageToDocument(PDDocument document, PDDocument sourceDocument, PDPage coverPage) {
|
||||||
|
List<PDPage> sourcePageList = sourceDocument.getDocumentCatalog().getAllPages();
|
||||||
|
|
||||||
|
if (isCitationFirstPage()) {
|
||||||
|
//citation as cover page
|
||||||
|
document.addPage(coverPage);
|
||||||
|
for (PDPage sourcePage : sourcePageList) {
|
||||||
|
document.addPage(sourcePage);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//citation as tail page
|
||||||
|
for (PDPage sourcePage : sourcePageList) {
|
||||||
|
document.addPage(sourcePage);
|
||||||
|
}
|
||||||
|
document.addPage(coverPage);
|
||||||
|
}
|
||||||
|
log.info("added pages");
|
||||||
|
sourcePageList.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int drawStringWordWrap(PDPage page, PDPageContentStream contentStream, String text,
|
public int drawStringWordWrap(PDPage page, PDPageContentStream contentStream, String text,
|
||||||
int startX, int startY, PDFont pdfFont, float fontSize) throws IOException {
|
int startX, int startY, PDFont pdfFont, float fontSize) throws IOException {
|
||||||
//PDFont pdfFont = PDType1Font.HELVETICA;
|
|
||||||
//float fontSize = 25;
|
|
||||||
float leading = 1.5f * fontSize;
|
float leading = 1.5f * fontSize;
|
||||||
|
|
||||||
|
|
||||||
PDRectangle mediabox = page.findMediaBox();
|
PDRectangle mediabox = page.findMediaBox();
|
||||||
float margin = 72;
|
float margin = 72;
|
||||||
float width = mediabox.getWidth() - 2*margin;
|
float width = mediabox.getWidth() - 2*margin;
|
||||||
//float startX = mediabox.getLowerLeftX() + margin;
|
|
||||||
//float startY = mediabox.getUpperRightY() - margin;
|
|
||||||
|
|
||||||
//String text = "I am trying to create a PDF file with a lot of text contents in the document. I am using PDFBox";
|
List<String> lines = new ArrayList<>();
|
||||||
List<String> lines = new ArrayList<String>();
|
|
||||||
int lastSpace = -1;
|
int lastSpace = -1;
|
||||||
while (text.length() > 0)
|
while (text.length() > 0)
|
||||||
{
|
{
|
||||||
@@ -539,13 +474,15 @@ public class CitationDocument {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getAllMetadataSeperated(Item item, String metadataKey) {
|
public String getAllMetadataSeparated(Item item, String metadataKey) {
|
||||||
DCValue[] dcValues = item.getMetadataByMetadataString(metadataKey);
|
DCValue[] dcValues = item.getMetadataByMetadataString(metadataKey);
|
||||||
|
|
||||||
ArrayList<String> valueArray = new ArrayList<String>();
|
ArrayList<String> valueArray = new ArrayList<String>();
|
||||||
|
|
||||||
for(DCValue dcValue : dcValues) {
|
for(DCValue dcValue : dcValues) {
|
||||||
valueArray.add(dcValue.value);
|
if(StringUtils.isNotBlank(dcValue.value)) {
|
||||||
|
valueArray.add(dcValue.value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return StringUtils.join(valueArray.toArray(), "; ");
|
return StringUtils.join(valueArray.toArray(), "; ");
|
||||||
@@ -561,7 +498,7 @@ public class CitationDocument {
|
|||||||
*/
|
*/
|
||||||
public static void drawTable(PDPage page, PDPageContentStream contentStream,
|
public static void drawTable(PDPage page, PDPageContentStream contentStream,
|
||||||
float y, float margin,
|
float y, float margin,
|
||||||
String[][] content) throws IOException {
|
String[][] content, PDFont font, int fontSize, boolean cellBorders) throws IOException {
|
||||||
final int rows = content.length;
|
final int rows = content.length;
|
||||||
final int cols = content[0].length;
|
final int cols = content[0].length;
|
||||||
final float rowHeight = 20f;
|
final float rowHeight = 20f;
|
||||||
@@ -570,22 +507,24 @@ public class CitationDocument {
|
|||||||
final float colWidth = tableWidth/(float)cols;
|
final float colWidth = tableWidth/(float)cols;
|
||||||
final float cellMargin=5f;
|
final float cellMargin=5f;
|
||||||
|
|
||||||
//draw the rows
|
if(cellBorders) {
|
||||||
//float nexty = y ;
|
//draw the rows
|
||||||
//for (int i = 0; i <= rows; i++) {
|
float nexty = y ;
|
||||||
// contentStream.drawLine(margin,nexty,margin+tableWidth,nexty);
|
for (int i = 0; i <= rows; i++) {
|
||||||
// nexty-= rowHeight;
|
contentStream.drawLine(margin,nexty,margin+tableWidth,nexty);
|
||||||
//}
|
nexty-= rowHeight;
|
||||||
|
}
|
||||||
|
|
||||||
//draw the columns
|
//draw the columns
|
||||||
//float nextx = margin;
|
float nextx = margin;
|
||||||
//for (int i = 0; i <= cols; i++) {
|
for (int i = 0; i <= cols; i++) {
|
||||||
// contentStream.drawLine(nextx,y,nextx,y-tableHeight);
|
contentStream.drawLine(nextx,y,nextx,y-tableHeight);
|
||||||
// nextx += colWidth;
|
nextx += colWidth;
|
||||||
//}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//now add the text
|
//now add the text
|
||||||
contentStream.setFont(PDType1Font.HELVETICA_BOLD,12);
|
contentStream.setFont(font, fontSize);
|
||||||
|
|
||||||
float textx = margin+cellMargin;
|
float textx = margin+cellMargin;
|
||||||
float texty = y-15;
|
float texty = y-15;
|
||||||
@@ -602,86 +541,4 @@ public class CitationDocument {
|
|||||||
textx = margin+cellMargin;
|
textx = margin+cellMargin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* This wraps the item used in its constructor to make it easier to access
|
|
||||||
* METADATA.
|
|
||||||
*/
|
|
||||||
private class CitationMeta {
|
|
||||||
private Collection parent;
|
|
||||||
private Map<String, String> metaData;
|
|
||||||
private Item myItem;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs CitationMeta object from an Item. It uses item specific
|
|
||||||
* METADATA as well as METADATA from the owning collection.
|
|
||||||
*
|
|
||||||
* @param item An Item to get METADATA from.
|
|
||||||
* @throws java.sql.SQLException
|
|
||||||
*/
|
|
||||||
public CitationMeta(Item item) throws SQLException {
|
|
||||||
this.myItem = item;
|
|
||||||
this.metaData = new HashMap<String, String>();
|
|
||||||
//Get all METADATA from our this.myItem
|
|
||||||
DCValue[] dcvs = this.myItem.getMetadata(Item.ANY, Item.ANY, Item.ANY, Item.ANY);
|
|
||||||
//Put METADATA in a Map for easy access.
|
|
||||||
for (DCValue dsv : dcvs) {
|
|
||||||
String[] dsvParts = {dsv.schema, dsv.element, dsv.qualifier, dsv.language, dsv.authority};
|
|
||||||
StringBuilder keyBuilder = new StringBuilder();
|
|
||||||
for (String part : dsvParts) {
|
|
||||||
if (part != null && part != "") {
|
|
||||||
keyBuilder.append(part + '.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//Remove the trailing '.'
|
|
||||||
keyBuilder.deleteCharAt(keyBuilder.length() - 1);
|
|
||||||
this.metaData.put(keyBuilder.toString(), dsv.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//Get METADATA from the owning Collection
|
|
||||||
this.parent = this.myItem.getOwningCollection();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a map of the METADATA for the item associated with this
|
|
||||||
* instance of CitationMeta.
|
|
||||||
*
|
|
||||||
* @return a Map of the METADATA for the associated item.
|
|
||||||
*/
|
|
||||||
public Map<String, String> getMetaData() {
|
|
||||||
return this.metaData;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Item getItem() {
|
|
||||||
return this.myItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Collection getCollection() {
|
|
||||||
return this.parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
* @see Object#toString()
|
|
||||||
* @return A string with the format:
|
|
||||||
* CitationPage.CitationMeta {
|
|
||||||
* CONTENT
|
|
||||||
* }
|
|
||||||
* Where CONTENT is the METADATA derived by this class.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
StringBuilder ret = new StringBuilder(CitationMeta.class.getName());
|
|
||||||
ret.append(" {<br />\n\t");
|
|
||||||
ret.append(this.parent.getName());
|
|
||||||
ret.append("\n\t");
|
|
||||||
ret.append(this.myItem.getName());
|
|
||||||
ret.append("\n\t");
|
|
||||||
ret.append(this.metaData);
|
|
||||||
ret.append("\n}\n");
|
|
||||||
return ret.toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user