Хеш-карты для связи нескольких доменов в одном отчете - Java Eclipse - PullRequest
0 голосов
/ 14 марта 2019

Я новичок в Java и использую Java Eclipse, поэтому будьте добры! Надеюсь, я правильно задам этот вопрос, чтобы он имел смысл.

У меня есть четыре домена - каждый домен получает данные с четырех разных серверов, поэтому их необходимо разделять. Но теперь мне нужно создать отчет, который связывает все данные из четырех доменов в один отчет. Кто-то предложил использовать хеш-карты, которые я раньше не использовал. Каждый из четырех моих доменов имеет два поля, которые можно использовать в качестве ключа - CostCenter и Serial. Данные извлекаются с машин по всей стране. Мне нужны все данные для каждой машины в одном отчете.

Все это добавляется в существующий проект, который создает веб-страницу с вкладками, по которым пользователь может щелкать по различным таблицам и получать данные, относящиеся к определенному местоположению, или создавать отчет для каждой страницы для всех машин / местоположений. Мне просто нужно добавить новую ссылку, чтобы пользователь мог щелкнуть по ней, чтобы создать для них эту электронную таблицу.

Я уже создал домены (DAO, DAOImpl, DTO и т. Д.), А затем я собирался создать комбинированный отчет в моем файле MainService.java. Вот домены (списки), как объявлено в моем MainService:

public List<Volume> getVolumeReport();

public List<BadFmPumps> getBadFmPumpsReport();

public List<BadCorobPumps> getBadCorobPumpsReport();

public List<McService> getMcServiceReport();

А вот данные, извлекаемые из баз данных для каждого из них (доменов):

public class Volume {

private String costCenter;
private String DAD;
private String division;
private String model; 
private String serial;
private String numDispensers;
private String colorantSys;
private String CCEGals2017;
private String BACGals2017;
private String CCEGals2018;
private String BACGals2018;
private String DNR2017;
private String DNR2018;
private String DNR2019; 

public class BadFmPumps {

private String costCenter; 
private String model; 
private String serial; 
private String badFmPumps;  
private String over10;
private String under10;

public class BadCorobPumps {

private String costCenter; 
private String model; 
private String serial; 
private String badPumpCount;  

public class McService {

private String costCenter; 
private String model; 
private String serial; 
private String crChargeTotals; 
private String emgCalls; 

Поэтому мне нужно объединить эти данные в одном отчете, где совпадает CostCenter + Serial. Как объявить хеш-карты для каждого объекта и как объявить ключ?

РЕДАКТИРОВАТЬ ----

Я думаю, что у меня есть что-то близкое с

public List<Volume> getVolumeReport();

Map<String, Volume> VolumeMap = new HashMap<String, Volume>();

for (Volume dispenser : VolumeList)

{

String volumeKey = new StringBuilder().append(Volume.getCostCenter()).append(Volume.getSerial()).toString();

VolumeMap.put(volumeKey, dispenser);

}

Это правильно? Я получаю одну синтаксическую ошибку - объявление карты

Map<String, Volume> VolumeMap = new HashMap<String, Volume>(); 

дает мне ошибку

Syntax error on token ";", { expected after this token

Что-то мне нужно там изменить?

1 Ответ

1 голос
/ 19 марта 2019

В вашем коде есть несколько необычных вещей.Я предполагаю, что вы пришли из C #, вы не используете правильные соглашения об именах, смотрите здесь: https://www.oracle.com/technetwork/java/codeconventions-135099.html

Вы определили свой метод неправильно, ошибка не в карте, а в определении метода

public List<Volume> getVolumeReport(); <-------- this

Должно быть

public List<Volume> getVolumeReport() {

И затем закройте ваш метод в конце (используя }).

И внутри вашего FOR вы пытаетесь получить прямой доступ к Volume методов, когда вы должны использовать созданную вами переменную: dispenser

String volumeKey = new StringBuilder()
                           .append(Volume.getCostCenter())
                           .append(Volume.getSerial())
                           .toString();

Должно быть

String volumeKey = new StringBuilder()
                           .append(dispenser.getCostCenter())
                           .append(dispenser.getSerial())
                           .toString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...