use of eu.europa.ec.fisheries.ers.fa.dao.proxy.FaCatchSummaryCustomProxy in project UVMS-ActivityModule-APP by UnionVMS.
the class FaCatchSummaryCustomProxyTest method testEqualsAndHashCode2.
@Test
public void testEqualsAndHashCode2() {
FaCatchSummaryCustomProxy proxy1 = new FaCatchSummaryCustomProxy();
proxy1.setEffortZone("eff");
proxy1.setFaoArea("fao");
proxy1.setCount(2);
proxy1.setFishClass("cl");
FaCatchSummaryCustomProxy proxy2 = new FaCatchSummaryCustomProxy();
proxy2.setEffortZone("eff");
proxy2.setFaoArea("fao");
proxy2.setCount(3);
proxy2.setFishClass("class");
assertTrue(proxy2.equals(proxy1));
}
use of eu.europa.ec.fisheries.ers.fa.dao.proxy.FaCatchSummaryCustomProxy in project UVMS-ActivityModule-APP by UnionVMS.
the class FaCatchDao method getRecordsForFishClassOrFACatchType.
/**
* Get list of records from FACatch table grouped by certain aggregation criterias. Also, Activity Filtering will be applied before getting data
* @param query
* @return List<FaCatchSummaryCustomEntity> custom object represnting aggregation factors and its count
* @throws ServiceException
*/
private List<FaCatchSummaryCustomProxy> getRecordsForFishClassOrFACatchType(FishingActivityQuery query, boolean isLanding) throws ServiceException {
// create Query to get grouped data from FACatch table, also combine query to filter records as per filters provided by users
FACatchSearchBuilder faCatchSearchBuilder = createBuilderForFACatch(isLanding);
StringBuilder sql = faCatchSearchBuilder.createSQL(query);
TypedQuery<Object[]> typedQuery = em.createQuery(sql.toString(), Object[].class);
typedQuery = (TypedQuery<Object[]>) faCatchSearchBuilder.fillInValuesForTypedQuery(query, typedQuery);
List<Object[]> list = typedQuery.getResultList();
log.debug("size of records received from DB :" + list.size());
// Map Raw data received from database to custom entity which will help identifing correct groups
List<FaCatchSummaryCustomProxy> customEntities = new ArrayList<>();
FACatchSummaryHelper faCatchSummaryHelper = isLanding ? FACatchSummaryHelperFactory.getFACatchSummaryHelper(FACatchSummaryHelperFactory.PRESENTATION) : FACatchSummaryHelperFactory.getFACatchSummaryHelper(FACatchSummaryHelperFactory.STANDARD);
List<GroupCriteria> groupCriterias = query.getGroupByFields();
for (Object[] objArr : list) {
try {
FaCatchSummaryCustomProxy entity = faCatchSummaryHelper.mapObjectArrayToFaCatchSummaryCustomEntity(objArr, groupCriterias, isLanding);
if (entity != null) {
customEntities.add(entity);
}
} catch (Exception e) {
log.error("Could not map sql selection to FaCatchSummaryCustomProxy object", e);
}
}
return customEntities;
}
use of eu.europa.ec.fisheries.ers.fa.dao.proxy.FaCatchSummaryCustomProxy in project UVMS-ActivityModule-APP by UnionVMS.
the class FACatchSummaryHelper method groupByFACatchCustomEntities.
/**
* This method creates groups for various aggregation criterias and combine records for the group
*
* @param customEntities
* @return Map<FaCatchSummaryCustomEntity,List<FaCatchSummaryCustomEntity>> key => group value => list of records with that group
*/
public Map<FaCatchSummaryCustomProxy, List<FaCatchSummaryCustomProxy>> groupByFACatchCustomEntities(List<FaCatchSummaryCustomProxy> customEntities) {
Map<FaCatchSummaryCustomProxy, List<FaCatchSummaryCustomProxy>> groupedMap = new HashMap<>();
for (FaCatchSummaryCustomProxy summaryObj : customEntities) {
List<FaCatchSummaryCustomProxy> tempList = groupedMap.get(summaryObj);
if (Collections.isEmpty(tempList)) {
tempList = new ArrayList<>();
tempList.add(summaryObj);
groupedMap.put(summaryObj, tempList);
} else {
tempList.add(summaryObj);
}
}
return groupedMap;
}
use of eu.europa.ec.fisheries.ers.fa.dao.proxy.FaCatchSummaryCustomProxy in project UVMS-ActivityModule-APP by UnionVMS.
the class FaCatchReportServiceBean method getCatchSummaryReport.
/**
* This method groups FACatch Data, performs business logic to create summary report
* and creates FacatchSummaryDTO object as expected by web interface.
* isReporting : TRUE indicates that the method should be used to generate result for REPORTING module
* FALSE indicates that the method should be used to generate result from TRIP SUMMARY VIEW
* @param query
* @return
* @throws ServiceException
*/
@Override
public FACatchSummaryDTO getCatchSummaryReport(FishingActivityQuery query, boolean isLanding) throws ServiceException {
// get grouped data
Map<FaCatchSummaryCustomProxy, List<FaCatchSummaryCustomProxy>> groupedData = faCatchDao.getGroupedFaCatchData(query, isLanding);
// post process data to create Summary table part of Catch summary Report
FACatchSummaryHelper faCatchSummaryHelper = isLanding ? FACatchSummaryHelperFactory.getFACatchSummaryHelper(FACatchSummaryHelperFactory.PRESENTATION) : FACatchSummaryHelperFactory.getFACatchSummaryHelper(FACatchSummaryHelperFactory.STANDARD);
List<FACatchSummaryRecordDTO> catchSummaryList = faCatchSummaryHelper.buildFACatchSummaryRecordDTOList(groupedData);
// Post process data to calculate Totals for each column
SummaryTableDTO summaryTableDTOTotal = faCatchSummaryHelper.populateSummaryTableWithTotal(catchSummaryList);
// Create DTO object to send back to the web
FACatchSummaryDTO faCatchSummaryDTO = new FACatchSummaryDTO();
faCatchSummaryDTO.setRecordDTOs(catchSummaryList);
faCatchSummaryDTO.setTotal(summaryTableDTOTotal);
return faCatchSummaryDTO;
}
use of eu.europa.ec.fisheries.ers.fa.dao.proxy.FaCatchSummaryCustomProxy in project UVMS-ActivityModule-APP by UnionVMS.
the class FaCatchDao method getGroupedFaCatchData.
/**
* This method gets data from database and groups data as per various aggregation factors.
* If isLanding flag is true, then we need to gather information for Landing table as well.
* @param query
* @return Map<FaCatchSummaryCustomEntity,List<FaCatchSummaryCustomEntity>> key = object represnting common group, value is list of different objects which belong to that group
* @throws ServiceException
*/
public Map<FaCatchSummaryCustomProxy, List<FaCatchSummaryCustomProxy>> getGroupedFaCatchData(FishingActivityQuery query, boolean isLanding) throws ServiceException {
List<GroupCriteria> groupByFieldList = query.getGroupByFields();
if (groupByFieldList == null || Collections.isEmpty(groupByFieldList))
throw new ServiceException(" No Group information present to aggregate report.");
FACatchSummaryHelper faCatchSummaryHelper = isLanding ? FACatchSummaryHelperFactory.getFACatchSummaryHelper(FACatchSummaryHelperFactory.PRESENTATION) : FACatchSummaryHelperFactory.getFACatchSummaryHelper(FACatchSummaryHelperFactory.STANDARD);
// By default FishSize(LSC/BMS etc) and FACatch(DIS/DIM etc) type should be present in the summary table. First Query db with group FishClass
faCatchSummaryHelper.enrichGroupCriteriaWithFishSizeAndSpecies(groupByFieldList);
// get data with FishClass grouping factor
List<FaCatchSummaryCustomProxy> customEntities = getRecordsForFishClassOrFACatchType(query, isLanding);
faCatchSummaryHelper.enrichGroupCriteriaWithFACatchType(query.getGroupByFields());
// Query database again to get records for FACatchType and combine it with previous result
customEntities.addAll(getRecordsForFishClassOrFACatchType(query, isLanding));
return faCatchSummaryHelper.groupByFACatchCustomEntities(customEntities);
}
Aggregations