package at.gv.egovernment.moa.spss.api.xmlsign;

import at.gv.egovernment.moa.spss.api.common.Content;

/**
 * Encapsulates information required to create a single signature.
 * 
 * @author Patrick Peck
 * @author Stephan Grill
 * @version $Id$
 */
public interface DataObjectInfo {
  /**
   * Indicates that a detached signature will be created.
   */
  public static final String STRUCTURE_DETACHED = "detached"; 
  /**
   * Indicates that an enveloping signature will be created.
   */
  public static final String STRUCTURE_ENVELOPING = "enveloping";

  /**
   * Gets the structure of the signature.
   * 
   * @return The structure of the signature.
   */
  public String getStructure();
  /**
   * Checks whether a refercence will be placed in the signature itself or
   * in the manifest.
   * 
   * @return <code>true</code> if a reference will be placed in the manifest,
   * <code>false</code> if it will be placed in the signature.
   */
  public boolean isChildOfManifest();
  /**
   * Gets information related to a single data object.
   * 
   * @return Information related to a single data object.
   */
  public Content getDataObject();
  /**
   * Gets information for the transformation of the data object.
   * 
   * @return The transformation information.
   */
  public CreateTransformsInfoProfile getCreateTransformsInfoProfile();
}