aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/idserverlib')
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java179
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) {