view software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/escidoc/Container.java @ 0:408254cf2f1d

Erstellung
author Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
date Wed, 24 Nov 2010 17:24:23 +0100
parents
children
line wrap: on
line source

package de.mpg.mpiwg.berlin.mpdl.escidoc;

import java.util.Date;

public class Container {
  private String id;
  private String contentModelId;  
  private String contextId;
  private String pid;
  private MetadataRecord mdRecord;
  private Date lastModificationDate;
  
  public Container(String id, Date lastModificationDate) {
    this.id = id;
    this.lastModificationDate = lastModificationDate;
  }

  public Container(String contentModelId, String contextId, String pid, MetadataRecord mdRecord) {
    this.contentModelId = contentModelId;
    this.contextId = contextId;
    this.pid = pid;
    this.mdRecord = mdRecord;
  }
  
  public String getId() {
    return id;
  }
  
  public Date getLastModificationDate() {
    return lastModificationDate;  
  }

  public String toXmlString() {
    StringBuilder str = new StringBuilder();
    str.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
    str.append("<container:container xml:base=\"http://www.escidoc.de/\"\n");
    str.append("  xmlns=\"http://www.escidoc.de/schemas/container/0.8\"\n");
    str.append("  xmlns:container=\"http://www.escidoc.de/schemas/container/0.8\"\n");
    str.append("  xmlns:prop=\"http://escidoc.de/core/01/properties/\"\n");
    str.append("  xmlns:srel=\"http://escidoc.de/core/01/structural-relations/\"\n");
    str.append("  xmlns:escidocMetadataRecords=\"http://www.escidoc.de/schemas/metadatarecords/0.5\"\n");
    str.append("  xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n");
    str.append("  xmlns:mpiwg=\"http://www.mpiwg-berlin.mpg.de/ns/mpiwg\"\n");
    str.append("  xmlns:escidocComponents=\"http://www.escidoc.de/schemas/components/0.9\">\n");

    str.append("  <container:properties>\n");
    str.append("    <srel:context xlink:href=\"" + contextId + "\"/>\n");
    str.append("    <srel:content-model xlink:href=\"" + contentModelId + "\"/>\n");
    if (pid != null) {
      str.append("    <prop:pid>" + pid + "</prop:pid>\n");
    }
    str.append("    <prop:content-model-specific>\n");
    str.append("      <my-content-model-value-structure />\n");
    str.append("    </prop:content-model-specific>\n");
    str.append("  </container:properties>\n");

    str.append("  <!-- A Container could have multiple meta data records. -->\n");
    str.append("  <escidocMetadataRecords:md-records>\n");
    str.append("    <!-- At least one meta data record with name escidoc is needed. -->\n");
    str.append("    <escidocMetadataRecords:md-record name=\"escidoc\">\n");
    if (mdRecord != null) {
      str.append(mdRecord.toXmlString());
    } else {
      str.append("      <metadata xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n");
      str.append("      </metadata>\n");
    }
    str.append("    </escidocMetadataRecords:md-record>\n");
        
    str.append("  </escidocMetadataRecords:md-records>\n");

    str.append("</container:container>\n");
    return str.toString();
  }
}