All Downloads are FREE. Search and download functionalities are using the official Maven repository.

br.com.uol.pagseguro.api.common.domain.converter.SenderJsonConverter Maven / Gradle / Ivy

package br.com.uol.pagseguro.api.common.domain.converter;

import br.com.uol.pagseguro.api.common.domain.Sender;
import br.com.uol.pagseguro.api.utils.AbstractJsonConverter;
import br.com.uol.pagseguro.api.utils.RequestJson;

/**
 * Converter for sender.
 * Used to convert attributes of pre approval in request json.
 *
 * @author PagSeguro Internet Ltda.
 */
public class SenderJsonConverter extends AbstractJsonConverter {
    private static final SenderPhoneJsonConverter SENDER_PHONE_JC = new SenderPhoneJsonConverter();
    private static final SenderAddressJsonConverter SENDER_ADDRESS_JC = new SenderAddressJsonConverter();
    private static final SenderDocumentJsonConverter SENDER_DOCUMENT_JC = new SenderDocumentJsonConverter();
    /**
     * Convert attributes of direct pre approval in request json
     *
     * @param requestJson  Request Json used to pass params to api
     * @param sender The interface of pre approval
     * @see RequestJson
     * @see Sender
     * @see AbstractJsonConverter#convert(Object)
     */
    @Override
    protected void convert(RequestJson requestJson, Sender sender) {
        requestJson.putString("name", sender.getName());
        requestJson.putString("email", sender.getEmail());
        requestJson.putString("ip", sender.getIp());
        requestJson.putString("hash", sender.getHash());
        requestJson.putJson(SENDER_PHONE_JC.convert(sender.getPhone()), "phone");
        requestJson.putJson(SENDER_ADDRESS_JC.convert(sender.getAddress()), "address");
        requestJson.putJsonArray(SENDER_DOCUMENT_JC.convert(sender.getDocuments()), "documents");
    }

    /**
     * Implementation of {@code AbstractPhoneJsonConverter}. Used to set key values
     *
     * @see AbstractPhoneJsonConverter
     */
    private static class SenderPhoneJsonConverter extends AbstractPhoneJsonConverter {

        @Override
        protected String getAreaCodeKey() {
            return "areaCode";
        }

        @Override
        protected String getPhoneNumberKey() {
            return "number";
        }

    }

    /**
     * Implementation of {@code AbstractAddressJsonConverter}. Used to set key values
     *
     * @see AbstractAddressJsonConverter
     */
    private static class SenderAddressJsonConverter extends AbstractAddressJsonConverter {
        @Override
        protected String getStreetKey() {
            return "street";
        }

        @Override
        protected String getNumberKey() {
            return "number";
        }

        @Override
        protected String getComplementKey() {
            return "complement";
        }

        @Override
        protected String getDistrictKey() {
            return "district";
        }

        @Override
        protected String getPostalCodeKey() {
            return "postalCode";
        }

        @Override
        protected String getCityKey() {
            return "city";
        }

        @Override
        protected String getStateKey() {
            return "state";
        }

        @Override
        protected String getCountryKey() {
            return "country";
        }
    }

    /**
     * Implementation of {@code AbstractDocumentJsonConverter}. Used to set key values
     *
     * @see AbstractDocumentJsonConverter
     */
    private static class SenderDocumentJsonConverter extends AbstractDocumentJsonConverter {

        @Override
        protected String getTypeKey() {
            return "type";
        }

        @Override
        protected String getValueKey() {
            return "value";
        }

    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy