Адаптер для двух интерфейсов

package com.javarush.test.level19.lesson03.task03;

/* Адаптация нескольких интерфейсов
Адаптировать IncomeData к Customer и Contact.
Классом-адаптером является IncomeDataAdapter.
Инициализируйте countries перед началом выполнения программы. Соответствие кода страны и названия:
UA Ukraine
RU Russia
CA Canada
Дополнить телефонный номер нулями до 10 цифр при необходимости
*/

import java.util.HashMap;
import java.util.Map;

public class Solution {
    public static Map<String,String> countries = new HashMap<String,String>();

    static {
        countries.put("UA", "Ukraine");
        countries.put("RU", "Russia");
        countries.put("CA", "Canada");
        countries.put("US", "United States");
    }

    public static class IncomeDataAdapter implements Customer, Contact{
        private IncomeData incomeData;

        public IncomeDataAdapter(IncomeData incomeData)
        {
            this.incomeData = incomeData;
        }

        @Override
        public String getName()
        {
            return this.incomeData.getContactLastName() + ", " + this.incomeData.getContactFirstName();
        }

        @Override
        public String getPhoneNumber()
        {
            String clearPhoneNumber = Integer.valueOf(this.incomeData.getPhoneNumber()).toString();
            if (clearPhoneNumber.length() < 10) {
                while (clearPhoneNumber.length() < 10) clearPhoneNumber = "0" + clearPhoneNumber;
            }
            String newPhoneName = "+"
                    + this.incomeData.getCountryPhoneCode() + "(" + clearPhoneNumber.substring(0, 3)
                    + ")" + clearPhoneNumber.substring(3, 6) + "-" + clearPhoneNumber.substring(6,8)
                    + "-" + clearPhoneNumber.substring(8);
            return newPhoneName;
        }

        @Override
        public String getCompanyName()
        {
            return this.incomeData.getCompany();
        }

        @Override
        public String getCountryName()
        {
            String countryName = "";
            for (Map.Entry<String, String> pair : countries.entrySet()){
                if (pair.getKey().equals(this.incomeData.getCountryCode())) countryName = pair.getValue();
            }
            return countryName;
        }
    }

    public static interface IncomeData {
        String getCountryCode();        //example UA

        String getCompany();            //example JavaRush Ltd.

        String getContactFirstName();   //example Ivan

        String getContactLastName();    //example Ivanov

        int getCountryPhoneCode();      //example 38

        int getPhoneNumber();           //example 501234567

    }

    public static interface Customer {
        String getCompanyName();        //example JavaRush Ltd.

        String getCountryName();        //example Ukraine

    }

    public static interface Contact {
        String getName();               //example Ivanov, Ivan

        String getPhoneNumber();        //example +38(050)123-45-67

    }

    //Тестовый main

    public static void main(String[] args)
    {
        class iData implements IncomeData {

            @Override
            public String getCountryCode()
            {
                return "US";
            }

            @Override
            public String getCompany()
            {
                return "Planet Express";
            }

            @Override
            public String getContactFirstName()
            {
                return "Bender";
            }

            @Override
            public String getContactLastName()
            {
                return "Rodriguez";
            }

            @Override
            public int getCountryPhoneCode()
            {
                return 1;
            }

            @Override
            public int getPhoneNumber()
            {
                return 666666;
            }
        }
        IncomeDataAdapter adapter = new IncomeDataAdapter(new iData());
        System.out.println(adapter.getCompanyName());
        System.out.println(adapter.getCountryName());
        System.out.println(adapter.getPhoneNumber());
        System.out.println(adapter.getName());
    }
}

Комментарии для сайта Cackle