Java tutorial
/**<pre> *========================================================================== * * Copyright: (C) IBM Corporation 2010 -- IBM Internal Use Only * *========================================================================== * * FILE: OwnerInfoDataServiceImpl.java * CREATOR: Eldon Barrows * DEPT: GBS PAK * DATE: 01/05/2011 * *-PURPOSE----------------------------------------------------------------- * This is the implementation of IOwnerInfoDataService * *------------------------------------------------------------------------- * * *-CHANGE LOG-------------------------------------------------------------- * 01/05/2011 Eldon Initial coding. *========================================================================== * </pre> */ package com.rta.vsd.data.service.impl; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import org.apache.log4j.Logger; import org.hibernate.Criteria; import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Property; import org.hibernate.criterion.Restrictions; import org.hibernate.transform.AliasToBeanResultTransformer; import com.rta.vsd.data.DataServiceContext; import com.rta.vsd.data.service.IDataService; import com.rta.vsd.data.service.IOwnerInfoDataService; import com.rta.vsd.dto.VsdOwnerInfo; import com.rta.vsd.dto.VsdVehicleInfo; import com.rta.vsd.dto.custom.CustomOperatorDTO; import com.rta.vsd.dto.custom.VehiclePlate; import com.rta.vsd.exception.data.VSDDataAccessException; import com.rta.vsd.utility.VSDLogger; /** * This is the implementation of IOwnerInfoDataService * * @author Eldon Barrows * */ public class OwnerInfoDataServiceImpl extends DataServiceImpl implements IOwnerInfoDataService { private static Logger logger = VSDLogger.init(OwnerInfoDataServiceImpl.class.getName()); /** * * Save an owners information * * @author Eldon Barrows * @param dsContext * @param retrieveArabicData * @param vsdVehicleInfo * @return VsdOwnerInfo * @throws VSDDataAccessException */ public VsdOwnerInfo saveOwnerInfo(DataServiceContext dsContext, boolean retrieveArabicData, VsdOwnerInfo vsdOwnerInfo) throws VSDDataAccessException { logger.info("saveOwnerInfo -- START"); try { Session session = (Session) dsContext.getInternalContext(); session.save(vsdOwnerInfo); } catch (Exception ex) { logger.error("An error occured in saveOwnerInfo()"); throw new VSDDataAccessException(ex.getMessage(), ex); } logger.info("saveOwnerInfo -- END"); return vsdOwnerInfo; } /** * * Gets a list of operators with the most violations between two specified dates. * * @author Eldon Barrows * @param dsContext * @param retrieveArabicData * @param fromDate * @param toDate * @param top * @return List<CustomOperatorDTO> * @throws VSDDataAccessException */ public List<CustomOperatorDTO> getViolatingOperatorsByDateRange(DataServiceContext dsContext, boolean retrieveArabicData, Date fromDate, Date toDate, int top) throws VSDDataAccessException { logger.info("getViolatingOperatorsByDateRange -- START"); /*SELECT * FROM ( SELECT COUNT(DISTINCT(v.VIOLATION_ID)) AS "violationCount", oi.OWNER_NAME AS "operatorName", oi.OWNER_NAME_A AS \"operatorNameA\", oi.TRAFFIC_FILE_NUMBER AS \"trafficFileNumber\" FROM VSD_VIOLATION v JOIN VSD_INSPECTION i ON v.VIOLATION_ID = i.VIOLATION_ID AND i.IS_DELETED = 'F' JOIN VSD_VEHICLE_INFO vi ON i.VEHICLE_INFO_ID = vi.VEHICLE_INFO_ID AND vi.IS_DELETED = 'F' JOIN VSD_OWNER_INFO oi ON vi.VEHICLE_INFO_ID = oi.VEHICLE_INFO_ID AND oi.IS_DELETED = 'F' WHERE v.IS_DELETED = 'F' AND v.REPORTED_DATE BETWEEN to_date('2011-05-15','YYYY-MM-DD') AND to_date('2011-11-30', 'YYYY-MM-DD') GROUP BY oi.OWNER_NAME, oi.OWNER_NAME_A, oi.TRAFFIC_FILE_NUMBER ORDER BY COUNT(DISTINCT(i.VIOLATION_ID)) DESC ) WHERE rownum < 11*/ try { Session session = (Session) dsContext.getInternalContext(); String defaultSchema = DataServiceImpl.DEFAULT_SCHEMA_NAME; StringBuffer query = new StringBuffer( "SELECT * FROM ( SELECT COUNT(DISTINCT(v.VIOLATION_ID)) AS \"violationCount\", oi.OWNER_NAME AS \"operatorName\", oi.OWNER_NAME_A AS \"operatorNameA\", oi.TRAFFIC_FILE_NUMBER AS \"trafficFileNumber\" " + " FROM " + defaultSchema + ".VSD_VIOLATION v JOIN " + defaultSchema + ".VSD_INSPECTION i ON v.VIOLATION_ID = i.VIOLATION_ID AND i.IS_DELETED = '" + IDataService.BOOL_FALSE + "' " + " JOIN " + defaultSchema + ".VSD_VEHICLE_INFO vi ON i.VEHICLE_INFO_ID = vi.VEHICLE_INFO_ID AND vi.IS_DELETED = '" + IDataService.BOOL_FALSE + "' " + " JOIN " + defaultSchema + ".VSD_OWNER_INFO oi ON vi.VEHICLE_INFO_ID = oi.VEHICLE_INFO_ID AND oi.IS_DELETED = '" + IDataService.BOOL_FALSE + "' " + " WHERE v.IS_DELETED = '" + IDataService.BOOL_FALSE + "' "); if (fromDate != null && toDate != null) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); query.append(" AND to_date(to_char(v.REPORTED_DATE,'YYYY-MM-DD'),'YYYY-MM-DD') BETWEEN to_date('" + dateFormat.format(fromDate) + "','YYYY-MM-DD') AND to_date('" + dateFormat.format(toDate) + "','YYYY-MM-DD') "); } query.append( " GROUP BY oi.OWNER_NAME, oi.OWNER_NAME_A, oi.TRAFFIC_FILE_NUMBER ORDER BY COUNT(DISTINCT(i.VIOLATION_ID)) DESC ) WHERE rownum < " + (top + 1)); List<CustomOperatorDTO> results = session.createSQLQuery(query.toString()) .addScalar("violationCount", Hibernate.LONG).addScalar("operatorName") .addScalar("operatorNameA").addScalar("trafficFileNumber") .setResultTransformer(new AliasToBeanResultTransformer(CustomOperatorDTO.class)).list(); logger.info("getViolatingOperatorsByDateRange -- END"); return results; } catch (Exception ex) { logger.error("An error occured in getViolatingOperatorsByDateRange()"); logger.error(ex); throw new VSDDataAccessException(ex.getMessage(), ex); } } /** * * Gets the owner info from the latest plate details provided. * * @author Eldon Barrows * @param dsContext * @param retrieveArabicData * @param plateDetails * @return * @throws VSDDataAccessException */ public VsdOwnerInfo getOwnerInfoByLatestPlateDetails(DataServiceContext dsContext, boolean retrieveArabicData, VehiclePlate plateDetails) throws VSDDataAccessException { logger.info("getOwnerInfoByLatestPlateDetails -- START"); try { Session session = (Session) dsContext.getInternalContext(); DetachedCriteria dc = DetachedCriteria.forClass(VsdVehicleInfo.class, "vi") .add(Restrictions.eq("vi.isDeleted", IDataService.BOOL_FALSE)) .createCriteria("vi.vsdOwnerInfos", "oi", Criteria.INNER_JOIN) .add(Restrictions.eq("oi.isDeleted", IDataService.BOOL_FALSE)); dc.setProjection(Projections.max("vi.createdTimestamp")); if (plateDetails != null && plateDetails.getPlateCategory() != null && !plateDetails.getPlateCategory().equals("")) { dc.add(Restrictions.eq("vi.vehiclePlateCategory", plateDetails.getPlateCategory())); } if (plateDetails != null && plateDetails.getPlateCode() != null && !plateDetails.getPlateCode().equals("")) { dc.add(Restrictions.eq("vi.vehiclePlateCode", plateDetails.getPlateCode())); } if (plateDetails != null && plateDetails.getPlateNumber() != null && !plateDetails.getPlateNumber().equals("")) { dc.add(Restrictions.eq("vi.vehiclePlateNumber", plateDetails.getPlateNumber())); } if (plateDetails != null && plateDetails.getPlateSource() != null && !plateDetails.getPlateSource().equals("")) { dc.add(Restrictions.eq("vi.vehiclePlateSource", plateDetails.getPlateSource())); } Criteria crit = session.createCriteria(VsdVehicleInfo.class, "vInfo") .createCriteria("vInfo.vsdOwnerInfos", "oi", Criteria.INNER_JOIN, Restrictions.eq("oi.isDeleted", IDataService.BOOL_FALSE)) .add(Restrictions.eq("vInfo.isDeleted", IDataService.BOOL_FALSE)) .add(Property.forName("vInfo.createdTimestamp").in(dc)); // crit.setProjection(Projections.property("vInfo.vehicleInfoId")); if (plateDetails != null && plateDetails.getPlateCategory() != null && !plateDetails.getPlateCategory().equals("")) { crit.add(Restrictions.eq("vInfo.vehiclePlateCategory", plateDetails.getPlateCategory())); } if (plateDetails != null && plateDetails.getPlateCode() != null && !plateDetails.getPlateCode().equals("")) { crit.add(Restrictions.eq("vInfo.vehiclePlateCode", plateDetails.getPlateCode())); } if (plateDetails != null && plateDetails.getPlateNumber() != null && !plateDetails.getPlateNumber().equals("")) { crit.add(Restrictions.eq("vInfo.vehiclePlateNumber", plateDetails.getPlateNumber())); } if (plateDetails != null && plateDetails.getPlateSource() != null && !plateDetails.getPlateSource().equals("")) { crit.add(Restrictions.eq("vInfo.vehiclePlateSource", plateDetails.getPlateSource())); } crit.addOrder(Order.desc("vInfo.createdTimestamp")); List<VsdVehicleInfo> vehicles = crit.list(); if (vehicles == null || vehicles.isEmpty()) return null; Long vehicleInfoId = (Long) vehicles.get(0).getVehicleInfoId(); System.out.println("vehicleInfoId " + vehicleInfoId); VsdOwnerInfo ownerInfo = (VsdOwnerInfo) session.createCriteria(VsdOwnerInfo.class, "oi") .add(Restrictions.eq("oi.isDeleted", IDataService.BOOL_FALSE)) .add(Restrictions.eq("oi.vehicleInfoId", vehicleInfoId)).uniqueResult(); logger.info("getOwnerInfoByLatestPlateDetails -- END"); return ownerInfo; } catch (Exception ex) { logger.error("An error occured in getOwnerInfoByLatestPlateDetails()"); throw new VSDDataAccessException(ex.getMessage(), ex); } } // /** // * // * Searches for the fleet operator based on the criteria provided // * // * @author Eldon Barrows // * @param dsContext // * @param retrieveArabicData // * @param fleetSearchCriteria // * @return List<FleetSearchResult> // * @throws VSDDataAccessException // */ // public List<FleetSearchResult> searchFleetOperator(DataServiceContext dsContext, boolean retrieveArabicData, FleetSearchCriteria fleetSearchCriteria) throws VSDDataAccessException { // logger.info("searchFleetOperator -- START"); // List<FleetSearchResult> result = null; // try { // Session session = (Session) dsContext.getInternalContext(); // logger.info("got context"); // ProjectionList projectionList = Projections.projectionList(); // projectionList.add(Projections.property("owner.ownerName"), "operatorName"); // projectionList.add(Projections.property("owner.tradeLicenseNumber"), "tradeLicenseNumber"); // projectionList.add(Projections.property("owner.trafficFileNumber"), "trafficFileNumber"); //// projectionList.add(Projections.countDistinct("vehicleInfo"), "totalNumOfVehicles"); //// projectionList.add(Projections.countDistinct("vehicleInfo"), "totalNumOfViolations"); // logger.info("made projections"); // Criteria criteria = session.createCriteria(VsdVehicleInfo.class, "vehicleInfo") // .add(Restrictions.eq("vehicleInfo.isDeleted", IDataService.BOOL_FALSE)); // if(fleetSearchCriteria.getPlateNumber() != null && fleetSearchCriteria.getPlateNumber() != "") { // criteria.add(Restrictions.eq("vehicleInfo.vehiclePlateNumber", fleetSearchCriteria.getPlateNumber())); // } // if(fleetSearchCriteria.getPlateCategory() != null && fleetSearchCriteria.getPlateCategory() != "") { // criteria.add(Restrictions.eq("vehicleInfo.vehiclePlateCategory", fleetSearchCriteria.getPlateCategory())); // } // if(fleetSearchCriteria.getPlateCode() != null && fleetSearchCriteria.getPlateCode() != "") { // criteria.add(Restrictions.eq("vehicleInfo.vehiclePlateCode", fleetSearchCriteria.getPlateCode())); // } // if(fleetSearchCriteria.getEmirate() != null && fleetSearchCriteria.getEmirate() != "") { // criteria.add(Restrictions.eq("vehicleInfo.vehicleCountry", fleetSearchCriteria.getEmirate())); // } // criteria.createCriteria("vehicleInfo.vsdOwnerInfos", "owner") // .add(Restrictions.or(Restrictions.eq("owner.isDeleted", IDataService.BOOL_FALSE), Restrictions.isNull("owner.isDeleted"))); // if(fleetSearchCriteria.getOperatorName() != null && fleetSearchCriteria.getOperatorName()!= "") { // criteria.add(Restrictions.ilike("owner.ownerName", fleetSearchCriteria.getOperatorName())); // } // if(fleetSearchCriteria.getTradeLicenseNumber() != null && fleetSearchCriteria.getTradeLicenseNumber() != "") { // criteria.add(Restrictions.ilike("owner.tradeLicenseNumber", fleetSearchCriteria.getTradeLicenseNumber())); // } // if(fleetSearchCriteria.getTrafficFileNumber() != null && fleetSearchCriteria.getTrafficFileNumber() != "") { // criteria.add(Restrictions.ilike("owner.trafficFileNumber", fleetSearchCriteria.getTrafficFileNumber())); // } // criteria.createCriteria("vehicleInfo.vsdInspections","inspections") // .add(Restrictions.or(Restrictions.eq("inspections.isDeleted", IDataService.BOOL_FALSE), Restrictions.isNull("inspections.isDeleted"))) // .createCriteria("inspections.vsdViolation", "violations") // .add(Restrictions.or(Restrictions.eq("violations.isDeleted", IDataService.BOOL_FALSE), Restrictions.isNull("violations.isDeleted"))); // logger.info("after criteria"); // // criteria.setProjection(projectionList); // logger.info("after setprojection"); // result = criteria.setResultTransformer(new AliasToBeanResultTransformer(FleetSearchResult.class)).list(); // // }catch(Exception ex) { // logger.error("An error occured in searchFleetOperator()"); // throw new VSDDataAccessException(ex.getMessage(),ex); // } // logger.info("searchFleetOperator -- END"); // return result; // } }