Example usage for org.hibernate.criterion Restrictions and

List of usage examples for org.hibernate.criterion Restrictions and

Introduction

In this page you can find the example usage for org.hibernate.criterion Restrictions and.

Prototype

public static LogicalExpression and(Criterion lhs, Criterion rhs) 

Source Link

Document

Return the conjuction of two expressions

Usage

From source file:fsl.ta.toms.roms.dao.impl.ReportDAOImpl.java

@Override
public RoadOperationSummaryBO operationSummaryReport(OperationSummaryReportCriteriaBO reportCriteria,
        String userName, String userRegion, ReportDisplayInformationDAOImpl reportDisplayInformation) {
    Criteria criteriaRoadOp = this.hibernateTemplate.getSessionFactory().getCurrentSession()
            .createCriteria(RoadOperationDO.class, "ro");

    criteriaRoadOp.createAlias("ro.category", "cat");

    Criterion subCriteron = null;/*from   w  w w. java 2  s  .  c om*/

    Criterion mainCriteron = null;

    if (reportCriteria.getOperationStartDate() != null && reportCriteria.getOperationEndDate() != null) {
        mainCriteron = Restrictions.or(
                Restrictions.between("ro.scheduledStartDtime",
                        DateUtils.searchDateFormater(reportCriteria.getOperationStartDate(),
                                DateUtils.SEARCHDATETYPE.START),
                        DateUtils.searchDateFormater(reportCriteria.getOperationEndDate(),
                                DateUtils.SEARCHDATETYPE.END)),
                Restrictions.between("ro.scheduledEndDtime",
                        DateUtils.searchDateFormater(reportCriteria.getOperationStartDate(),
                                DateUtils.SEARCHDATETYPE.START),
                        DateUtils.searchDateFormater(reportCriteria.getOperationEndDate(),
                                DateUtils.SEARCHDATETYPE.END)));
    }

    if (reportCriteria.getTAOfficeRegions() != null && reportCriteria.getTAOfficeRegions().size() > 0) {

        subCriteron = Restrictions.in("ro.officeLocCode", reportCriteria.getTAOfficeRegions());

    }

    if (reportCriteria.getTeamLeadStaffIds() != null && reportCriteria.getTeamLeadStaffIds().size() > 0)

    {

        /* Get List of all road operations with staff as team lead. */
        Criteria teamLeadsByStaffIdCrit = this.getSession().createCriteria(TeamDO.class, "team");
        teamLeadsByStaffIdCrit
                .add(Restrictions.in("team.teamLead.staffId", reportCriteria.getTeamLeadStaffIds()));
        teamLeadsByStaffIdCrit.setProjection(Projections.property("team.roadOperation.roadOperationId"));

        List<Integer> teamLeadsByStaffId = teamLeadsByStaffIdCrit.list();

        if (teamLeadsByStaffId != null && teamLeadsByStaffId.size() > 0) {
            if (subCriteron == null) {
                subCriteron = Restrictions.in("ro.roadOperationId", teamLeadsByStaffId);
            } else {
                subCriteron = Restrictions.and(subCriteron,
                        Restrictions.in("ro.roadOperationId", teamLeadsByStaffId));
            }
        }
    }

    if (reportCriteria.getTeamLeadTRNs() != null && reportCriteria.getTeamLeadTRNs().size() > 0) {
        /* Get List of all road operations with staff as team lead. */
        Criteria teamLeadsByTRNCrit = this.getSession().createCriteria(TeamDO.class, "team");
        teamLeadsByTRNCrit.createAlias("team.teamLead", "teamLead");
        teamLeadsByTRNCrit.createAlias("teamLead.person", "person");
        teamLeadsByTRNCrit.add(Restrictions.in("person.trnNbr", reportCriteria.getTeamLeadTRNs()));
        teamLeadsByTRNCrit.setProjection(Projections.property("team.roadOperation.roadOperationId"));

        List<Integer> teamLeadsByTRN = teamLeadsByTRNCrit.list();

        if (teamLeadsByTRN != null && teamLeadsByTRN.size() > 0) {
            if (subCriteron == null) {
                subCriteron = Restrictions.in("ro.roadOperationId", teamLeadsByTRNCrit.list());
            } else {
                subCriteron = Restrictions.and(subCriteron,
                        Restrictions.in("ro.roadOperationId", teamLeadsByTRNCrit.list()));
            }
        }
    }

    if (reportCriteria.getOperationCategory() != null && !reportCriteria.getOperationCategory().isEmpty()) {
        if (subCriteron == null) {
            subCriteron = Restrictions
                    .eq("ro.category.categoryId", reportCriteria.getOperationCategory().trim()).ignoreCase();
        } else {
            subCriteron = Restrictions.and(subCriteron, Restrictions
                    .eq("ro.category.categoryId", reportCriteria.getOperationCategory().trim()).ignoreCase());
        }
    }

    if (StringUtil.isSet(reportCriteria.getRoadOperationName())) {
        if (subCriteron == null) {
            subCriteron = Restrictions
                    .like("ro.operationName", reportCriteria.getRoadOperationName().trim(), MatchMode.ANYWHERE)
                    .ignoreCase();
        } else {
            subCriteron = Restrictions.and(subCriteron, Restrictions
                    .like("ro.operationName", reportCriteria.getRoadOperationName().trim(), MatchMode.ANYWHERE)
                    .ignoreCase());
        }
    }

    if (reportCriteria.getRoadOperationId() != null && reportCriteria.getRoadOperationId() > 0) {
        if (subCriteron == null) {
            subCriteron = Restrictions.eq("ro.roadOperationId", reportCriteria.getRoadOperationId());
        } else {
            subCriteron = Restrictions.and(subCriteron,
                    Restrictions.eq("ro.roadOperationId", reportCriteria.getRoadOperationId()));
        }
    }

    if (reportCriteria.getRoadOperationIds() != null && !reportCriteria.getRoadOperationIds().isEmpty()) {
        if (subCriteron == null) {
            subCriteron = Restrictions.in("ro.roadOperationId", reportCriteria.getRoadOperationIds());
        } else {
            subCriteron = Restrictions.and(subCriteron,
                    Restrictions.in("ro.roadOperationId", reportCriteria.getRoadOperationIds()));
        }
    }

    if (subCriteron == null && mainCriteron != null)
        criteriaRoadOp.add(mainCriteron);
    else if (mainCriteron == null && subCriteron != null)
        criteriaRoadOp.add(subCriteron);
    else if (mainCriteron != null && subCriteron != null)
        criteriaRoadOp.add(Restrictions.and(mainCriteron, subCriteron));
    else
        return null;

    /* Get report criteria names and descriptions */
    reportCriteria.setTAOfficeDescription(this.getTAOfficeRegionDescription(userRegion));

    if (reportCriteria.getTeamLeadStaffIds() != null && reportCriteria.getTeamLeadStaffIds().size() > 0)
        reportCriteria.setTAStaffFullName(this.getTAStaffNames(reportCriteria.getTeamLeadStaffIds()));
    else if (reportCriteria.getTeamLeadTRNs() != null && reportCriteria.getTeamLeadTRNs().size() > 0)
        reportCriteria.setTAStaffFullName(this.getPersonNamesWithTRN(reportCriteria.getTeamLeadTRNs()));

    reportCriteria.setOperationCategoryDescription(
            this.getOperationCategoryDesc(reportCriteria.getOperationCategory()));

    criteriaRoadOp.addOrder(Order.asc("ro.officeLocCode"));
    criteriaRoadOp.addOrder(Order.asc("cat.description"));
    criteriaRoadOp.addOrder(Order.asc("ro.actualStartDtime"));
    criteriaRoadOp.addOrder(Order.asc("ro.actualEndDtime"));
    criteriaRoadOp.addOrder(Order.asc("ro.operationName"));

    List<RoadOperationSummaryResultsBO> results = new ArrayList<RoadOperationSummaryResultsBO>();

    String stringStartDate = "";
    String stringEndDate = "";
    try {
        stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getOperationStartDate());
        stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getOperationEndDate());
    } catch (Exception exe) {

    }

    for (RoadOperationDO roadOp : (List<RoadOperationDO>) criteriaRoadOp.list()) {
        // Get counts that are needed to fill roadOpSummaryReportList
        Integer absentMembersCount = this.absentPersonCount(roadOp.getRoadOperationId());

        Integer teamMemberCount = this.teamMemberPersonCount(roadOp.getRoadOperationId());

        Integer summonsCount = this.summonsCount(roadOp.getRoadOperationId());

        Integer warningNoProsecutionCount = this.warningNoProsecutionCount(roadOp.getRoadOperationId());

        Integer warningNoticeCount = this.warningNoticeCount(roadOp.getRoadOperationId());

        Integer vehicleSeizedCount = this.roadCheckOutcomeCount(roadOp.getRoadOperationId(),
                Constants.OutcomeType.VEHICLE_SEIZURE);

        Integer complianceCount = this.complianceCount(roadOp.getRoadOperationId());

        Integer motorVehicleCheckCount = this.roadCheckTypeCount(roadOp.getRoadOperationId(),
                Constants.RoadCheckType.MOTOR_VEHICLE);

        Integer dlCheckCount = this.roadCheckTypeCount(roadOp.getRoadOperationId(),
                Constants.RoadCheckType.DRIVERS_LICENCE);

        Integer badgeCheckCount = this.roadCheckTypeCount(roadOp.getRoadOperationId(),
                Constants.RoadCheckType.BADGE);

        Integer citationCheckCount = this.roadCheckTypeCount(roadOp.getRoadOperationId(),
                Constants.RoadCheckType.CITATION);

        Integer roadLicenceCheckCount = this.roadCheckTypeCount(roadOp.getRoadOperationId(),
                Constants.RoadCheckType.ROAD_LICENCE);

        Integer otherCheckCount = this.roadCheckTypeCount(roadOp.getRoadOperationId(),
                Constants.RoadCheckType.OTHER);

        Integer countJPs = this.getCountOfPersonType(roadOp.getRoadOperationId(), Constants.PersonType.JP);

        Integer countPoliceOfficers = this.getCountOfPersonType(roadOp.getRoadOperationId(),
                Constants.PersonType.POLICE_OFFCER);

        Integer countTAInspectors = this.getCountOfPersonType(roadOp.getRoadOperationId(),
                Constants.PersonType.TA_STAFF);

        Integer countITAExaminers = this.getCountOfPersonType(roadOp.getRoadOperationId(),
                Constants.PersonType.ITA_EXAMINER);

        /*****
         * UR-057 Got absent count for each person type
         */

        Integer absentITACount = absentPersonTypeCount(roadOp.getRoadOperationId(),
                Constants.PersonType.ITA_EXAMINER);
        Integer absentTACount = absentPersonTypeCount(roadOp.getRoadOperationId(),
                Constants.PersonType.TA_STAFF);
        Integer absentPoliceCount = absentPersonTypeCount(roadOp.getRoadOperationId(),
                Constants.PersonType.POLICE_OFFCER);
        Integer absentJPCount = absentPersonTypeCount(roadOp.getRoadOperationId(), Constants.PersonType.JP);

        /* __________________________________________________________________________ */

        /*
         * Get Duration of an road operation using actual start and end
         * time.
         */

        long operationDuration = 0;

        if (roadOp.getActualStartDtime() != null && roadOp.getActualEndDtime() != null)
            operationDuration = DateUtils.getDateDiff(roadOp.getActualStartDtime(), roadOp.getActualEndDtime(),
                    TimeUnit.MINUTES);

        /* ___________________________________________________________________ */

        RoadOperationSummaryResultsBO result = new RoadOperationSummaryResultsBO(
                roadOp.getAuditEntry().getCreateDTime()/* operationCreateDate */,
                roadOp.getScheduledEndDtime()/* scheduledEndDateTime */,
                roadOp.getScheduledStartDtime()/* scheduledStartDateTime */,
                roadOp.getActualStartDtime()/* actualStartDateTime */,
                roadOp.getActualEndDtime()/* actualEndDateTime */,
                roadOp.getStatus().getDescription()/* operationStatus */,
                roadOp.getCategory().getDescription()/* operationCategory */,
                roadOp.getOperationName()/* operationName */, summonsCount/* countSummonsIssued */,
                warningNoticeCount/* countWaningNoticesIssued */, vehicleSeizedCount/* countVehiclesSeized */,
                complianceCount/* countCompliancyActivitiesCommited */,
                motorVehicleCheckCount/* countMotorVehiclesChecked */,
                dlCheckCount/* countDrivesLicenceChecked */, badgeCheckCount/* countBadgesChecked */,
                citationCheckCount/* countCitationChecks */,
                roadLicenceCheckCount/* countRoadLicencesChecked */, otherCheckCount/* countOtherChecks */,
                (int) operationDuration/* durationOfOperationInMinutes */,
                absentMembersCount/* countAbsentMembers */, roadOp.getRoadOperationId()/* operationId */,
                this.roadCheckOutcomeCount(roadOp.getRoadOperationId(),
                        Constants.OutcomeType.REMOVE_PLATES)/* countPlatesRemoved */,
                this.roadCheckOutcomeCount(roadOp.getRoadOperationId(),
                        Constants.OutcomeType.WARNED_FOR_PROSECUTION)/* warningsForProcecution */,
                this.roadCheckOutcomeCount(roadOp.getRoadOperationId(), Constants.OutcomeType.ALL_IN_ORDER)/*
                                                                                                           * Integer
                                                                                                           * allInOrders
                                                                                                           */,
                teamMemberCount /* count team members */,
                this.getRoadOpTeamSummaryResults(roadOp.getRoadOperationId()) /* team Summaries */,
                roadOp.getOfficeLocCode()/*TAOfficeRegion*/,
                this.getTAOfficeRegionDescription(roadOp.getOfficeLocCode())/*TAOfficeRegion*/);

        result.setCountWarningNoProsecutions(warningNoProsecutionCount);
        result.setCountITAExaminers(countITAExaminers);
        result.setCountPoliceOfficers(countPoliceOfficers);
        result.setCountJPs(countJPs);
        result.setCountTAInspectors(countTAInspectors);

        /*****
         * UR-057 - Set absentee values for each assigned person group
         */
        result.setCountAbsentITAExaminers(absentITACount);
        result.setCountAbsentJPs(absentJPCount);
        result.setCountAbsentPoliceOfficers(absentPoliceCount);
        result.setCountAbsentTAInspectors(absentTACount);

        results.add(result);
    }

    return new RoadOperationSummaryBO(userName, userRegion, reportDisplayInformation.applicationName,
            reportDisplayInformation.roadOperationSummaryTitle + stringStartDate + " TO " + stringEndDate,
            reportCriteria.getOperationStartDate(), reportCriteria.getOperationEndDate(),
            reportCriteria.getSearchCriteriaString(), this.getTAOfficeRegionDescription(userRegion), results);
}

From source file:fsl.ta.toms.roms.dao.impl.ReportDAOImpl.java

@Override
public SummonsOutstandingReportBO summonsOutstandingReport(SummonsOutstandingReportCriteriaBO reportCriteria,
        String userName, String userRegion, ReportDisplayInformationDAOImpl reportDisplayInformation) {
    Criteria criteria = this.hibernateTemplate.getSessionFactory().getCurrentSession()
            .createCriteria(SummonsDO.class, "s");
    criteria.createAlias("s.roadOperation", "ro", Criteria.LEFT_JOIN);
    criteria.createAlias("s.offender", "of", Criteria.LEFT_JOIN);
    criteria.createAlias("s.status", "st", Criteria.LEFT_JOIN);
    criteria.createAlias("ro.category", "c", Criteria.LEFT_JOIN);
    criteria.createAlias("s.taStaff", "ta", Criteria.LEFT_JOIN);
    criteria.createAlias("ta.person", "taPerson");

    Date reportStartDate = DateUtils.searchDateFormater(reportCriteria.getOperationStartDate(),
            DateUtils.SEARCHDATETYPE.START);
    Date reportEndDate = DateUtils.searchDateFormater(reportCriteria.getOperationEndDate(),
            DateUtils.SEARCHDATETYPE.END);

    Criterion mainCriterion = Restrictions.or(
            Restrictions.between("ro.scheduledStartDtime", reportStartDate, reportEndDate),
            Restrictions.between("ro.scheduledEndDtime", reportStartDate, reportEndDate));

    /* Only summons which are not yet issued should be returned */
    List<String> summonsOutstandingStatusList = new ArrayList<String>();
    summonsOutstandingStatusList.add(fsl.ta.toms.roms.constants.Constants.DocumentStatus.CANCELLED);
    summonsOutstandingStatusList.add(fsl.ta.toms.roms.constants.Constants.DocumentStatus.WITHDRAWN);
    summonsOutstandingStatusList.add(fsl.ta.toms.roms.constants.Constants.DocumentStatus.SERVED);
    Criterion subCriterion = Restrictions.not(Restrictions.in("st.statusId", summonsOutstandingStatusList));
    /* _________________________________________________________ */

    if (reportCriteria.getOffenderId() != null && reportCriteria.getOffenderId() > 0) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("of.personId", reportCriteria.getOffenderId()));
    }//from   ww  w  .ja v  a2s .  co  m

    if (StringUtil.isSet(reportCriteria.getOffenderTRN())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("of.trnNbr", reportCriteria.getOffenderTRN().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getOffenderFirstName())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions
                        .like("of.firstName", reportCriteria.getOffenderFirstName().trim(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    if (StringUtil.isSet(reportCriteria.getOffenderLastName())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions
                        .like("of.lastName", reportCriteria.getOffenderLastName().trim(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    if (reportCriteria.getOperationCategory() != null && !reportCriteria.getOperationCategory().isEmpty()) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("c.categoryId", reportCriteria.getOperationCategory().trim()));

    }

    if (reportCriteria.getRoadOperationId() != null && reportCriteria.getRoadOperationId() > 0) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("ro.roadOperationId", reportCriteria.getRoadOperationId()));
    }

    if (reportCriteria.getTAOfficeRegion() != null && !reportCriteria.getTAOfficeRegion().isEmpty()) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("ro.officeLocCode", reportCriteria.getTAOfficeRegion().trim()));
    }

    if (reportCriteria.getTAStaffId() != null && !reportCriteria.getTAStaffId().isEmpty()) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("ta.staffId", reportCriteria.getTAStaffId().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getTAStaffTRN())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("taPerson.trnNbr", reportCriteria.getTAStaffTRN().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getRoadOperationName())) {
        subCriterion = Restrictions.and(subCriterion, Restrictions
                .like("ro.operationName", reportCriteria.getRoadOperationName().trim(), MatchMode.ANYWHERE)
                .ignoreCase());
    }

    criteria.add(Restrictions.and(mainCriterion, subCriterion));

    NameUtil nameUtil = new NameUtil();
    String stringStartDate = "";
    String stringEndDate = "";
    try {
        stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getOperationStartDate());
        stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getOperationEndDate());
    } catch (Exception exe) {

    }
    /* Get report criteria names and descriptions */

    if (reportCriteria.getOffenderId() != null && reportCriteria.getOffenderId() > 0)
        reportCriteria.setOffenderName(this.getPersonName(reportCriteria.getOffenderId()));
    else if (StringUtil.isSet(reportCriteria.getOffenderTRN()))
        reportCriteria.setOffenderName(this.getPersonName(reportCriteria.getOffenderTRN()));

    reportCriteria
            .setOperationCategoryDesc(this.getOperationCategoryDesc(reportCriteria.getOperationCategory()));
    reportCriteria.setRoadOperationName(reportCriteria.getRoadOperationName());

    reportCriteria.setTAOfficeRegionDesc(this.getTAOfficeRegionDescription(reportCriteria.getTAOfficeRegion()));

    if (StringUtil.isSet(reportCriteria.getTAStaffId()))
        reportCriteria.setTAStaffName(this.getTAStaffName(reportCriteria.getTAStaffId()));
    else if (StringUtil.isSet(reportCriteria.getTAStaffTRN()))
        reportCriteria.setTAStaffName(this.getPersonName(reportCriteria.getTAStaffTRN()));

    /*
     * reportCriteria.setRoadOperationDesc(this.getRoadOperationName(
     * reportCriteria.getRoadOperationId()));
     */
    /* __________________________________________ */

    SummonsOutstandingReportBO report = new SummonsOutstandingReportBO(userName, userRegion,
            reportDisplayInformation.applicationName,
            reportDisplayInformation.summonsOutstandingReportTitle + stringStartDate + " TO " + stringEndDate,
            reportCriteria.getOperationStartDate(), reportCriteria.getOperationEndDate(),
            reportCriteria.getSearchCriteriaString(), getTAOfficeRegionDescription(userRegion));

    List<SummonsOutstandingReportResultsBO> summonsOutStReportList = new ArrayList<SummonsOutstandingReportResultsBO>();

    for (SummonsDO summons : (List<SummonsDO>) criteria.list()) {

        String offenderFullName = NameUtil.getName(
                (StringUtil.isSet(summons.getOffender().getFirstName())
                        ? summons.getOffender().getFirstName().trim()
                        : ""),
                (StringUtil.isSet(summons.getOffender().getLastName())
                        ? summons.getOffender().getLastName().trim()
                        : ""));

        String offenceDescription = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getOffence()
                .getDescription();

        String tAStaffFullName = NameUtil.getName(
                (StringUtil.isSet(summons.getTaStaff().getPerson().getFirstName())
                        ? summons.getTaStaff().getPerson().getFirstName().trim()
                        : ""),
                (StringUtil.isSet(summons.getTaStaff().getPerson().getLastName())
                        ? summons.getTaStaff().getPerson().getLastName().trim()
                        : ""));

        VehicleDO vehicle = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getCompliance().getVehicle();
        String vehicleDetails = "";
        if (vehicle != null) {
            vehicleDetails = (StringUtil.isSet(vehicle.getModel()) ? vehicle.getModel().trim() : "") + "; "
                    + (StringUtil.isSet(vehicle.getMakeDescription()) ? vehicle.getMakeDescription().trim()
                            : "")
                    + "; Plate #: "
                    + (StringUtil.isSet(vehicle.getPlateRegNo()) ? vehicle.getPlateRegNo().trim() : "");
        }

        String locationOfOffence = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getCompliance().getCompliancyArtery().getDescription();

        String tAOfficeRegion = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getCompliance().getRoadOperation().getOfficeLocCode();

        String jPFullName = NameUtil.getName(
                (StringUtil.isSet(summons.getJusticeOfPeace().getPerson().getFirstName())
                        ? summons.getJusticeOfPeace().getPerson().getFirstName().trim()
                        : ""),
                (StringUtil.isSet(summons.getJusticeOfPeace().getPerson().getLastName())
                        ? summons.getJusticeOfPeace().getPerson().getLastName()
                        : ""));

        String roadOperationDetails = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getCompliance().getRoadOperation().getOperationName();

        /* Get latest trial for the summons */
        Criteria criteriaCourtAppearance = this.hibernateTemplate.getSessionFactory().getCurrentSession()
                .createCriteria(CourtAppearanceDO.class, "CApp");

        criteriaCourtAppearance.createAlias("CApp.courtCase", "CCase");
        criteriaCourtAppearance.createAlias("CCase.summons", "Summ");

        criteriaCourtAppearance.add(Restrictions.eq("Summ.summonsId", summons.getSummonsId()));

        criteriaCourtAppearance.addOrder(Order.asc("CApp.CourtDTime"));
        criteriaCourtAppearance.addOrder(Order.asc("CApp.courtAppearanceId"));

        Integer courtAppListSize = criteriaCourtAppearance.list().size();
        String courtDetails = "";

        if (courtAppListSize > 0) {
            CourtAppearanceDO courtApp = (CourtAppearanceDO) criteriaCourtAppearance.list()
                    .get(courtAppListSize - 1);

            String stringTrialDate = "";
            SimpleDateFormat dt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
            try {
                stringTrialDate = dt.format(courtApp.getCourtDTime());

            } catch (Exception exe) {

            }

            courtDetails = String.format("Court Appearance Date is %s at %s.", stringTrialDate,
                    courtApp.getCourt().getDescription());
        }
        /* _______________________________ */

        SummonsOutstandingReportResultsBO summonsOutstanding = new SummonsOutstandingReportResultsBO(
                offenderFullName, offenceDescription, tAStaffFullName, vehicleDetails, locationOfOffence,
                tAOfficeRegion, jPFullName, roadOperationDetails, courtDetails,
                getTAOfficeRegionDescription(tAOfficeRegion), summons.getServedOnDate());

        summonsOutStReportList.add(summonsOutstanding);
    }

    report.setResults(summonsOutStReportList);
    return report;
}

From source file:fsl.ta.toms.roms.dao.impl.ReportDAOImpl.java

@Override
public SummonsReportBO summonsReport(SummonsReportCriteriaBO reportCriteria, String userName, String userRegion,
        ReportDisplayInformationDAOImpl reportDisplayInformation) {
    Criteria criteria = this.hibernateTemplate.getSessionFactory().getCurrentSession()
            .createCriteria(SummonsDO.class, "s");
    criteria.createAlias("s.roadOperation", "ro", Criteria.LEFT_JOIN);
    criteria.createAlias("s.offender", "of", Criteria.LEFT_JOIN);
    criteria.createAlias("s.status", "st", Criteria.LEFT_JOIN);
    criteria.createAlias("ro.category", "c", Criteria.LEFT_JOIN);
    criteria.createAlias("s.taStaff", "ta", Criteria.LEFT_JOIN);
    criteria.createAlias("ta.person", "taPerson", Criteria.LEFT_JOIN);

    Criterion mainCriterion = Restrictions.sqlRestriction("1=1");

    if (reportCriteria.getOperationStartDate() != null && reportCriteria.getOperationEndDate() != null) {
        Date reportStartDate = DateUtils.searchDateFormater(reportCriteria.getOperationStartDate(),
                DateUtils.SEARCHDATETYPE.START);
        Date reportEndDate = DateUtils.searchDateFormater(reportCriteria.getOperationEndDate(),
                DateUtils.SEARCHDATETYPE.END);

        Criterion scheduledDate = Restrictions.or(
                Restrictions.between("ro.scheduledStartDtime", reportStartDate, reportEndDate),
                Restrictions.between("ro.scheduledEndDtime", reportStartDate, reportEndDate));

        Criterion actualDate = Restrictions.or(
                Restrictions.between("ro.actualStartDtime", reportStartDate, reportEndDate),
                Restrictions.between("ro.actualEndDtime", reportStartDate, reportEndDate));

        mainCriterion = Restrictions.and(mainCriterion, Restrictions.or(scheduledDate, actualDate));
    }/*from ww w . j a  va2 s  . c  o m*/

    if (reportCriteria.getOffenceStartDate() != null && reportCriteria.getOffenceEndDate() != null) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.between("s.offenceDtime",
                        DateUtils.searchDateFormater(reportCriteria.getOffenceStartDate(),
                                DateUtils.SEARCHDATETYPE.START),
                        DateUtils.searchDateFormater(reportCriteria.getOffenceEndDate(),
                                DateUtils.SEARCHDATETYPE.END)));
    }

    if (reportCriteria.getIssuedStartDate() != null && reportCriteria.getIssuedEndDate() != null) {
        mainCriterion = Restrictions.and(mainCriterion, Restrictions.between("s.issueDate",
                DateUtils.searchDateFormater(reportCriteria.getIssuedStartDate(),
                        DateUtils.SEARCHDATETYPE.START),
                DateUtils.searchDateFormater(reportCriteria.getIssuedEndDate(), DateUtils.SEARCHDATETYPE.END)));
    }

    if (reportCriteria.getPrintStartDate() != null && reportCriteria.getPrintEndDate() != null) {
        mainCriterion = Restrictions.and(mainCriterion, Restrictions.between("s.printDtime",
                DateUtils.searchDateFormater(reportCriteria.getPrintStartDate(),
                        DateUtils.SEARCHDATETYPE.START),
                DateUtils.searchDateFormater(reportCriteria.getPrintEndDate(), DateUtils.SEARCHDATETYPE.END)));

    }

    if (reportCriteria.getOffenderId() != null && reportCriteria.getOffenderId() > 0) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("of.personId", reportCriteria.getOffenderId()));
    }

    if (StringUtil.isSet(reportCriteria.getOffenderTRN())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("of.trnNbr", reportCriteria.getOffenderTRN().trim()));
    }

    if (reportCriteria.getOperationCategory() != null && !reportCriteria.getOperationCategory().isEmpty()) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("c.categoryId", reportCriteria.getOperationCategory().trim()));

    }

    if (reportCriteria.getRoadOperationId() != null && reportCriteria.getRoadOperationId() > 0) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("ro.roadOperationId", reportCriteria.getRoadOperationId()));
    }

    if (reportCriteria.getTAOfficeRegion() != null && !reportCriteria.getTAOfficeRegion().isEmpty()) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("ro.officeLocCode", reportCriteria.getTAOfficeRegion().trim()));
    }

    if (reportCriteria.getTAStaffId() != null && !reportCriteria.getTAStaffId().isEmpty()) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("ta.staffId", reportCriteria.getTAStaffId().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getTAStaffTRN())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("taPerson.trnNbr", reportCriteria.getTAStaffTRN().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getRoadOperationName())) {
        mainCriterion = Restrictions.and(mainCriterion, Restrictions
                .like("ro.operationName", reportCriteria.getRoadOperationName().trim(), MatchMode.ANYWHERE)
                .ignoreCase());
    }

    if (StringUtil.isSet(reportCriteria.getStatus())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("s.status.statusId", reportCriteria.getStatus().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getOffenderFirstName())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions
                        .like("of.firstName", reportCriteria.getOffenderFirstName().trim(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    if (StringUtil.isSet(reportCriteria.getOffenderLastName())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions
                        .like("of.lastName", reportCriteria.getOffenderLastName().trim(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    criteria.add(mainCriterion);

    String stringStartDate = "";
    String stringEndDate = "";
    String dateTypeUsed = "";
    Date startDate = null;
    Date endDate = null;
    try {
        if (reportCriteria.getOperationStartDate() != null && reportCriteria.getOperationEndDate() != null) {
            startDate = reportCriteria.getOperationStartDate();
            endDate = reportCriteria.getOperationEndDate();
            stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getOperationStartDate());
            stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getOperationEndDate());

            dateTypeUsed = "Operation";
        } else if (reportCriteria.getOffenceStartDate() != null && reportCriteria.getOffenceEndDate() != null) {
            startDate = reportCriteria.getOffenceStartDate();
            endDate = reportCriteria.getOffenceEndDate();
            stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getOffenceStartDate());
            stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getOffenceEndDate());

            dateTypeUsed = "Offence";
        } else if (reportCriteria.getPrintStartDate() != null && reportCriteria.getPrintEndDate() != null) {
            startDate = reportCriteria.getPrintStartDate();
            endDate = reportCriteria.getPrintEndDate();
            stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getPrintStartDate());
            stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getPrintEndDate());

            dateTypeUsed = "Print";
        } else if (reportCriteria.getIssuedStartDate() != reportCriteria.getIssuedEndDate()) {
            startDate = reportCriteria.getIssuedStartDate();
            endDate = reportCriteria.getIssuedEndDate();
            stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getIssuedStartDate());
            stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getIssuedEndDate());

            dateTypeUsed = "Issued";
        }
    } catch (Exception exe) {

    }

    /* Get report criteria names and descriptions */
    if (reportCriteria.getOffenderId() != null && reportCriteria.getOffenderId() > 0) {
        reportCriteria.setOffenderName(this.getPersonName(reportCriteria.getOffenderId()));
    } else if (StringUtil.isSet(reportCriteria.getOffenderTRN())) {
        reportCriteria.setOffenderName(this.getPersonName(reportCriteria.getOffenderTRN()));
    }

    reportCriteria
            .setOperationCategoryDesc(this.getOperationCategoryDesc(reportCriteria.getOperationCategory()));
    reportCriteria.setRoadOperationName(reportCriteria.getRoadOperationName());

    reportCriteria.setTAOfficeRegionDesc(this.getTAOfficeRegionDescription(reportCriteria.getTAOfficeRegion()));

    if (StringUtil.isSet(reportCriteria.getTAStaffId()))
        reportCriteria.setTAStaffName(this.getTAStaffName(reportCriteria.getTAStaffId()));
    else if (StringUtil.isSet(reportCriteria.getTAStaffTRN()))
        reportCriteria.setTAStaffName(this.getPersonName(reportCriteria.getTAStaffTRN()));
    /*
     * reportCriteria.setRoadOperationDesc(this.getRoadOperationName(
     * reportCriteria.getRoadOperationId()));
     */
    /* __________________________________________ */

    SummonsReportBO report = new SummonsReportBO(userName, userRegion, reportDisplayInformation.applicationName,
            reportDisplayInformation.summonsReportTitle + "(" + dateTypeUsed + ") " + stringStartDate + " TO "
                    + stringEndDate,
            startDate, endDate, reportCriteria.getSearchCriteriaString(),
            getTAOfficeRegionDescription(userRegion));

    List<SummonsReportResultsBO> summonsReportList = new ArrayList<SummonsReportResultsBO>();

    for (SummonsDO summons : (List<SummonsDO>) criteria.list()) {

        String offenderFullName = NameUtil.getName(
                (StringUtil.isSet(summons.getOffender().getFirstName())
                        ? summons.getOffender().getFirstName().trim()
                        : ""),
                (StringUtil.isSet(summons.getOffender().getLastName())
                        ? summons.getOffender().getLastName().trim()
                        : ""));

        String offenceDescription = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getOffence()
                .getDescription();

        String tAStaffFullName = NameUtil.getName(
                (StringUtil.isSet(summons.getTaStaff().getPerson().getFirstName())
                        ? summons.getTaStaff().getPerson().getFirstName().trim()
                        : ""),
                (StringUtil.isSet(summons.getTaStaff().getPerson().getLastName())
                        ? summons.getTaStaff().getPerson().getLastName().trim()
                        : ""));

        VehicleDO vehicle = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getCompliance().getVehicle();
        String vehicleDetails = "";
        if (vehicle != null) {
            vehicleDetails = (StringUtil.isSet(vehicle.getModel()) ? vehicle.getModel().trim() : "") + "; "
                    + (StringUtil.isSet(vehicle.getMakeDescription()) ? vehicle.getMakeDescription().trim()
                            : "")
                    + "; Plate #: "
                    + (StringUtil.isSet(vehicle.getPlateRegNo()) ? vehicle.getPlateRegNo().trim() : "");
        }

        String locationOfOffence = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getCompliance().getCompliancyArtery().getDescription();

        String tAOfficeRegion = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getCompliance().getRoadOperation().getOfficeLocCode();

        String jPFullName = NameUtil.getName(
                (StringUtil.isSet(summons.getJusticeOfPeace().getPerson().getFirstName())
                        ? summons.getJusticeOfPeace().getPerson().getFirstName().trim()
                        : ""),
                (StringUtil.isSet(summons.getJusticeOfPeace().getPerson().getLastName())
                        ? summons.getJusticeOfPeace().getPerson().getLastName()
                        : ""));

        String roadOperationDetails = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getCompliance().getRoadOperation().getOperationName();

        /* Get latest trial for the summons */
        Criteria criteriaCourtAppearance = this.hibernateTemplate.getSessionFactory().getCurrentSession()
                .createCriteria(CourtAppearanceDO.class, "CApp");

        criteriaCourtAppearance.createAlias("CApp.courtCase", "CCase");
        criteriaCourtAppearance.createAlias("CCase.summons", "Summ");

        criteriaCourtAppearance.add(Restrictions.eq("Summ.summonsId", summons.getSummonsId()));

        criteriaCourtAppearance.addOrder(Order.asc("CApp.CourtDTime"));
        criteriaCourtAppearance.addOrder(Order.asc("CApp.courtAppearanceId"));

        Integer courtAppListSize = criteriaCourtAppearance.list().size();
        String courtDetails = "";

        if (courtAppListSize > 0) {
            CourtAppearanceDO courtApp = (CourtAppearanceDO) criteriaCourtAppearance.list()
                    .get(courtAppListSize - 1);

            String stringTrialDate = "";
            SimpleDateFormat dt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
            try {
                stringTrialDate = dt.format(courtApp.getCourtDTime());

            } catch (Exception exe) {

            }

            courtDetails = String.format("Court Appearance Date is %s at %s.", stringTrialDate,
                    courtApp.getCourt().getDescription());
        }
        /* _______________________________ */

        SummonsReportResultsBO summonsRptResult = new SummonsReportResultsBO(offenderFullName,
                offenceDescription, tAStaffFullName, vehicleDetails, locationOfOffence, tAOfficeRegion,
                jPFullName, roadOperationDetails, courtDetails, getTAOfficeRegionDescription(tAOfficeRegion),
                summons.getOffenceDtime(), summons.getServedOnDate(), summons.getPrintDtime(),
                summons.getStatus().getStatusId(), summons.getStatus().getDescription(),
                summons.getManualSerialNumber(), summons.getComment(),
                summons.getReason() != null ? summons.getReason().getDescription() : null,
                summons.getReprintDtime());

        summonsReportList.add(summonsRptResult);
    }

    report.setResults(summonsReportList);
    return report;
}

From source file:fsl.ta.toms.roms.dao.impl.ReportDAOImpl.java

@Override
public CourtScheduleReportBO courtScheduleReport(CourtScheduleCriteriaBO reportCriteria, String userName,
        String userRegion, ReportDisplayInformationDAOImpl reportDisplayInformation) {

    Criteria criteria = this.hibernateTemplate.getSessionFactory().getCurrentSession()
            .createCriteria(CourtAppearanceDO.class, "CApp");

    /* Create aliases */
    criteria.createAlias("CApp.status", "st", Criteria.LEFT_JOIN);
    criteria.createAlias("CApp.court", "c", Criteria.LEFT_JOIN);
    criteria.createAlias("CApp.courtCase", "CCase", Criteria.LEFT_JOIN);
    criteria.createAlias("CCase.summons", "su", Criteria.LEFT_JOIN);
    criteria.createAlias("su.offender", "o", Criteria.LEFT_JOIN);
    criteria.createAlias("c.address", "courtAddress", Criteria.LEFT_JOIN);
    criteria.createAlias("courtAddress.parish", "courtParish", Criteria.LEFT_JOIN);
    criteria.createAlias("su.roadCheckOffenceOutcome.roadCheckOffence.roadCheck.compliance.roadOperation", "r",
            Criteria.LEFT_JOIN);/*  w  ww .ja  v a 2s.  co m*/
    criteria.createAlias("su.taStaff", "tas", Criteria.LEFT_JOIN);
    criteria.createAlias("tas.person", "taPerson", Criteria.LEFT_JOIN);
    criteria.createAlias("su.roadCheckOffenceOutcome.roadCheckOffence.offence", "off");
    /* _____________________________ */

    Criterion mainCriterion = Restrictions.between("CApp.courtDTime",
            DateUtils.searchDateFormater(reportCriteria.getTrialStartDate(), DateUtils.SEARCHDATETYPE.START),
            DateUtils.searchDateFormater(reportCriteria.getTrialEndDate(), DateUtils.SEARCHDATETYPE.END));

    Criterion subCriterion = Restrictions
            .eq("st.statusId", fsl.ta.toms.roms.constants.Constants.Status.COURT_CASE_OPEN).ignoreCase();

    if (reportCriteria.getCourtId() != null && reportCriteria.getCourtId() > 0) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("c.courtId", reportCriteria.getCourtId()));
    }

    if (reportCriteria.getOffenderId() != null && reportCriteria.getOffenderId() > 0) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("o.personId", reportCriteria.getOffenderId()));
    }

    if (StringUtil.isSet(reportCriteria.getOffenderTRN())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("o.trnNbr", reportCriteria.getOffenderTRN().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getOffenderFirstName())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions
                        .like("o.firstName", reportCriteria.getOffenderFirstName().trim(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    if (StringUtil.isSet(reportCriteria.getOffenderLastName())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.like("o.lastName", reportCriteria.getOffenderLastName().trim(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    if (reportCriteria.getRoadOperationId() != null && reportCriteria.getRoadOperationId() > 0) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("r.roadOperationId", reportCriteria.getRoadOperationId()));
    }

    //      if (reportCriteria.getTAOfficeRegions() != null
    //            && reportCriteria.getTAOfficeRegions().size() > 0) {
    //         subCriterion = Restrictions.and(
    //               subCriterion,
    //               Restrictions.in("r.officeLocCode",
    //                     reportCriteria.getTAOfficeRegions()));

    /*Region should be filtered by the court appearances*/
    if (reportCriteria.getTAOfficeRegions() != null && reportCriteria.getTAOfficeRegions().size() > 0) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.in("courtParish.officeLocationCode", reportCriteria.getTAOfficeRegions()));
    }

    if (StringUtil.isSet(reportCriteria.getTAStaffId())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("tas.staffId", reportCriteria.getTAStaffId().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getTAStaffTRN())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("taPerson.trnNbr", reportCriteria.getTAStaffTRN().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getRoadOperationName())) {
        subCriterion = Restrictions.and(subCriterion, Restrictions
                .like("r.operationName", reportCriteria.getRoadOperationName().trim(), MatchMode.ANYWHERE)
                .ignoreCase());
    }

    criteria.add(Restrictions.and(mainCriterion, subCriterion));

    criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);

    //criteria.addOrder(Order.asc("r.officeLocCode"));
    criteria.addOrder(Order.asc("courtParish.officeLocationCode").ignoreCase());
    criteria.addOrder(Order.asc("c.shortDesc").ignoreCase());
    criteria.addOrder(Order.asc("CApp.courtDTime").ignoreCase());
    criteria.addOrder(Order.asc("taPerson.lastName").ignoreCase());
    criteria.addOrder(Order.asc("su.offenceDtime").ignoreCase());
    criteria.addOrder(Order.asc("o.lastName").ignoreCase());
    //criteria.addOrder(Order.asc("o.firstName").ignoreCase());
    //criteria.addOrder(Order.asc("off.description").ignoreCase());
    //criteria.addOrder(Order.asc("r.operationName").ignoreCase());

    List criteriaResults = criteria.list();

    Iterator iterator = criteriaResults.iterator();

    List<CourtScheduleReportResultsBO> results = new ArrayList<CourtScheduleReportResultsBO>();

    String stringStartDate = "";

    String stringEndDate = "";
    try {
        stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getTrialStartDate());
        stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getTrialEndDate());
    } catch (Exception exe) {

    }

    /* Get report criteria names and descriptions */
    reportCriteria.setTAOfficeDescription(this.getTAOfficeRegionDescription(userRegion));
    reportCriteria.setCourtDescription(this.getCourtDescription(reportCriteria.getCourtId()));

    if (reportCriteria.getOffenderId() != null && reportCriteria.getOffenderId() > 0)
        reportCriteria.setOffenderFullName(this.getPersonName(reportCriteria.getOffenderId()));
    else if (StringUtil.isSet(reportCriteria.getOffenderTRN())) {
        reportCriteria.setOffenderFullName(this.getPersonName(reportCriteria.getOffenderTRN()));
    }

    reportCriteria.setTAOfficeDescription(this.getTAOfficeRegionDescription(userRegion));

    if (StringUtil.isSet(reportCriteria.getTAStaffId()))
        reportCriteria.setTAStaffFullName(this.getTAStaffName(reportCriteria.getTAStaffId()));
    else if (StringUtil.isSet(reportCriteria.getTAStaffTRN())) {
        reportCriteria.setTAStaffFullName(this.getPersonName(reportCriteria.getTAStaffTRN()));
    }

    while (iterator.hasNext()) {
        Map result = (Map) iterator.next();

        /* Map Results to DOs */
        CourtAppearanceDO courtApp = (CourtAppearanceDO) result.get("CApp");
        CourtCaseDO courtCase = (CourtCaseDO) result.get("CCase");
        StatusDO status = (StatusDO) result.get("st");
        CourtDO court = (CourtDO) result.get("c");
        SummonsDO summons = (SummonsDO) result.get("su");
        PersonDO offender = (PersonDO) result.get("o");
        RoadOperationDO roadOp = (RoadOperationDO) result.get("r");
        TAStaffDO taStaff = (TAStaffDO) result.get("tas");
        ParishDO courtParish = (ParishDO) result.get("courtParish");
        /* ____________________________ */

        CourtScheduleReportResultsBO courtSchedule = new CourtScheduleReportResultsBO(
                NameUtil.getName(offender.getFirstName(), offender.getLastName())/* offender Name */,
                NameUtil.getName(taStaff.getPerson().getFirstName(),
                        taStaff.getPerson().getLastName())/* tAStaffFullName */,
                roadOp != null ? roadOp.getOperationName() : "Unscheduled Operation"/* roadOperationName */,
                summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getOffence()
                        .getDescription()/* offenceDetails */,
                courtParish != null ? courtParish.getOfficeLocationCode() : ""/* tAOfficeRegion */,
                this.getTAOfficeRegionDescription(court != null ? court : null)/* tAOfficeRegionDescription */,
                courtCase.getStatus().getDescription()/* Court Case Status */,
                courtApp.getStatus().getDescription()/*
                                                     * Court Appearance
                                                     * Status
                                                     */, summons.getOffenceDtime()/* offenceDate */,
                courtApp.getCourtDTime()/* courtDate */, new CourtBO(court)/* court */);

        results.add(courtSchedule);

    }

    return new CourtScheduleReportBO(userName, userRegion/* region */,
            reportDisplayInformation.applicationName/* applicationName */,
            reportDisplayInformation.courtScheduleReportTitle + stringStartDate + " TO "
                    + stringEndDate/* reportName */,
            reportCriteria.getTrialStartDate()/* startDate */, reportCriteria.getTrialEndDate()/* endDate */,
            reportCriteria.getSearchCriteriaString()/* searchCriteria */,
            this.getTAOfficeRegionDescription(userRegion)/* regionDescription */, results);
}

From source file:fsl.ta.toms.roms.dao.impl.ReportDAOImpl.java

@SuppressWarnings("unchecked")
@Override//from  w w  w .j  a v  a2  s  . c  om
public RoadOperationsStatisticsReportBO performanceSaisticsReport(
        PerformanceStatisticsReportCriteriaBO reportCriteria, String userName, String userRegion,
        ReportDisplayInformationDAOImpl reportDisplayInformation) {
    /* Specify search criteria for report */
    Criteria criteria = this.hibernateTemplate.getSessionFactory().getCurrentSession()
            .createCriteria(RoadOperationDO.class, "roadOp");

    /* List of all aliases used */
    criteria.createAlias("roadOp.category", "category");

    /* _______________________ */

    /* Apply filters to search results */
    Criterion mainCriteron = Restrictions.or(
            Restrictions.between("roadOp.scheduledStartDtime",
                    DateUtils.searchDateFormater(reportCriteria.getStartDate(), DateUtils.SEARCHDATETYPE.START),
                    DateUtils.searchDateFormater(reportCriteria.getEndDate(), DateUtils.SEARCHDATETYPE.END)),
            Restrictions.between("roadOp.scheduledEndDtime",
                    DateUtils.searchDateFormater(reportCriteria.getStartDate(), DateUtils.SEARCHDATETYPE.START),
                    DateUtils.searchDateFormater(reportCriteria.getEndDate(), DateUtils.SEARCHDATETYPE.END)));

    if (StringUtil.isSet(reportCriteria.getTAOfficeRegion())) {
        mainCriteron = Restrictions.and(mainCriteron,
                Restrictions.eq("roadOp.officeLocCode", reportCriteria.getTAOfficeRegion().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getOperationCategory())) {
        mainCriteron = Restrictions.and(mainCriteron,
                Restrictions.eq("category.categoryId", reportCriteria.getOperationCategory().trim()));
    }

    if (reportCriteria.getTeamLeadId() != null && !reportCriteria.getTeamLeadId().isEmpty()) {
        List<Integer> roadOpIds = this.getListOfRoadOpIdsBasedOnTeamLead(reportCriteria.getTeamLeadId());

        if (roadOpIds != null)
            mainCriteron = Restrictions.and(mainCriteron, Restrictions.in("roadOp.roadOperationId", roadOpIds));
    }

    if (StringUtil.isSet(reportCriteria.getTeamLeadTRN())) {
        List<Integer> roadOpIds = this.getListOfRoadOpIdsBasedOnTeamLeadTRN(reportCriteria.getTeamLeadTRN());

        if (roadOpIds != null)
            mainCriteron = Restrictions.and(mainCriteron, Restrictions.in("roadOp.roadOperationId", roadOpIds));
    }

    if (StringUtil.isSet(reportCriteria.getRoadOperationName())) {
        mainCriteron = Restrictions.and(mainCriteron,
                Restrictions
                        .like("roadOp.operationName", reportCriteria.getRoadOperationName(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    if (reportCriteria.getRoadOperationId() != null && reportCriteria.getRoadOperationId() > 0) {
        mainCriteron = Restrictions.and(mainCriteron,
                Restrictions.eq("roadOp.roadOperationId", reportCriteria.getRoadOperationId()));
    }

    if (StringUtil.isSet(reportCriteria.getTAStaffId()) || StringUtil.isSet(reportCriteria.getTAStaffTRN())) {
        Criteria criteriaTA = this.hibernateTemplate.getSessionFactory().getCurrentSession()
                .createCriteria(TAStaffDO.class, "ta");

        criteriaTA.createAlias("ta.person", "taPerson");

        if (StringUtil.isSet(reportCriteria.getTAStaffId()))
            criteriaTA.add(Restrictions.eq("ta.staffId", reportCriteria.getTAStaffId().trim()));

        if (StringUtil.isSet(reportCriteria.getTAStaffTRN()))
            criteriaTA.add(Restrictions.eq("taPerson.trnNbr", reportCriteria.getTAStaffTRN().trim()));

        TAStaffDO taStaff = null;

        List<TAStaffDO> staffList = criteriaTA.list();

        if (!staffList.isEmpty())
            taStaff = staffList.get(0);

        if (taStaff != null) {

            /* Get a list of all assigned persons for a road operation. */
            Criteria criteriaAssignedPersons = this.hibernateTemplate.getSessionFactory().getCurrentSession()
                    .createCriteria(AssignedPersonDO.class, "assignedP");

            criteriaAssignedPersons.add(Restrictions.sqlRestriction("{alias}.person_id = ?",
                    taStaff.getPerson().getPersonId(), Hibernate.INTEGER));

            List<Integer> roadOpsWithTAStaff = new ArrayList<Integer>();

            for (AssignedPersonDO assignee : (List<AssignedPersonDO>) criteriaAssignedPersons.list()) {
                roadOpsWithTAStaff
                        .add(assignee.getAssignedPersonKey().getTeam().getRoadOperation().getRoadOperationId());
            }

            mainCriteron = Restrictions.and(mainCriteron,
                    Restrictions.in("roadOp.roadOperationId", roadOpsWithTAStaff));
        } else {
            return null;
        }
    }

    /* ______________________________ */

    /*** Check which road operations employ the strategies selected ****/
    if (reportCriteria.getStrategyIds() != null && !reportCriteria.getStrategyIds().isEmpty()) {
        //
        Criteria criteriaStrategies = this.hibernateTemplate.getSessionFactory().getCurrentSession()
                .createCriteria(OperationStrategyDO.class, "opStrat");

        // criteriaStrategies.createAlias("opStrat.operationStrategyKey.roadOperation",
        // "roadOp");
        // criteriaStrategies.createAlias("opStrat.operationStrategyKey.strategy",
        // "strat");

        criteriaStrategies.setProjection(Projections
                .distinct(Projections.property("opStrat.operationStrategyKey.roadOperation.roadOperationId")));

        criteriaStrategies.add(Restrictions.in("opStrat.operationStrategyKey.strategy.strategyId",
                reportCriteria.getStrategyIds()));

        List<Integer> roadOpWithStratsList = criteriaStrategies.list();

        if (roadOpWithStratsList != null && !roadOpWithStratsList.isEmpty()) {
            mainCriteron = Restrictions.and(mainCriteron,
                    Restrictions.in("roadOp.roadOperationId", roadOpWithStratsList));
        } else {
            return null;
        }
    }
    /* ______________________________________________________________ */

    /*
     * Create Return objects which are going to be filled during report
     * processing.
     */

    String stringStartDate = "";
    String stringEndDate = "";
    try {
        stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getStartDate());
        stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getEndDate());
    } catch (Exception exe) {

    }

    /* Get report criteria names and descriptions */
    reportCriteria
            .setTAOfficeDescription(this.getTAOfficeRegionDescription(reportCriteria.getTAOfficeRegion()));
    reportCriteria.setOperationCategoryDescription(
            this.getOperationCategoryDesc(reportCriteria.getOperationCategory()));

    if (StringUtil.isSet(reportCriteria.getTAStaffId()))
        reportCriteria.setTAStaffName(this.getTAStaffName(reportCriteria.getTAStaffId()));
    else if (StringUtil.isSet(reportCriteria.getTAStaffTRN()))
        reportCriteria.setTAStaffName(this.getPersonName(reportCriteria.getTAStaffTRN()));

    if (StringUtil.isSet(reportCriteria.getTeamLeadId()))
        reportCriteria.setTeamLeadName(this.getTAStaffName(reportCriteria.getTeamLeadId()));
    else if (StringUtil.isSet(reportCriteria.getTeamLeadTRN()))
        reportCriteria.setTeamLeadName(this.getPersonName(reportCriteria.getTeamLeadTRN()));

    if (reportCriteria.getStrategyIds() != null && !reportCriteria.getStrategyIds().isEmpty()) {
        StringBuilder strategyDescriptions = new StringBuilder("");

        for (Integer strategyId : reportCriteria.getStrategyIds()) {
            StrategyDO strategyDO = this.hibernateTemplate.get(StrategyDO.class, strategyId);

            if (strategyDO != null) {
                if (!strategyDescriptions.toString().isEmpty())
                    strategyDescriptions.append(", ");

                strategyDescriptions.append(strategyDO.getDescription());
            }
        }

        reportCriteria.setStrategyDescriptions(strategyDescriptions.toString());
    }

    RoadOperationsStatisticsReportBO roadOpReportStatsOuput = new RoadOperationsStatisticsReportBO(userName,
            userRegion, reportDisplayInformation.applicationName,
            reportDisplayInformation.getPerformanceStatisticsReportTitle() + stringStartDate + " TO "
                    + stringEndDate,
            reportCriteria.getStartDate(), reportCriteria.getEndDate(),
            reportCriteria.getSearchCriteriaString(), this.getTAOfficeRegionDescription(userRegion));

    List<RegionStatisticsBO> regionStats = new ArrayList<RegionStatisticsBO>();

    RegionStatisticsBO currentRegionStats = null;
    OperationSummaryReportCriteriaBO reportCriteriaForRoadOps = null;

    roadOpReportStatsOuput.setRegionStatistics(regionStats);

    /* ____________________________________ */

    /* Loop through list of road operations and get statistics for persons. */
    criteria.add(mainCriteron);
    criteria.addOrder(Order.asc("roadOp.officeLocCode"));
    criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);

    List criteriaList = criteria.list();

    Iterator iterator = criteriaList.iterator();

    while (iterator.hasNext()) {
        Map map = (Map) iterator.next();

        final RoadOperationDO roadOpDO = (RoadOperationDO) map.get("roadOp");
        // TAStaffDO teamLead = (TAStaffDO)map.get("teamLead");

        if (currentRegionStats == null) {

            /* Create List of RoadOperationSummaryBO */
            reportCriteriaForRoadOps = new OperationSummaryReportCriteriaBO(reportCriteria.getStartDate(),
                    reportCriteria.getEndDate(), new ArrayList<String>() {
                        {
                            add(roadOpDO.getOfficeLocCode());

                        }
                    }, this.getTeamLeadIdsForRoadOp(roadOpDO.getRoadOperationId()),
                    roadOpDO.getCategory().getCategoryId(), roadOpDO.getRoadOperationId());

            currentRegionStats = new RegionStatisticsBO(roadOpDO.getOfficeLocCode(),
                    this.getTAOfficeRegionDescription(roadOpDO.getOfficeLocCode()));

            currentRegionStats.setRoadOpSummary(this.operationSummaryReport(reportCriteriaForRoadOps, userName,
                    userRegion, reportDisplayInformation).getResults());

            List<RoadOperationSummaryResultsBO> roadOpSummary = this.operationSummaryReport(
                    reportCriteriaForRoadOps, userName, userRegion, reportDisplayInformation).getResults();

            currentRegionStats.setRoadOpSummary(roadOpSummary);

            currentRegionStats.setRoadOperationStatistics(new ArrayList<RoadOperationStatisticsBO>());

            roadOpReportStatsOuput.getRegionStatistics().add(currentRegionStats);

        } else if (!currentRegionStats.getOfficeLocCode().equalsIgnoreCase(roadOpDO.getOfficeLocCode())) {

            reportCriteriaForRoadOps = new OperationSummaryReportCriteriaBO(reportCriteria.getStartDate(),
                    reportCriteria.getEndDate(), new ArrayList<String>() {
                        {
                            add(roadOpDO.getOfficeLocCode());

                        }
                    }, null, roadOpDO.getCategory().getCategoryId(), null);

            currentRegionStats = new RegionStatisticsBO(roadOpDO.getOfficeLocCode(),
                    this.getTAOfficeRegionDescription(roadOpDO.getOfficeLocCode()));
            ;

            currentRegionStats.setRoadOpSummary(this.operationSummaryReport(reportCriteriaForRoadOps, userName,
                    userRegion, reportDisplayInformation).getResults());

            List<RoadOperationSummaryResultsBO> roadOpSummary = this.operationSummaryReport(
                    reportCriteriaForRoadOps, userName, userRegion, reportDisplayInformation).getResults();

            currentRegionStats.setRoadOpSummary(roadOpSummary);

            currentRegionStats.setRoadOperationStatistics(new ArrayList<RoadOperationStatisticsBO>());

            roadOpReportStatsOuput.getRegionStatistics().add(currentRegionStats);
        }

        RoadOperationStatisticsBO roadOpStats = new RoadOperationStatisticsBO(
                getListOfTeamLeadNamesBasedOnRoadOpId(roadOpDO.getRoadOperationId()),
                roadOpDO.getOperationName());

        roadOpStats.setITAExaminerSummary(new ArrayList<ITAExaminerStatisticsBO>());
        roadOpStats.setJPSummary(new ArrayList<JPStatisticsBO>());
        roadOpStats.setPoliceOfficerSummary(new ArrayList<PoliceOfficerStatisticsBO>());
        roadOpStats.setTAOfficerSummary(new ArrayList<TAOfficerStatisticsBO>());
        /* Get a list of all assigned persons for a road operation. */
        Criteria criteriaAssignedPersons = this.hibernateTemplate.getSessionFactory().getCurrentSession()
                .createCriteria(AssignedPersonDO.class, "assignedP");

        // criteriaAssignedPersons.add(Restrictions.sqlRestriction("{alias}.road_operation_id = ?",
        // roadOpDO.getRoadOperationId(), Hibernate.INTEGER));

        List<Integer> teamIds = this.getTeamIdsForRoadOp(roadOpDO.getRoadOperationId());

        if (teamIds != null && teamIds.size() > 0)
            criteriaAssignedPersons.add(Restrictions.in("assignedPersonKey.team.teamId", teamIds));

        if (StringUtil.isSet(reportCriteria.getTAStaffId())) {
            TAStaffDO taStaff = (TAStaffDO) this.hibernateTemplate.getSessionFactory().getCurrentSession()
                    .get(TAStaffDO.class, reportCriteria.getTAStaffId().trim());

            if (taStaff != null) {

                criteriaAssignedPersons.add(Restrictions.sqlRestriction("{alias}.person_id = ?",
                        taStaff.getPerson().getPersonId(), Hibernate.INTEGER));
            } else {
                return null;
            }
        }

        for (AssignedPersonDO assignedPerson : (List<AssignedPersonDO>) criteriaAssignedPersons.list()) {
            /* Looping through a list of persons based on road operation id. */

            PersonDO person = assignedPerson.getAssignedPersonKey().getPerson();
            CDPersonTypeDO personType = assignedPerson.getAssignedPersonKey().getPersonType();

            if (personType.getPersonTypeId().toLowerCase().equalsIgnoreCase(Constants.PersonType.JP)) {
                /* Get Statistics for JP Person */
                Criteria criteriaJP = this.hibernateTemplate.getSessionFactory().getCurrentSession()
                        .createCriteria(JPDO.class);
                criteriaJP.add(Restrictions.eq("person.personId", person.getPersonId()));

                JPDO jp = (JPDO) criteriaJP.uniqueResult();

                JPStatisticsBO jpStatsBO = new JPStatisticsBO(
                        NameUtil.getName(person.getFirstName(), person.getLastName())/* fullName */,
                        jp.getRegNumber()/* regNumber */,
                        this.summonsCount(roadOpDO.getRoadOperationId(), person.getPersonId(),
                                Constants.PersonType.JP)/* countSummonsSigned */,
                        assignedPerson.getAttended()/* attended */);

                roadOpStats.getJPSummary().add(jpStatsBO);

            } else if (personType.getPersonTypeId().equalsIgnoreCase(Constants.PersonType.TA_STAFF)) {
                /* Get Statistics for TA Staff. */
                Criteria criteriaTA = this.hibernateTemplate.getSessionFactory().getCurrentSession()
                        .createCriteria(TAStaffDO.class);
                criteriaTA.add(Restrictions.eq("person.personId", person.getPersonId()));
                //System.out.println("Person ID is " + person.getPersonId());
                TAStaffDO ta = (TAStaffDO) criteriaTA.uniqueResult();

                TAOfficerStatisticsBO taStatsBO = new TAOfficerStatisticsBO(
                        NameUtil.getName(person.getFirstName(), person.getLastName())/* fullName */,
                        ta.getStaffTypeCode()/* staffType */,
                        this.complianceCount(roadOpDO.getRoadOperationId(), person.getPersonId(),
                                personType.getPersonTypeId())/* countCompliancyChecks */,
                        this.roadCheckTypeCount(roadOpDO.getRoadOperationId(),
                                Constants.RoadCheckType.MOTOR_VEHICLE, person.getPersonId(),
                                personType.getPersonTypeId())/* countMVChecks */,
                        this.roadCheckTypeCount(roadOpDO.getRoadOperationId(),
                                Constants.RoadCheckType.DRIVERS_LICENCE, person.getPersonId(),
                                personType.getPersonTypeId())/* countDLChecks */,
                        this.roadCheckTypeCount(roadOpDO.getRoadOperationId(), Constants.RoadCheckType.BADGE,
                                person.getPersonId(), personType.getPersonTypeId())/* countBadgeChecks */,
                        this.roadCheckTypeCount(roadOpDO.getRoadOperationId(), Constants.RoadCheckType.CITATION,
                                person.getPersonId(), personType.getPersonTypeId())/* countCitationChecks */,
                        this.roadCheckTypeCount(roadOpDO.getRoadOperationId(),
                                Constants.RoadCheckType.ROAD_LICENCE, person.getPersonId(),
                                personType.getPersonTypeId())/* countRLChecks */,
                        this.roadCheckTypeCount(roadOpDO.getRoadOperationId(), Constants.RoadCheckType.OTHER,
                                person.getPersonId(), personType.getPersonTypeId())/* countOtherChecks */,
                        this.warningNoticeCount(roadOpDO.getRoadOperationId(), person.getPersonId(),
                                personType.getPersonTypeId())/* countWarningNoticesIssued */,
                        this.summonsCount(roadOpDO.getRoadOperationId(), person.getPersonId(),
                                personType.getPersonTypeId())/* countSummonsIssued */,
                        this.roadCheckOutcomeCount(roadOpDO.getRoadOperationId(),
                                Constants.OutcomeType.VEHICLE_SEIZURE, person.getPersonId(),
                                personType.getPersonTypeId())/* countVehiclesSeized */,
                        assignedPerson.getAttended()/* attended */,
                        this.roadCheckOutcomeCount(roadOpDO.getRoadOperationId(),
                                Constants.OutcomeType.REMOVE_PLATES, person.getPersonId(),
                                personType.getPersonTypeId())/* countPlatesRemoved */,
                        this.roadCheckOutcomeCount(roadOpDO.getRoadOperationId(),
                                Constants.OutcomeType.WARNED_FOR_PROSECUTION, person.getPersonId(),
                                personType.getPersonTypeId())/* warningsForProcecution */,
                        this.roadCheckOutcomeCount(roadOpDO.getRoadOperationId(),
                                Constants.OutcomeType.ALL_IN_ORDER, person.getPersonId(),
                                personType.getPersonTypeId())/* allInOrders */,
                        ta.getStaffId()/* staff id */);

                roadOpStats.getTAOfficerSummary().add(taStatsBO);
            } else if (personType.getPersonTypeId().equalsIgnoreCase(Constants.PersonType.ITA_EXAMINER)) {
                /* Get Statistics for ITA Examiner */
                Criteria criteriaITA = this.hibernateTemplate.getSessionFactory().getCurrentSession()
                        .createCriteria(ITAExaminerDO.class);
                criteriaITA.add(Restrictions.eq("person.personId", person.getPersonId()));

                ITAExaminerDO ita = (ITAExaminerDO) criteriaITA.uniqueResult();

                ITAExaminerStatisticsBO itaStats = new ITAExaminerStatisticsBO(
                        NameUtil.getName(person.getFirstName(), person.getLastName()),
                        assignedPerson.getAttended(), ita.getExaminerId());

                roadOpStats.getITAExaminerSummary().add(itaStats);
            } else if (personType.getPersonTypeId().equalsIgnoreCase(Constants.PersonType.POLICE_OFFCER)) {
                /* Get Statistics for Police Officer */
                Criteria criteriaITA = this.hibernateTemplate.getSessionFactory().getCurrentSession()
                        .createCriteria(PoliceOfficerDO.class);
                criteriaITA.add(Restrictions.eq("person.personId", person.getPersonId()));

                PoliceOfficerDO police = (PoliceOfficerDO) criteriaITA.uniqueResult();

                PoliceOfficerStatisticsBO policeStats = new PoliceOfficerStatisticsBO(
                        NameUtil.getName(person.getFirstName(), person.getLastName()),
                        assignedPerson.getAttended(), police.getPolOfficerCompNo());

                roadOpStats.getPoliceOfficerSummary().add(policeStats);
            }

        }
        /* ____________________________________ */

        currentRegionStats.getRoadOperationStatistics().add(roadOpStats);
    }
    /* ________________________________ */

    roadOpReportStatsOuput.setRegionStatistics(regionStats);
    return roadOpReportStatsOuput;
}

From source file:fsl.ta.toms.roms.dao.impl.ReportDAOImpl.java

@Override
public CourtCasesOpenedReportBO unclosedCourtCasesReport(CourtScheduleCriteriaBO reportCriteria,
        String userName, String userRegion, ReportDisplayInformationDAOImpl reportDisplayInformation) {

    Criteria criteria = this.hibernateTemplate.getSessionFactory().getCurrentSession()
            .createCriteria(CourtAppearanceDO.class, "CApp");

    /* Create aliases */
    criteria.createAlias("CApp.status", "st");
    criteria.createAlias("CApp.court", "c");
    criteria.createAlias("CApp.courtCase", "CCase");
    criteria.createAlias("CCase.summons", "su");
    criteria.createAlias("su.offender", "o");
    criteria.createAlias("su.roadOperation", "r");
    criteria.createAlias("su.taStaff", "tas");
    criteria.createAlias("tas.person", "taPerson");
    /* _____________________________ */

    /*//w w w .  j  av a2  s .  c om
     * Criterion mainCriterion =
     * Restrictions.between("CCase.auditEntry.createDTime",
     * DateUtils.searchDateFormater
     * (reportCriteria.getTrialStartDate(),DateUtils.SEARCHDATETYPE.START),
     * DateUtils
     * .searchDateFormater(reportCriteria.getTrialEndDate(),DateUtils
     * .SEARCHDATETYPE.END));
     */

    Criterion mainCriterion = Restrictions.in("CCase.courtCaseId", getCourtCasesIdsForTrialDateRange(
            reportCriteria.getTrialStartDate(), reportCriteria.getTrialEndDate()));

    Criterion subCriterion = Restrictions
            .eq("CCase.status.statusId", fsl.ta.toms.roms.constants.Constants.Status.COURT_CASE_OPEN)
            .ignoreCase();

    if (reportCriteria.getCourtId() != null && reportCriteria.getCourtId() > 0) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("CCase.court.courtId", reportCriteria.getCourtId()));
    }

    if (reportCriteria.getOffenderId() != null && reportCriteria.getOffenderId() > 0) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("o.personId", reportCriteria.getOffenderId()));
    }

    if (reportCriteria.getRoadOperationId() != null && reportCriteria.getRoadOperationId() > 0) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("r.roadOperationId", reportCriteria.getRoadOperationId()));
    }

    if (reportCriteria.getTAOfficeRegions() != null && reportCriteria.getTAOfficeRegions().size() > 0) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.in("r.officeLocCode", reportCriteria.getTAOfficeRegions()));
    }

    if (reportCriteria.getTAStaffId() != null && !reportCriteria.getTAStaffId().isEmpty()) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("tas.staffId", reportCriteria.getTAStaffId().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getTAStaffTRN())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("taPerson.trnNbr", reportCriteria.getTAStaffTRN().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getRoadOperationName())) {
        subCriterion = Restrictions.and(subCriterion, Restrictions
                .like("r.operationName", reportCriteria.getRoadOperationName().trim(), MatchMode.ANYWHERE)
                .ignoreCase());
    }

    if (StringUtil.isSet(reportCriteria.getOffenderFirstName())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions
                        .like("o.firstName", reportCriteria.getOffenderFirstName().trim(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    if (StringUtil.isSet(reportCriteria.getOffenderLastName())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.like("o.lastName", reportCriteria.getOffenderLastName().trim(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    if (StringUtil.isSet(reportCriteria.getOffenderTRN())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("o.trnNbr", reportCriteria.getOffenderTRN().trim()));
    }

    criteria.add(Restrictions.and(mainCriterion, subCriterion));

    criteria.addOrder(Order.asc("CCase.courtCaseId"));
    criteria.addOrder(Order.asc("CApp.CourtDTime"));

    criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);

    List criteriaResults = criteria.list();

    Iterator iterator = criteriaResults.iterator();

    List<CourtScheduleReportResultsBO> results = new ArrayList<CourtScheduleReportResultsBO>();

    String stringStartDate = "";
    String stringEndDate = "";
    try {
        stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getTrialStartDate());
        stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getTrialEndDate());
    } catch (Exception exe) {

    }

    /* Get report criteria names and descriptions */
    reportCriteria.setTAOfficeDescription(this.getTAOfficeRegionDescription(userRegion));
    reportCriteria.setCourtDescription(this.getCourtDescription(reportCriteria.getCourtId()));

    if (reportCriteria.getOffenderId() != null && reportCriteria.getOffenderId() > 0)
        reportCriteria.setOffenderFullName(this.getPersonName(reportCriteria.getOffenderId()));
    else if (StringUtil.isSet(reportCriteria.getOffenderTRN()))
        reportCriteria.setOffenderFullName(this.getPersonName(reportCriteria.getOffenderTRN()));

    reportCriteria.setTAOfficeDescription(this.getTAOfficeRegionDescription(userRegion));

    if (StringUtil.isSet(reportCriteria.getTAStaffId()))
        reportCriteria.setTAStaffFullName(this.getTAStaffName(reportCriteria.getTAStaffId()));
    else if (StringUtil.isSet(reportCriteria.getTAStaffTRN()))
        reportCriteria.setTAStaffFullName(this.getTAStaffName(reportCriteria.getTAStaffTRN()));

    List<CourtCasesOpenedReportResultsBO> courtCaseList = new ArrayList<CourtCasesOpenedReportResultsBO>();

    CourtCasesOpenedReportResultsBO courtCaseResult = null;

    CourtCasesOpenedReportBO courtCaseReportResults = new CourtCasesOpenedReportBO(userName, userRegion,
            reportDisplayInformation.applicationName,
            reportDisplayInformation.getCourtCasesOpenedReportTitle() + stringStartDate + " TO "
                    + stringEndDate,
            reportCriteria.getTrialStartDate(), reportCriteria.getTrialEndDate(),
            reportCriteria.getSearchCriteriaString(), this.getTAOfficeRegionDescription(userRegion),
            courtCaseList);

    Integer currentCourtCaseID = -1;

    while (iterator.hasNext()) {
        Map result = (Map) iterator.next();

        /* Map Results to DOs */
        CourtAppearanceDO courtApp = (CourtAppearanceDO) result.get("CApp");
        CourtCaseDO courtCase = (CourtCaseDO) result.get("CCase");
        StatusDO status = (StatusDO) result.get("st");
        CourtDO court = (CourtDO) result.get("c");
        SummonsDO summons = (SummonsDO) result.get("su");
        PersonDO offender = (PersonDO) result.get("o");
        RoadOperationDO roadOp = (RoadOperationDO) result.get("r");
        TAStaffDO taStaff = (TAStaffDO) result.get("tas");
        /* ____________________________ */

        if (courtCaseResult == null) {
            courtCaseResult = new CourtCasesOpenedReportResultsBO(
                    this.getPersonName(offender.getPersonId())/* offenderFullName */,
                    this.getTAStaffName(taStaff.getStaffId())/* tAStaffFullName */,
                    roadOp.getOperationName()/* roadOperationName */,
                    summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getOffence()
                            .getDescription()/* offenceDetails */,
                    roadOp.getOfficeLocCode()/* tAOfficeRegion */,
                    this.getTAOfficeRegionDescription(roadOp.getOfficeLocCode())/* tAOfficeRegionDescription */,
                    court.getDescription()/* courtDetails */,
                    courtCase.getStatus() != null ? courtCase.getStatus().getDescription()
                            : ""/* Court Case Status */,
                    courtCase.getVerdict() != null ? courtCase.getVerdict().getVerdict_desc() : ""/* verdict */,
                    summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getAuditEntry()
                            .getCreateDTime()/* offenceDate */,
                    courtApp.getCourtDTime()/* courtDate */,
                    new ArrayList<CourtAppearanceReportResultsBO>()/* courtAppearanceList */);

            courtCaseReportResults.getCourtCaseList().add(courtCaseResult);

        } else if (courtCaseResult != null
                && currentCourtCaseID.intValue() != courtCase.getCourtCaseId().intValue()) {
            courtCaseResult = new CourtCasesOpenedReportResultsBO(
                    this.getPersonName(offender.getPersonId())/* offenderFullName */,
                    this.getTAStaffName(taStaff.getStaffId())/* tAStaffFullName */,
                    roadOp.getOperationName()/* roadOperationName */,
                    summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getOffence()
                            .getDescription()/* offenceDetails */,
                    roadOp.getOfficeLocCode()/* tAOfficeRegion */,
                    this.getTAOfficeRegionDescription(roadOp.getOfficeLocCode())/* tAOfficeRegionDescription */,
                    court.getDescription()/* courtDetails */,
                    courtCase.getStatus() != null ? courtCase.getStatus().getDescription()
                            : ""/* Court Case Status */,
                    courtCase.getVerdict() != null ? courtCase.getVerdict().getVerdict_desc() : ""/* verdict */,
                    summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getAuditEntry()
                            .getCreateDTime()/* offenceDate */,
                    courtApp.getCourtDTime()/* courtDate */,
                    new ArrayList<CourtAppearanceReportResultsBO>()/* courtAppearanceList */);

            courtCaseReportResults.getCourtCaseList().add(courtCaseResult);

        }

        currentCourtCaseID = courtCase.getCourtCaseId();

        CourtAppearanceReportResultsBO courtAppearance = new CourtAppearanceReportResultsBO(
                courtApp.getStatus() != null ? courtApp.getStatus().getDescription()
                        : ""/* courtAppearanceStatus */,
                courtApp.getPlea() != null ? courtApp.getPlea().getDescription() : ""/* plea */,
                courtApp.getComment()/* comment */, courtApp.getCourtDTime()/* CourtDTime */,
                courtApp.getCourtRuling() != null ? courtApp.getCourtRuling().getDescription()
                        : ""/* courtRuling */,
                court.getDescription()/* courtDetails */);

        courtCaseResult.getCourtAppearanceList().add(courtAppearance);

    }

    return courtCaseReportResults;
}

From source file:fsl.ta.toms.roms.dao.impl.ReportDAOImpl.java

@Override
public WarningNoProsecutionReportBO warningNoProsecutionReport(WarningNoProReportCriteriaBO reportCriteria,
        String userName, String userRegion, ReportDisplayInformationDAOImpl reportDisplayInformation) {
    Criteria criteria = this.hibernateTemplate.getSessionFactory().getCurrentSession()
            .createCriteria(WarningNoProsecutionDO.class, "wnp");

    /* Create aliases */
    criteria.createAlias("wnp.roadOperation", "roadOp");
    criteria.createAlias("wnp.offender", "off");
    criteria.createAlias("wnp.taStaff", "staff");
    criteria.createAlias("wnp.status", "status");
    criteria.createAlias("roadOp.category", "cat");
    criteria.createAlias("staff.person", "taPerson");
    /* _____________ */

    Criterion mainCriterion = Restrictions.sqlRestriction("1=1");

    if (reportCriteria.getOperationStartDate() != null && reportCriteria.getOperationEndDate() != null) {
        Date reportStartDate = DateUtils.searchDateFormater(reportCriteria.getOperationStartDate(),
                DateUtils.SEARCHDATETYPE.START);
        Date reportEndDate = DateUtils.searchDateFormater(reportCriteria.getOperationEndDate(),
                DateUtils.SEARCHDATETYPE.END);

        Criterion scheduledDate = Restrictions.or(
                Restrictions.between("roadOp.scheduledStartDtime", reportStartDate, reportEndDate),
                Restrictions.between("roadOp.scheduledEndDtime", reportStartDate, reportEndDate));

        Criterion actualDate = Restrictions.or(
                Restrictions.between("roadOp.actualStartDtime", reportStartDate, reportEndDate),
                Restrictions.between("roadOp.actualEndDtime", reportStartDate, reportEndDate));

        mainCriterion = Restrictions.and(mainCriterion, Restrictions.or(scheduledDate, actualDate));
    }/*from  w  ww  .ja  v  a2  s. c  o  m*/

    if (reportCriteria.getIssuedStartDate() != null && reportCriteria.getIssuedEndDate() != null) {
        Date reportStartDate = DateUtils.searchDateFormater(reportCriteria.getIssuedStartDate(),
                DateUtils.SEARCHDATETYPE.START);
        Date reportEndDate = DateUtils.searchDateFormater(reportCriteria.getIssuedEndDate(),
                DateUtils.SEARCHDATETYPE.END);

        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.between("wnp.issueDate", reportStartDate, reportEndDate));
    }

    if (reportCriteria.getPrintStartDate() != null && reportCriteria.getPrintEndDate() != null) {
        Date reportStartDate = DateUtils.searchDateFormater(reportCriteria.getPrintStartDate(),
                DateUtils.SEARCHDATETYPE.START);
        Date reportEndDate = DateUtils.searchDateFormater(reportCriteria.getPrintEndDate(),
                DateUtils.SEARCHDATETYPE.END);

        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.between("wnp.printDtime", reportStartDate, reportEndDate));
    }

    if (StringUtil.isSet(reportCriteria.getOffenderFirstName())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions
                        .like("off.firstName", reportCriteria.getOffenderFirstName().trim(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    if (reportCriteria.getOffenderId() != null && reportCriteria.getOffenderId() > 0) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("off.personId", reportCriteria.getOffenderId()));
    }

    if (StringUtil.isSet(reportCriteria.getOffenderLastName())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions
                        .like("off.lastName", reportCriteria.getOffenderLastName().trim(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    if (StringUtil.isSet(reportCriteria.getOffenderTRN())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("off.trnNbr", reportCriteria.getOffenderTRN().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getOperationCategory())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("cat.categoryId", reportCriteria.getOperationCategory().trim()));
    }

    if (reportCriteria.getRoadOperationId() != null && reportCriteria.getRoadOperationId() > 0) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("roadOp.roadOperationId", reportCriteria.getRoadOperationId()));
    }

    if (StringUtil.isSet(reportCriteria.getRoadOperationName())) {
        mainCriterion = Restrictions.and(mainCriterion, Restrictions
                .like("roadOp.operationName", reportCriteria.getRoadOperationName().trim(), MatchMode.ANYWHERE)
                .ignoreCase());
    }

    if (StringUtil.isSet(reportCriteria.getStatus())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("status.statusId", reportCriteria.getStatus().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getTAOfficeRegion())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("roadOp.officeLocCode", reportCriteria.getTAOfficeRegion().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getTAStaffId())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("staff.staffId", reportCriteria.getTAStaffId().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getTAStaffTRN())) {
        mainCriterion = Restrictions.and(mainCriterion,
                Restrictions.eq("taPerson.trnNbr", reportCriteria.getTAStaffTRN().trim()));
    }

    criteria.add(mainCriterion);

    String stringStartDate = "";
    String stringEndDate = "";
    String dateTypeUsed = "";
    Date startDate = null;
    Date endDate = null;
    try {
        if (reportCriteria.getOperationStartDate() != null && reportCriteria.getOperationEndDate() != null) {
            startDate = reportCriteria.getOperationStartDate();
            endDate = reportCriteria.getOperationEndDate();
            stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getOperationStartDate());
            stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getOperationEndDate());

            dateTypeUsed = "Operation";
        } else if (reportCriteria.getPrintStartDate() != null && reportCriteria.getPrintEndDate() != null) {
            startDate = reportCriteria.getPrintStartDate();
            endDate = reportCriteria.getPrintEndDate();
            stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getPrintStartDate());
            stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getPrintEndDate());

            dateTypeUsed = "Print";
        } else if (reportCriteria.getIssuedStartDate() != reportCriteria.getIssuedEndDate()) {
            startDate = reportCriteria.getIssuedStartDate();
            endDate = reportCriteria.getIssuedEndDate();
            stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getIssuedStartDate());
            stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getIssuedEndDate());

            dateTypeUsed = "Issued";
        }
    } catch (Exception exe) {

    }
    /* Get report criteria names and descriptions */
    if (reportCriteria.getOffenderId() != null && reportCriteria.getOffenderId() > 0) {
        reportCriteria.setOffenderName(this.getPersonName(reportCriteria.getOffenderId()));
    } else if (StringUtil.isSet(reportCriteria.getOffenderTRN())) {
        reportCriteria.setOffenderName(this.getPersonName(reportCriteria.getOffenderTRN()));
    }

    reportCriteria
            .setOperationCategoryDesc(this.getOperationCategoryDesc(reportCriteria.getOperationCategory()));
    reportCriteria.setRoadOperationName(reportCriteria.getRoadOperationName());

    reportCriteria.setTAOfficeRegionDesc(this.getTAOfficeRegionDescription(reportCriteria.getTAOfficeRegion()));

    if (StringUtil.isSet(reportCriteria.getTAStaffId()))
        reportCriteria.setTAStaffName(this.getTAStaffName(reportCriteria.getTAStaffId()));
    else if (StringUtil.isSet(reportCriteria.getTAStaffTRN()))
        reportCriteria.setTAStaffName(this.getPersonName(reportCriteria.getTAStaffTRN()));

    criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);

    Iterator iterator = criteria.list().iterator();

    List<WarningNoProsecutionDetailsBO> warningNoProDetailsList = new ArrayList<WarningNoProsecutionDetailsBO>();

    while (iterator.hasNext()) {
        Map result = (Map) iterator.next();

        RoadOperationDO roadOp = (RoadOperationDO) result.get("roadOp");
        PersonDO offender = (PersonDO) result.get("off");
        TAStaffDO taStaff = (TAStaffDO) result.get("staff");
        StatusDO status = (StatusDO) result.get("status");
        CDCategoryDO category = (CDCategoryDO) result.get("cat");
        WarningNoProsecutionDO warningNoPro = (WarningNoProsecutionDO) result.get("wnp");

        Integer roadCheckId = warningNoPro.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getRoadCheckId();

        WarningNoProsecutionDetailsBO warningNoProItem = new WarningNoProsecutionDetailsBO(
                this.getPersonName(taStaff.getPerson().getPersonId())/* tAStaffFullName */,
                taStaff.getStaffId()/* tAStaffID */,
                this.getTeamLeadName(roadOp.getRoadOperationId(),
                        taStaff.getPerson().getPersonId())/* tATeamLeadFullName */,
                this.getPersonName(offender.getPersonId())/* offenderFullName */,
                this.getDLNumFromDLCheck(roadCheckId)/* offendersDriverLicence */,
                this.getVehicleDetailsFromMVCheck(roadCheckId)/* offenderVehicleDetials */,
                this.getVehicleOwenersFullNames(roadCheckId)/* vehicleOwnerFullNames */,
                roadOp.getOperationName()/* roadOperationName */,
                warningNoPro.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck().getCompliance()
                        .getCompliancyArtery().getShortDescription()/* locationOfOffence */,
                warningNoPro.getOffenceDtime()/* dateOfOffence */,
                warningNoPro.getManualSerialNumber()/* manualSerialNumber */,
                status.getDescription()/* status */,
                warningNoPro.getRoadCheckOffenceOutcome().getRoadCheckOffence().getOffence()
                        .getDescription()/* offenceDescription */,
                warningNoPro.getAllegation()/* allegation */, warningNoPro.getRoadCheckOffenceOutcome()
                        .getRoadCheckOffence().getOffence().getShortDescription()/* offenceShortDescription */);

        warningNoProDetailsList.add(warningNoProItem);
    }

    return new WarningNoProsecutionReportBO(userName, userRegion, reportDisplayInformation.applicationName,
            reportDisplayInformation.warningNoticeNoProsecutionReportTitle + " (" + dateTypeUsed + ") "
                    + stringStartDate + " TO " + stringEndDate,
            startDate, endDate, reportCriteria.getSearchCriteriaString(), userRegion, warningNoProDetailsList);
}

From source file:gov.nih.nci.caarray.dao.AbstractCaArrayDaoImpl.java

License:BSD License

Criterion createExample(Object entity, MatchMode matchMode, boolean excludeNulls, boolean excludeZeroes,
        Collection<String> excludeProperties) {
    final Example example = Example.create(entity).enableLike(matchMode).ignoreCase();
    if (excludeZeroes) {
        example.excludeZeroes();//from  www .j a v  a2s  . c  om
    } else if (!excludeNulls) {
        example.excludeNone();
    }
    for (final String property : excludeProperties) {
        example.excludeProperty(property);
    }

    // ID property is not handled by Example, so we have to special case it
    final PersistentClass pclass = getClassMapping(entity.getClass());
    Object idVal = null;
    if (pclass != null && pclass.hasIdentifierProperty()) {
        try {
            idVal = PropertyUtils.getProperty(entity, pclass.getIdentifierProperty().getName());
        } catch (final Exception e) {
            LOG.warn("Could not retrieve identifier value in a by example query, ignoring it", e);
        }
    }
    if (idVal == null) {
        return example;
    } else {
        return Restrictions.and(Restrictions.idEq(idVal), example);
    }
}

From source file:gov.nih.nci.cabio.annotations.ArrayAnnotationServiceImpl.java

License:BSD License

public Collection<SNP> getSnpsNearGene(String symbol, Long kbUpstream, Long kbDownstream, String assembly)
        throws ApplicationException {

    List params = new ArrayList();
    params.add(assembly);//  ww w  . ja  va2  s  .  c o m
    params.add(symbol);
    params.add(symbol);
    params.add(taxon);

    Collection<GenePhysicalLocation> result = appService.query(new HQLCriteria(GET_SNPS_NEAR_GENE_HQL,
            QueryUtils.createCountQuery(GET_SNPS_NEAR_GENE_HQL), params));

    if (result == null || result.isEmpty())
        throw new ApplicationException("No genes found for symbol " + symbol);

    Collection<GenomeRange> rawRanges = new TreeSet<GenomeRange>();

    Long upPad = kbUpstream * 1000;
    Long downPad = kbDownstream * 1000;
    Long chromosomeId = null;

    // construct all padded ranges
    for (GenePhysicalLocation pl : result) {
        if (chromosomeId == null)
            chromosomeId = pl.getChromosome().getId();

        rawRanges.add(new GenomeRange(pl.getChromosomalStartPosition() - upPad,
                pl.getChromosomalEndPosition() + downPad));
    }

    // combine overlapping ranges
    Collection<GenomeRange> ranges = new ArrayList<GenomeRange>();
    GenomeRange last = null;
    for (GenomeRange gr : rawRanges) {
        if ((last == null) || (last.getEnd() < gr.getStart() - 1)) {
            ranges.add(gr);
            last = gr;
        } else if (gr.getEnd() > last.getEnd()) {
            last.setEnd(gr.getEnd());
        }
    }

    // query for SNPs on the given assembly in the combined ranges        
    DetachedCriteria dc = DetachedCriteria.forClass(SNP.class).createCriteria("physicalLocationCollection")
            .add(Restrictions.eq("assembly", assembly));

    Disjunction or = Restrictions.disjunction();
    for (GenomeRange gr : ranges) {
        or.add(Restrictions.and(Restrictions.ge("chromosomalStartPosition", gr.getStart()),
                Restrictions.le("chromosomalEndPosition", gr.getEnd())));
    }

    dc.add(or).addOrder(Order.asc("chromosomalStartPosition"))
            .add(Restrictions.sqlRestriction("{alias}.chromosome_id = ?", chromosomeId, Hibernate.LONG));

    List<SNP> results = appService.query(dc);
    return results;
}

From source file:gov.nih.nci.cananolab.service.sample.helper.AdvancedSampleServiceHelper.java

License:BSD License

private Criterion getDatumCriterion(CharacterizationQueryBean charQuery) {
    Criterion datumCrit = null;/*from w  ww  .  j  a  v  a  2  s . c  om*/
    // datum name
    if (!StringUtils.isEmpty(charQuery.getDatumName())) {
        datumCrit = Restrictions.eq("name", charQuery.getDatumName());
    }
    // datum value
    if (!StringUtils.isEmpty(charQuery.getDatumValue())) {
        Float datumValue = new Float(charQuery.getDatumValue());
        datumCrit = Restrictions.and(datumCrit, Restrictions.eq("valueUnit", charQuery.getDatumValueUnit()));
        if ("=".equals(charQuery.getOperand())) {
            datumCrit = Restrictions.and(datumCrit, Expression.eq("value", datumValue));
        } else if (">".equals(charQuery.getOperand())) {
            datumCrit = Restrictions.and(datumCrit, Expression.gt("value", datumValue));
        } else if (">=".equals(charQuery.getOperand())) {
            datumCrit = Restrictions.and(datumCrit, Expression.ge("value", datumValue));
        } else if ("<".equals(charQuery.getOperand())) {
            datumCrit = Restrictions.and(datumCrit, Expression.lt("value", datumValue));
        } else if ("<=".equals(charQuery.getOperand())) {
            datumCrit = Restrictions.and(datumCrit, Expression.le("value", datumValue));
        }
    }
    return datumCrit;
}