package at.gv.egovernment.moa.id.protocols.builder.attributes; import at.gv.egiz.eaaf.core.api.idp.IAttributeGenerator; import at.gv.egiz.eaaf.core.api.idp.IAuthData; import at.gv.egiz.eaaf.core.api.idp.IPVPAttributeBuilder; import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration; import at.gv.egiz.eaaf.core.exceptions.AttributeBuilderException; import at.gv.egiz.eaaf.core.exceptions.UnavailableAttributeException; import at.gv.egiz.eaaf.core.impl.data.Pair; import at.gv.egiz.eaaf.core.impl.idp.builder.attributes.PVPMETADATA; import at.gv.egovernment.moa.id.data.IMOAAuthData; import at.gv.egovernment.moa.logging.Logger; @PVPMETADATA public class MandateNaturalPersonEncBPKListAttributeBuilder implements IPVPAttributeBuilder { public String getName() { return MANDATE_NAT_PER_ENC_BPK_LIST_NAME; } public ATT build(ISPConfiguration oaParam, IAuthData authData, IAttributeGenerator g) throws AttributeBuilderException { if (authData instanceof IMOAAuthData) { if (((IMOAAuthData) authData).isUseMandate()) { if (((IMOAAuthData)authData).getEncMandateNaturalPersonbPKList() != null && ((IMOAAuthData)authData).getEncMandateNaturalPersonbPKList().size() > 0) { Pair value = ((IMOAAuthData)authData).getEncMandateNaturalPersonbPKList().get(0); String result = BPKListAttributeBuilder.LIST_ELEMENT_START + value.getSecond() + EncryptedBPKAttributeBuilder.DELIMITER_ENCBPK_TARGET + value.getFirst() + BPKListAttributeBuilder.LIST_ELEMENT_END; for (int i=1; i<((IMOAAuthData)authData).getEncMandateNaturalPersonbPKList().size(); i++) { Pair el = ((IMOAAuthData)authData).getEncMandateNaturalPersonbPKList().get(i); result += BPKListAttributeBuilder.DELIMITER_BPK_LIST + BPKListAttributeBuilder.LIST_ELEMENT_START + el.getSecond() + EncryptedBPKAttributeBuilder.DELIMITER_ENCBPK_TARGET + el.getFirst() + BPKListAttributeBuilder.LIST_ELEMENT_END; } return g.buildStringAttribute(MANDATE_NAT_PER_ENC_BPK_LIST_FRIENDLY_NAME, MANDATE_NAT_PER_ENC_BPK_LIST_NAME, result); } } else Logger.trace(MANDATE_NAT_PER_ENC_BPK_LIST_FRIENDLY_NAME + " is only availabe if mandates are used"); } else Logger.info(MANDATE_NAT_PER_ENC_BPK_LIST_FRIENDLY_NAME + " is only available in MOA-ID context"); throw new UnavailableAttributeException(MANDATE_NAT_PER_ENC_BPK_LIST_NAME); } public ATT buildEmpty(IAttributeGenerator g) { return g.buildEmptyAttribute(MANDATE_NAT_PER_ENC_BPK_LIST_FRIENDLY_NAME, MANDATE_NAT_PER_ENC_BPK_LIST_NAME); } }