package at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes; import java.util.Iterator; import org.opensaml.saml2.core.Attribute; import org.w3c.dom.Element; import at.gv.e_government.reference.namespace.mandates._20040701_.Mandate; import at.gv.e_government.reference.namespace.persondata._20020228_.PersonNameType.FamilyName; import at.gv.e_government.reference.namespace.persondata._20020228_.PhysicalPersonType; import at.gv.egovernment.moa.id.auth.data.AuthenticationSession; import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.NoMandateDataAvailableException; import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.PVP2Exception; import at.gv.egovernment.moa.id.util.MandateBuilder; import at.gv.egovernment.moa.logging.Logger; public class MandateNaturalPersonFamilyNameAttributeBuilder extends BaseAttributeBuilder { public String getName() { return MANDATE_NAT_PER_FAMILY_NAME_NAME; } public Attribute build(AuthenticationSession authSession) throws PVP2Exception { if(authSession.getUseMandate()) { Element mandate = authSession.getMandate(); if(mandate == null) { throw new NoMandateDataAvailableException(); } Mandate mandateObject = MandateBuilder.buildMandate(mandate); if(mandateObject == null) { throw new NoMandateDataAvailableException(); } PhysicalPersonType physicalPerson = mandateObject.getMandator().getPhysicalPerson(); if(physicalPerson == null) { Logger.error("No physicalPerson mandate"); throw new NoMandateDataAvailableException(); } StringBuilder sb = new StringBuilder(); Iterator fNamesit = physicalPerson.getName().getFamilyName().iterator(); while(fNamesit.hasNext()) { sb.append(" " + fNamesit.next().getValue()); } return buildStringAttribute(MANDATE_NAT_PER_FAMILY_NAME_FRIENDLY_NAME, MANDATE_NAT_PER_FAMILY_NAME_NAME, sb.toString()); } return null; } public Attribute buildEmpty() { return buildemptyAttribute(MANDATE_NAT_PER_FAMILY_NAME_FRIENDLY_NAME, MANDATE_NAT_PER_FAMILY_NAME_NAME); } }