Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
package com.verisec.frejaeid.client.beans.sign.init;
import com.verisec.frejaeid.client.beans.general.AttributeToReturnInfo;
import com.verisec.frejaeid.client.beans.general.SsnUserInfo;
import com.verisec.frejaeid.client.enums.*;
import com.verisec.frejaeid.client.exceptions.FrejaEidClientInternalException;
import com.verisec.frejaeid.client.util.UserInfoUtil;
import java.util.HashSet;
import java.util.Set;
public class InitiateSignRequestBuilders {
public static class UserInfoBuilder {
/**
* Sets email as userInfo and {@linkplain UserInfoType#EMAIL} as
* {@linkplain UserInfoType} for initiating transaction.
*
* @param email user's email that will be used to identify the end user.
* Maximum length is 256 characters.
* @return request builder
*/
public SetOptionalParamsBuilder setEmail(String email) {
return new SetOptionalParamsBuilder(UserInfoType.EMAIL, email);
}
/**
* Sets ssnUserInfo as userInfo and {@linkplain UserInfoType#SSN} as
* {@linkplain UserInfoType} for initiating transaction.
*
* @param ssnUserInfo instance of {@linkplain SsnUserInfo} contains
* personal number and country of user that will be used to identify the
* end user.
* @return request builder
* @throws FrejaEidClientInternalException if error occurs when
* generating JSON content from ssnUserInfo
*/
public SetOptionalParamsBuilder setSsn(SsnUserInfo ssnUserInfo) throws FrejaEidClientInternalException {
return new SetOptionalParamsBuilder(UserInfoType.SSN, UserInfoUtil.convertSsnUserInfo(ssnUserInfo));
}
/**
* Sets phoneNumber as userInfo and {@link UserInfoType#PHONE} as
* {@linkplain UserInfoType} for initiating transaction.
*
* @param phoneNumber user's phone number that will be used to identify
* the end user in format +467123456789.
* @return request builder
*/
public SetOptionalParamsBuilder setPhoneNumber(String phoneNumber) {
return new SetOptionalParamsBuilder(UserInfoType.PHONE, phoneNumber);
}
/**
* Sets {@linkplain UserInfoType#INFERRED} as {@linkplain UserInfoType}
* for initiating transaction.
*
* @return request builder
*/
public SetOptionalParamsBuilder setInferred() {
return new SetOptionalParamsBuilder(UserInfoType.INFERRED, "N/A");
}
/**
* Sets organisation id as userInfo and {@link UserInfoType#ORG_ID} as
* {@linkplain UserInfoType} for initiating transaction.
*
* @param identifier user's identifier that was previously set by
* organisation
* @return request builder
*/
public SetOptionalParamsBuilder setOrganisationId(String identifier) {
return new SetOptionalParamsBuilder(UserInfoType.ORG_ID, identifier);
}
}
public static class SetOptionalParamsBuilder {
private final UserInfoType userInfoType;
private final String userInfo;
private MinRegistrationLevel minRegistrationLevel = MinRegistrationLevel.PLUS;
private String title = null;
private PushNotification pushNotification = null;
private Long expiry = null;
private DataToSignType dataToSignType = DataToSignType.SIMPLE_UTF8_TEXT;
private DataToSign dataToSign;
private SignatureType signatureType = SignatureType.SIMPLE;
private Set attributesToReturn = null;
private String relyingPartyId = null;
private String orgIdIssuer = null;
private UserConfirmationMethod userConfirmationMethod = null;
private SetOptionalParamsBuilder(UserInfoType userInfoType, String userInfo) {
this.userInfoType = userInfoType;
this.userInfo = userInfo;
}
/**
* Minimum registration level is only used with
* {@link TransactionContext#PERSONAL}. It is optional, default value is
* {@link MinRegistrationLevel#PLUS}.
*
* @param minRegistrationLevel will be set as minimum required
* registration level for user in order to approve/decline signing.
* @return request builder
*/
public SetOptionalParamsBuilder setMinRegistrationLevel(MinRegistrationLevel minRegistrationLevel) {
if (minRegistrationLevel == null) {
minRegistrationLevel = MinRegistrationLevel.PLUS;
}
this.minRegistrationLevel = minRegistrationLevel;
return this;
}
/**
* Attributes to return are attributes that are requested from user to
* share.
*
* @param attributesToReturn can be any value from
* {@linkplain AttributeToReturn}
* @return request builder
*/
public SetOptionalParamsBuilder setAttributesToReturn(AttributeToReturn... attributesToReturn) {
this.attributesToReturn = new HashSet();
for (AttributeToReturn attributeToReturn : attributesToReturn) {
this.attributesToReturn.add(
new AttributeToReturnInfo(attributeToReturn.getName()));
}
return this;
}
/**
* Transaction title will be shown to user through Freja eID mobile
* application.
*
* @param title optional parameter, but if set it cannot be empty.
* Maximum length is 128 characters.
* @return request builder
*/
public SetOptionalParamsBuilder setTitle(String title) {
this.title = title;
return this;
}
/**
* Data to sign can be only text (SIMPLE signature type) or text and
* binary data (EXTENDED signature type).
*
* @param dataToSign mandatory parameter. Text cannot be {@code null} or
* empty.
* @return request builder
*/
public SetOptionalParamsBuilder setDataToSign(DataToSign dataToSign) {
if (dataToSign == null) {
return this;
}
if (dataToSign.getBinaryData() == null || dataToSign.getBinaryData().isEmpty()) {
this.dataToSignType = DataToSignType.SIMPLE_UTF8_TEXT;
this.signatureType = SignatureType.SIMPLE;
} else {
this.dataToSignType = DataToSignType.EXTENDED_UTF8_TEXT;
this.signatureType = SignatureType.EXTENDED;
}
this.dataToSign = dataToSign;
return this;
}
/**
* Data to sign can be only text (SIMPLE signature type) or text and
* binary data (EXTENDED signature type).
*
* @param dataToSign mandatory parameter. Text cannot be {@code null} or
* empty.
* @param signatureType can be SIMPLE, EXTENDED or XML_MINAMEDDELANDEN. SIMPLE signature type can only be used with
* SIMPLE_UTF8_TEXT data type, EXTENDED signature type can only be used with
* EXTENDED_UTF8_TEXT data type,
* while the XML_MINAMEDDELANDEN signature type can be used with both.
* @return request builder
*/
public SetOptionalParamsBuilder setDataToSign(DataToSign dataToSign, SignatureType signatureType) {
if (dataToSign == null) {
return this;
}
if (signatureType == null) {
return setDataToSign(dataToSign);
}
if (dataToSign.getBinaryData() == null || dataToSign.getBinaryData().isEmpty()) {
this.dataToSignType = DataToSignType.SIMPLE_UTF8_TEXT;
} else {
this.dataToSignType = DataToSignType.EXTENDED_UTF8_TEXT;
}
this.signatureType = signatureType;
this.dataToSign = dataToSign;
return this;
}
/**
* Expiry describes the time until which the relying party is ready to
* wait for the user to confirm the signature request.
*
* @param timeToExpiry optional parameter, expressed in milliseconds
* since January 1, 1970, 00:00 UTC. Min value is current time +2
* minutes, max value is current time +30 days. If not present, defaults
* to current time +2 minutes.
* @return request builder
*/
public SetOptionalParamsBuilder setExpiry(Long timeToExpiry) {
this.expiry = timeToExpiry;
return this;
}
/**
* Push notification will be send to user when transaction is send.
* Recommended length is 40 characters per title and text.
*
* @param pushNotification optional parameter, but if set title and text
* cannot be {@code null} or empty.
* @return request builder
*/
public SetOptionalParamsBuilder setPushNotification(PushNotification pushNotification) {
this.pushNotification = pushNotification;
return this;
}
/**
* Only relying parties that are integrators should use this
* method.
*
* @param relyingPartyId specifies relying party id for which
* transaction is initiated. It cannot be {@code null} or empty.
* @return request builder
*/
public SetOptionalParamsBuilder setRelyingPartyId(String relyingPartyId) {
this.relyingPartyId = relyingPartyId;
return this;
}
/**
* OrgIdIssuer is used when requesting an Organisation ID set by
* another Relying Party
*
* @param orgIdIssuer specifies the relying party ID of the
* organisation which issued the organisation ID.
* @return request builder
*/
public SetOptionalParamsBuilder setOrgIdIssuer(String orgIdIssuer) {
this.orgIdIssuer = orgIdIssuer;
return this;
}
/**
* UserConfirmationMethod is used to specify steps(actions) that
* user needs to perform when confirming transaction.
*
* @param userConfirmationMethod can be any value from
* {@linkplain UserConfirmationMethod}
* @return request builder
*/
public SetOptionalParamsBuilder setUserConfirmationMethod(UserConfirmationMethod userConfirmationMethod) {
this.userConfirmationMethod = userConfirmationMethod;
return this;
}
public InitiateSignRequest build() {
return new InitiateSignRequest(userInfoType, userInfo, minRegistrationLevel, title, pushNotification,
expiry, dataToSignType, dataToSign, signatureType, attributesToReturn,
relyingPartyId, orgIdIssuer, userConfirmationMethod);
}
}
}