У меня проблема с дизайном. У меня есть эти 3 Java классы, перечисленные обратно для объекта Company:
public class Company {
int id;
String label;
String siren;
List<Contact> contactList;
}
public class Contact {
int id;
String name;
String lastName;
List<Addresse> addresseList;
}
public class Addresse {
int id;
String street;
String city;
String country;
int codePostal;
}
Я хочу отобразить следующую таблицу на лицевой стороне:
| Label | SIREN | Contact Name | Contact lastName | Street | Postal Code | City | Country |
-------------------------------------------------------------------------------------------------------
| | | Contact1 | xxxxxx | rue1 | 75111 | Paris | France |
| BNP | 21451 | Contact2 | yyyyyy | rue2 | 92222 | Nante | France |
| | | Contact2 | yyyyyy | rue3 | 93222 | Lyon | France |
-------------------------------------------------------------------------------------------------------
Итак, как вы можете см для BNP, у него есть список из 2 контактов. и для contact1 у меня есть список адресов, который содержит только один адрес, а для contact2 у меня есть список адресов, который содержит два адреса
Так что это мое решение, которое я принял на лицевой стороне (Angular), но оно не очень чистый:
export class Company{
id: number;
label: string;
siren: string;
contactList: Contact[];
addresseList: Addresse[]; // I added the address list in the company object
}
и в коде, когда я получаю список компаний, я каждый раз выполняю следующую процедуру, которая не является чистой и эффективной (поскольку содержит несколько циклов):
this.companylist.forEach(societe => {
let addresseListTmp: Adresse[] = [];
societe.contactList.forEach(contact => {
contact.addresseList.forEach(addresse => { // to fill in the contact data in addressTmp
addresse['name'] = contact.name;
addresse['lastName'] = contact.lastName;
addresseListTmp.push(addresse);
}
}
societe.addresseList = addresseListTmp;
}
это мое решение, которое позволяет мне хорошо отображать таблицу, поэтому я хотел найти другое решение, потому что оно не очень эффективно. заранее спасибо