package at.gv.egovernment.moa.id.auth.builder;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import at.gv.egovernment.moa.id.BuildException;
import at.gv.egovernment.moa.id.auth.data.IdentityLink;
import at.gv.egovernment.moa.util.DOMUtils;
import at.gv.egovernment.moa.util.XPathUtils;
/**
* Builder for the lt;pr:Person>
element to be inserted
* in the authentication data lt;saml:Assertion>
.
*
* @author Paul Ivancsics
* @version $Id$
*/
public class PersonDataBuilder {
/**
* Constructor for PersonDataBuilder.
*/
public PersonDataBuilder() {
super();
}
/**
* Builds the <pr:Person>
element.
* Utilizes the parsed <prPerson>
from the identity link
* and the information regarding inclusion of "Stammzahl"
in the
* <pr:Person>
data.
*
* @param identityLink IdentityLink
containing the
* attribute prPerson
* @param provideStammzahl true if "Stammzahl"
is to be included;
* false otherwise
* @return the <pr:Person>
element as a String
* @throws BuildException on any error
*/
public String build(IdentityLink identityLink, boolean provideStammzahl)
throws BuildException {
try {
Element prPerson = (Element)identityLink.getPrPerson().cloneNode(true);
if (! provideStammzahl) {
Node prIdentification = XPathUtils.selectSingleNode(prPerson, "pr:Identification/pr:Value");
//remove IdentificationValue
prIdentification.getFirstChild().setNodeValue("");
}
String xmlString = DOMUtils.serializeNode(prPerson);
return xmlString;
}
catch (Exception ex) {
throw new BuildException(
"builder.00",
new Object[] {"PersonData", ex.toString()},
ex);
}
}
}