/** * ============================================================================= * * ORCID (R) Open Source * http://orcid.org * * Copyright (c) 2012-2014 ORCID, Inc. * Licensed under an MIT-Style License (MIT) * http://orcid.org/open-source-license * * This copyright and license information (including a link to the full license) * shall be included in its entirety in all copies or substantial portion of * the software. * * ============================================================================= */ package org.orcid.core.utils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.orcid.utils.NullUtils; /** * * @author Will Simpson * */ public class VerifyRegistrationToken { private static final String EMAIL_PARAM_KEY = "email"; private static final String FAMILY_NAME_PARAM_KEY = "fName"; private static final String GIVEN_NAMES_PARAM_KEY = "gNames"; private static final String VOCATIVE_NAME_PARAM_KEY = "vName"; private static final String SPONSOR_NAME_PARAM_KEY = "sponsor"; private static final String SPONSOR_ID_PARAM_KEY = "identifier"; private static final String INSTITUTION_NAME_PARAM_KEY = "institution"; private static final String EQUALS = "="; private static final String SEPARATOR = "&"; private String email; private String familyName; private String givenNames; private String vocativeName; private String sponsorName; private String sponsorId; private String institutionName; public VerifyRegistrationToken() { } public VerifyRegistrationToken(String paramsString) { String[] pairs = StringUtils.split(paramsString, SEPARATOR); Map<String, String> params = new HashMap<String, String>(); for (String pair : pairs) { String[] keyValue = StringUtils.split(pair, EQUALS); if (keyValue.length == 2) { params.put(keyValue[0], keyValue[1]); } } email = params.get(EMAIL_PARAM_KEY); familyName = params.get(FAMILY_NAME_PARAM_KEY); givenNames = params.get(GIVEN_NAMES_PARAM_KEY); vocativeName = params.get(VOCATIVE_NAME_PARAM_KEY); sponsorName = params.get(SPONSOR_NAME_PARAM_KEY); sponsorId = params.get(SPONSOR_ID_PARAM_KEY); institutionName = params.get(INSTITUTION_NAME_PARAM_KEY); } public String getEmail() { return email; } public String getFamilyName() { return familyName; } public String getGivenNames() { return givenNames; } public String getVocativeName() { return vocativeName; } public void setVocativeName(String vocativeName) { this.vocativeName = vocativeName; } public String getSponsorName() { return sponsorName; } public String getSponsorId() { return sponsorId; } public String getInstitutionName() { return institutionName; } /** * * @return The params encoded as a single string, as if in a URL query. The * string is not url encoded because will be encrypted by a manager * first. * email=?&gNames=?&fName=?&sponsor=?&identifier=?&institution=? */ public String toParamsString() { List<Pair<String, String>> pairs = new ArrayList<Pair<String, String>>(); pairs.add(new ImmutablePair<String, String>(EMAIL_PARAM_KEY, email)); pairs.add(new ImmutablePair<String, String>(GIVEN_NAMES_PARAM_KEY, givenNames)); pairs.add(new ImmutablePair<String, String>(FAMILY_NAME_PARAM_KEY, familyName)); pairs.add(new ImmutablePair<String, String>(VOCATIVE_NAME_PARAM_KEY, vocativeName)); pairs.add(new ImmutablePair<String, String>(SPONSOR_NAME_PARAM_KEY, sponsorName)); pairs.add(new ImmutablePair<String, String>(SPONSOR_ID_PARAM_KEY, sponsorId)); pairs.add(new ImmutablePair<String, String>(INSTITUTION_NAME_PARAM_KEY, institutionName)); List<String> items = new ArrayList<String>(pairs.size()); for (Pair<String, String> pair : pairs) { items.add(pair.getLeft() + EQUALS + NullUtils.blankIfNull(pair.getRight())); } return StringUtils.join(items, SEPARATOR); } @Override public String toString() { return toParamsString(); } }