/* * XAdES4j - A Java library for generation and verification of XAdES signatures. * Copyright (C) 2010 Luis Goncalves. * * XAdES4j is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 3 of the License, or any later version. * * XAdES4j is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License along * with XAdES4j. If not, see <http://www.gnu.org/licenses/>. */ package xades4j.properties; import java.util.Collection; import xades4j.utils.CollectionUtils; /** * Represents the DataObjectFormat signed data object property. The DataObjectFormat * element provides information that describes the format of the signed data object. * When presenting signed data to a human user it may be important that there is * no ambiguity as to the presentation of the signed data object to the relying * party. In order for the appropriate representation (text, sound or video) to * be selected by the relying party a content hint may be indicated by the signer. * <p> * A XAdES signature may contain more than one {@code DataObjectFormat} elements, * each one qualifying one signed data object. * <p> * This property is associated with the corresponding data object via the * {@link DataObjectDesc#withDataObjectFormat(xades4j.properties.DataObjectFormatProperty) * withDataObjectFormat} method of the {@link DataObjectDesc} class. * * @author Luís */ public class DataObjectFormatProperty extends SignedDataObjectProperty { public static final String PROP_NAME = "DataObjectFormat"; /**/ private final String mimeType, encoding; private String description; private ObjectIdentifier identifier; private Collection<String> documentationUris; public DataObjectFormatProperty(String mimeType) { this(mimeType, null); } public DataObjectFormatProperty(String mimeType, String encoding) { super(TargetMultiplicity.ONE); this.mimeType = mimeType; this.encoding = encoding; } public DataObjectFormatProperty() { this(null, null); } public DataObjectFormatProperty withIdentifier(ObjectIdentifier identifier) { this.identifier = identifier; return this; } public DataObjectFormatProperty withIdentifier(String identifier, IdentifierType identifierType) { return withIdentifier(new ObjectIdentifier(identifier, identifierType)); } public DataObjectFormatProperty withIdentifier(String identifier) { return withIdentifier(new ObjectIdentifier(identifier)); } public DataObjectFormatProperty withDescription(String description) { this.description = description; return this; } public DataObjectFormatProperty withDocumentationUri(String documentationUri) { if (null != documentationUri) getOrCreateDocumentationUrisList().add(documentationUri); return this; } public DataObjectFormatProperty withDocumentationUris( Collection<String> documentationUris) { if (null == documentationUris) throw new NullPointerException("Uri list is null"); if (!documentationUris.isEmpty()) getOrCreateDocumentationUrisList().addAll(documentationUris); return this; } private Collection<String> getOrCreateDocumentationUrisList() { documentationUris = CollectionUtils.newIfNull(documentationUris, 2); return documentationUris; } public Collection<String> getDocumentationUris() { return CollectionUtils.emptyIfNull(documentationUris); } public String getMimeType() { return mimeType; } public String getEncoding() { return encoding; } public String getDescription() { return description; } public ObjectIdentifier getIdentifier() { return identifier; } @Override public String getName() { return PROP_NAME; } }