/*
* Copyright (C) 2010 Pete Reisinger <p.reisinger@gmail.com>.
*
* This program is free software: you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program. If
* not, see <http://www.gnu.org/licenses/>.
*/
package paypalnvp.profile;
import java.util.HashMap;
import java.util.Map;
/**
* Represents paypal user - his/her password, user name etc. BaseProfile builder for instatiating
* this class. Example: BaseProfile usr = new BaseProfile.Builder(userName,
* pass).signature(sign).build();
*
* @author Pete Reisinger
* <p.reisinger@gmail.com>
*/
@SuppressWarnings("serial")
public final class BaseProfile implements Profile {
/**
* user name obtained from paypal
*/
private final String userName;
/**
* password obtained from paypal
*/
private final String password;
/**
* If you use an API certificate, do not include this parameter
*/
private final String signature;
/**
* Email address of a PayPal account that has granted you permission to make this call. Set this
* parameter only if you are calling an API on a different user’s behalf
*/
private final String subject;
/**
* Private constructor invoked by builder static class
*
* @param builder
*/
private BaseProfile(Builder builder) {
userName = builder.userName;
password = builder.password;
signature = builder.signature;
subject = builder.subject;
}
public Map<String, String> getNVPMap() {
/* create and return map */
Map<String, String> nvpMap = new HashMap<String, String>();
nvpMap.put("USER", userName);
nvpMap.put("PWD", password);
if (signature != null) {
nvpMap.put("SIGNATURE", signature);
}
if (subject != null) {
nvpMap.put("SUBJECT", subject);
}
return nvpMap;
}
@Override
public String toString() {
return "instance of User class with values: userName - " + userName + ", password: " + password
+ ", signature: " + signature + ", subject: " + subject;
}
/**
* Builder class that constructs instance of BaseProfile class.
* <p/>
* Example: BaseProfile usr = new BaseProfile.Builder(userName, pass).signature(sign).build();
*/
public static class Builder {
/* required parameters */
private final String userName;
private final String password;
/* optional paramters */
private String signature = null;
private String subject = null;
/**
* Required parameters
*
* @param userName user name obtained from paypal
* @param password password obtained from paypal
*/
public Builder(String userName, String password) {
this.userName = userName;
this.password = password;
}
/**
* Optional parameter If you use an API certificate, do not include this parameter
*
* @param val signature
* @return
*/
public Builder signature(String val) {
signature = val;
return this;
}
/**
* Optional parameter Email address of a PayPal account that has granted you permission to make
* this call. Set this parameter only if you are calling an API on a different user’s behalf
*
* @param val subject
* @return
*/
public Builder subject(String val) {
subject = val;
return this;
}
/**
* Returns instance of BaseProfile class
*
* @return
*/
public BaseProfile build() {
return new BaseProfile(this);
}
}
}