diff options
Diffstat (limited to 'id')
| -rw-r--r-- | id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java | 179 | 
1 files changed, 154 insertions, 25 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java index d216f716c..6e8262eef 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java @@ -19,8 +19,8 @@ import org.w3c.dom.Node;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; -import java.io.UnsupportedEncodingException;  import java.util.ArrayList; +import java.util.HashMap;  import java.util.List;  /** @@ -32,7 +32,14 @@ public class MandateRetrievalRequest implements IAction {      private MOASTORKRequest moaStorkRequest;      public String processRequest(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp, AuthenticationSession moasession) throws MOAIDException { -        Logger.error("Entering mandateretrievalrequest"); +        Logger.debug("Entering AttributeRequest for MandateProvider"); +        httpResp.reset(); +        OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moasession.getPublicOAURLPrefix()); +        if (oaParam == null) +            throw new AuthenticationException("stork.12", new Object[]{moasession.getPublicOAURLPrefix()}); + +        MOASTORKResponse moaStorkResponse = new MOASTORKResponse(); +        STORKAttrQueryResponse attrResponse = new STORKAttrQueryResponse();          this.moaSession = moasession; @@ -45,18 +52,29 @@ public class MandateRetrievalRequest implements IAction {          if (moaStorkRequest.isAttrRequest() && moaStorkRequest.getStorkAttrQueryRequest() != null) { -            populateRepresented(moasession); +            MandateContainer mandateContainer = null; + +            try { +                mandateContainer = new CorporateBodyMandateContainer(new String(moaSession.getMISMandate().getMandate(), "UTF-8")); +            } catch (Exception ex) { +                try { +                    mandateContainer = new PhyPersonMandateContainer(new String(moaSession.getMISMandate().getMandate(), "UTF-8")); +                } catch (Exception ex2) { +                    Logger.error("Could not extract data and create mandate container."); +                    throw new MOAIDException("stork.16", new Object[] {}); // TODO +                } +            } + +            if (mandateContainer instanceof CorporateBodyMandateContainer) { + +            } else if (mandateContainer instanceof PhyPersonMandateContainer) { + +            } + -            Logger.debug("Entering AttributeRequest for MandateProvider"); -            httpResp.reset(); -            OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moasession.getPublicOAURLPrefix()); -            if (oaParam == null) -                throw new AuthenticationException("stork.12", new Object[]{moasession.getPublicOAURLPrefix()}); -            MOASTORKResponse moaStorkResponse = new MOASTORKResponse(); -            STORKAttrQueryResponse attrResponse = new STORKAttrQueryResponse();  //            moaStorkResponse.setPersonalAttributeList(populateAttributes()); @@ -69,15 +87,38 @@ public class MandateRetrievalRequest implements IAction {              for (PersonalAttribute currentAttribute : sourceAttributeList) {                  Logger.debug("Evaluationg currentattribute " + currentAttribute.getName());                  if (currentAttribute.getName().equals("mandateContent")) { -                    PersonalAttribute mandateContent = new PersonalAttribute(); +                    attributeList.add(getMandateContent(mandateContainer, currentAttribute)); +                } +                if (currentAttribute.getName().equals("representative")) { +                    attributeList.add(getRepresentative(mandateContainer, currentAttribute)); +                } +                if (currentAttribute.getName().equals("represented")) { +                    attributeList.add(getRepresented(mandateContainer, currentAttribute)); +                } + + +                if (currentAttribute.getName().equals("representative")) { +                    PersonalAttribute personalAttribute = new PersonalAttribute();                      List<String> x = new ArrayList<String>();                      x.add("12345234k32jekqwjeqwe"); -                    mandateContent.setName(currentAttribute.getName()); -                    mandateContent.setFriendlyName(currentAttribute.getFriendlyName()); -                    mandateContent.setIsRequired(currentAttribute.isRequired()); -                    mandateContent.setValue(x); -                    mandateContent.setStatus("Available"); -                    attributeList.add(mandateContent); +                    HashMap<String, String> complexValue = new HashMap<String, String>(); + +                    if (mandateContainer instanceof CorporateBodyMandateContainer) { + +                    } else if (mandateContainer instanceof PhyPersonMandateContainer) { +                    } + +                    complexValue.put("eIdentifier","12345"); +                    complexValue.put("givenName", "Name"); +                    complexValue.put("surname", "surname"); +                    complexValue.put("dateOfBirth", "1.1.1."); + +                    personalAttribute.setName(currentAttribute.getName()); +                    personalAttribute.setFriendlyName(currentAttribute.getFriendlyName()); +                    personalAttribute.setIsRequired(currentAttribute.isRequired()); +                    personalAttribute.setComplexValue(complexValue); +                    personalAttribute.setStatus("Available"); +                    attributeList.add(personalAttribute);                      Logger.debug("Setting currentattribute " + currentAttribute.getName());                  } @@ -127,19 +168,26 @@ public class MandateRetrievalRequest implements IAction {      private void populateRepresented(AuthenticationSession moasession) { +        MandateContainer mc = null; +          try { -            CorporateBodyMandateContainer corporateBodyMandateContainer = new CorporateBodyMandateContainer(new String(moaSession.getMISMandate().getMandate(), "UTF-8")); +            mc = new CorporateBodyMandateContainer(new String(moaSession.getMISMandate().getMandate(), "UTF-8"));          } catch (Exception ex) { -           Logger.error("CORPORATE ERROR"); +            Logger.error("CORPORATE ERROR"); +            try { +                mc = new PhyPersonMandateContainer(new String(moaSession.getMISMandate().getMandate(), "UTF-8")); +            } catch (Exception ex2) { +                Logger.error("PERSON ERROR"); +            }          } - -        try { -            PhyPersonMandateContainer phyPersonMandateContainer = new PhyPersonMandateContainer(new String(moaSession.getMISMandate().getMandate(), "UTF-8")); -        } catch (Exception ex) { -            Logger.error("PERSON ERROR"); +        if (mc instanceof CorporateBodyMandateContainer) { +            Logger.error("Instance of Corp"); +        } else if (mc instanceof PhyPersonMandateContainer) { +            Logger.error("Instance of Phy");          } +      } @@ -168,8 +216,89 @@ public class MandateRetrievalRequest implements IAction {          throw new MOAIDException("stork.11", null); // TODO description      } -    private void populateMandateType(AuthenticationSession moasession) { +    private String mapPowersType(MandateContainer mandateContainer) {    // TODO +         return ""; +    } + +    private String mapCompanyType(MandateContainer mandateContainer) {    // TODO +        return ""; +    } + +    private PersonalAttribute getRepresentative(MandateContainer mandateContainer, PersonalAttribute sourceAttribute) { +        PersonalAttribute personalAttribute = new PersonalAttribute(); +        HashMap<String, String> complexValue = new HashMap<String, String>(); + +        if (mandateContainer instanceof CorporateBodyMandateContainer) { +            Logger.error("Company as representative not supported"); // TODO + +        } else if (mandateContainer instanceof PhyPersonMandateContainer) { +            PhyPersonMandateContainer phyPersonMandateContainer = (PhyPersonMandateContainer)mandateContainer; +            complexValue.put("eIdentifier", ""); // TODO CALCULATE +            complexValue.put("givenName", phyPersonMandateContainer.getPhysicalRepresentativeGivenName()); +            complexValue.put("surname", phyPersonMandateContainer.getPhysicalRepresentativeFamilyName()); +            complexValue.put("dateOfBirth", phyPersonMandateContainer.getPhysicalRepresentativeBirthDate()); +        } + +        personalAttribute.setName(sourceAttribute.getName()); +        personalAttribute.setFriendlyName(sourceAttribute.getFriendlyName()); +        personalAttribute.setIsRequired(sourceAttribute.isRequired()); +        personalAttribute.setComplexValue(complexValue); +        personalAttribute.setStatus("Available"); +        Logger.debug("Complex attribute extracted: " + personalAttribute.getName()); + +        return personalAttribute; +    } + +    private PersonalAttribute getRepresented(MandateContainer mandateContainer, PersonalAttribute sourceAttribute) { +        PersonalAttribute personalAttribute = new PersonalAttribute(); +        HashMap<String, String> complexValue = new HashMap<String, String>(); + +        if (mandateContainer instanceof CorporateBodyMandateContainer) { +            CorporateBodyMandateContainer corporateBodyMandateContainer = (CorporateBodyMandateContainer)mandateContainer; +            complexValue.put("eLPIdentifier", corporateBodyMandateContainer.getCorpMandatorIdentificationValue()); +            complexValue.put("name", corporateBodyMandateContainer.getCorpMandatorFullName()); +            complexValue.put("address", ""); +            complexValue.put("canonicalAddress", ""); +            complexValue.put("type", mapCompanyType(mandateContainer)); +        } else if (mandateContainer instanceof PhyPersonMandateContainer) { +            PhyPersonMandateContainer phyPersonMandateContainer = (PhyPersonMandateContainer)mandateContainer; +            complexValue.put("eIdentifier", ""); // TODO CALCULATE +            complexValue.put("givenName", phyPersonMandateContainer.getPhyPersMandatorGivenName()); +            complexValue.put("surname", phyPersonMandateContainer.getPhyPersMandatorFamilyName()); +            complexValue.put("dateOfBirth", phyPersonMandateContainer.getPhyPersMandatorBirthDate()); +        } + +        personalAttribute.setName(sourceAttribute.getName()); +        personalAttribute.setFriendlyName(sourceAttribute.getFriendlyName()); +        personalAttribute.setIsRequired(sourceAttribute.isRequired()); +        personalAttribute.setComplexValue(complexValue); +        personalAttribute.setStatus("Available"); +        Logger.debug("Complex attribute extracted: " + personalAttribute.getName()); + +        return personalAttribute; +    } + + +    private PersonalAttribute getMandateContent(MandateContainer mandateContainer, PersonalAttribute sourceAttribute) { +        PersonalAttribute personalAttribute = new PersonalAttribute(); +        HashMap<String, String> complexValue = new HashMap<String, String>(); + +        complexValue.put("validFrom", mandateContainer.getMandateValidFrom()); +        complexValue.put("validTo", mandateContainer.getMandateValidTo()); +        complexValue.put("transactionLimit", "0"); // TODO +        complexValue.put("transactionLimitCurrency", ""); // TODO +        complexValue.put("isJoint", ""); +        complexValue.put("isChained", "false"); +        complexValue.put("typePower", mapPowersType(mandateContainer)); + +        personalAttribute.setName(sourceAttribute.getName()); +        personalAttribute.setFriendlyName(sourceAttribute.getFriendlyName()); +        personalAttribute.setIsRequired(sourceAttribute.isRequired()); +        personalAttribute.setComplexValue(complexValue); +        personalAttribute.setStatus("Available"); +        Logger.debug("Complex attribute extracted: " + personalAttribute.getName()); +        return personalAttribute;      }      public boolean needAuthentication(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp) { | 
