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");
}
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() {
StringBuilder s = new StringBuilder(String.valueOf(incomeData.getPhoneNumber()));
while(s.length() < 10)
s.insert(0,"0");
return String.format("+%s(%s)%s-%s-%s",incomeData.getCountryPhoneCode(),s.substring(0,3),
s.substring(3,6),s.substring(6,8),s.substring(8));
}
@Override
public String getCompanyName() {
return this.incomeData.getCompany();
}
@Override
public String getCountryName() {
return countries.get(incomeData.getCountryCode());
}
}
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
}
}
Leave A Comment