Исправил косяк с номером из 7 цифр, но валик не проходит....
package com.javarush.task.task19.task1903;
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 void main(String[] args) {
DataFile dataFile = new DataFile();
int a = dataFile.getPhoneNumber();
dataFile.getCountryPhoneCode();
//Client client = new IncomeDataAdapter(dataFile);
Contact contact = new IncomeDataAdapter(dataFile);
String b = contact.getPhoneNumber();
System.out.println(b);
}
/* public static class Client extends IncomeDataAdapter {
public Client(IncomeData incomeData) {
super(incomeData);
}
@Override
public String getPhoneNumber() {
return super.getPhoneNumber();
}
}*/
public static class DataFile implements IncomeData{
// public DataFile() {
//
// }
@Override
public String getCountryCode() {
return null;
}
@Override
public String getCompany() {
return null;
}
@Override
public String getContactFirstName() {
return null;
}
@Override
public String getContactLastName() {
return null;
}
@Override
public int getCountryPhoneCode() {
return 45;
}
@Override
public int getPhoneNumber() {
return 1112233;
}
}
public static class IncomeDataAdapter implements Customer, Contact{
private IncomeData data;
public IncomeDataAdapter(IncomeData incomeData) {
this.data = incomeData;
}
@Override
public String getCompanyName() {
return data.getCompany();
}
@Override
public String getCountryName() {
String country = null;
for (Map.Entry<String, String> pair: countries.entrySet()) {
if (data.getCountryCode().equals(pair.getKey())) {
country = pair.getValue();
}
}
return country;
}
@Override
public String getName() {
return String.format("%1s, %2s", data.getContactLastName(), data.getContactFirstName());
}
@Override
public String getPhoneNumber() {
String number = String.valueOf(data.getPhoneNumber());
if (number.length() < 8) {
number = 0 + number;
}
int numberPart4 = Integer.parseInt(number.substring(number.length()-2));
int numberPart3 = Integer.parseInt(number.substring(number.length()-4, number.length()-2));
int numberPart2 = Integer.parseInt(number.substring(number.length()-7, number.length()-4));
int numberPart1 = Integer.parseInt(number.substring(0, number.length()-7));
return String.format("+%1d(%2$03d)%3$d-%4$d-%5$d", data.getCountryPhoneCode(), numberPart1, numberPart2, numberPart3, numberPart4);
}
}
public interface IncomeData {
String getCountryCode(); //For example: UA
String getCompany(); //For example: JavaRush Ltd.
String getContactFirstName(); //For example: Ivan
String getContactLastName(); //For example: Ivanov
int getCountryPhoneCode(); //For example: 38
int getPhoneNumber(); //For example1: 501234567, For example2: 71112233
}
public interface Customer {
String getCompanyName(); //For example: JavaRush Ltd.
String getCountryName(); //For example: Ukraine
}
public interface Contact {
String getName(); //For example: Ivanov, Ivan
String getPhoneNumber(); //For example1: +38(050)123-45-67, For example2: +38(007)111-22-33
}
}