Как связать два объекта разных классов? - PullRequest
1 голос
/ 20 июня 2019

Я хочу создать REST API для библиотеки (конечные точки - это клиенты и счета). Одной из функций является добавление счета-фактуры (запрос PUT с идентификатором клиента). Во-первых, я должен проверить, существует ли переданный идентификатор клиента (через PUT в URL), это означает, что нужно проверить customerMap и посмотреть обсуждаемый идентификатор. Проблема заключается в том, что customerMap является HashMap в классе clientService (а не в классе invoiceService) (вместо базы данных используется карта). Как я могу добраться до данных, хранящихся на карте? Настоящую соответствующую часть кода:

клиент

public class client {

private static final AtomicLong counter = new AtomicLong();

private final long id;

public client() {
    this.id = counter.getAndIncrement();
}

public long getId() {
    return id;
}
}

clientService

public class clientService {
public Map<Long, client> clientMap = new HashMap<>();

public client put(client g) {
    clientMap.put(g.getId(), g);
    return g;
}

public Collection<client> getAll() {
    return clientMap.values();
}
}

счет-фактура

invoice  {

private static final AtomicLong counter = new AtomicLong();

private final long id;
private client client;

public invoice() {
    this.id = counter.getAndIncrement();
}

public long getId() {
    return id;
}
}

invoiceService

public class invoiceService {
private Map<Long, invoice> invoiceMap = new HashMap<>();

public Rechnung createinvoice(invoice g, long id) {

    if(<!--client exists-->)
    invoicegMap.put(g.getId(), g);
    return g;
}}

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Сначала добавьте метод в ваш ClientService для поиска клиента по идентификатору:

public Client getClientById(Long clientId) {
   return clientMap.get(clientId);
}

Затем добавьте ваш ClientService в службу счетов-фактур;

public class invoiceService {
private Map<Long, invoice> invoiceMap = new HashMap<>();
private ClientService clientService; // provide a getter or a constructor argument for the service

public Rechnung createinvoice(invoice g, long id) {

    if(clientService.getClientById(id) != null) {
      invoicegMap.put(g.getId(), g);
}
    return g;
}}
0 голосов
/ 20 июня 2019

почему бы не сделать статическую карту клиента и получить к ней доступ непосредственно из класса обслуживания клиента?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...