@SuppressWarnings("unchecked") private List<DeliveryOrder> ManifestFileToDo(final ManifestFile order) throws DataConvertException, UserExistsException { List<DeliveryOrder> deliveryOrderList = new ArrayList<DeliveryOrder>(); if (order != null && order.getFileHeaderOrDeliveryOrFileEnd() != null && order.getFileHeaderOrDeliveryOrFileEnd().size() > 0) { ManifestFile.FileHeader fileHeader = (ManifestFile.FileHeader) order.getFileHeaderOrDeliveryOrFileEnd().get(0); String plantCode = fileHeader.getPCODE(); if (plantCode.trim().length() > 3) { plantCode = plantCode.substring(plantCode.length() - 3); } String fileId = fileHeader.getFILID(); DetachedCriteria criteria0 = DetachedCriteria.forClass(Plant.class); criteria0.add(Restrictions.like("code", plantCode, MatchMode.END)); List<Plant> plantList = plantManager.findByCriteria(criteria0); Plant plant = null; if (plantList != null && plantList.size() > 0) { plant = plantList.get(0); } else { log.error("Error find plant with code " + fileHeader.getPCODE()); return null; } for (Object obj : order.getFileHeaderOrDeliveryOrFileEnd()) { if (obj instanceof ManifestFile.Delivery) { ManifestFile.Delivery delivery = (ManifestFile.Delivery) obj; DeliveryOrder deliveryOrder = parseDelivery(delivery, plant, fileId); DetachedCriteria criteria = DetachedCriteria.forClass(DeliveryOrder.class); criteria.add(Restrictions.eq("murn", deliveryOrder.getMurn())); // criteria.add(Restrictions.eq("fileIdentitfier", deliveryOrder.getFileIdentitfier())); List<DeliveryOrder> doList = this.findByCriteria(criteria); if (doList != null && doList.size() > 0) { String doNo = doList.get(0).getDoNo(); this.remove(doNo); deliveryOrder.setDoNo(doNo); } this.save(deliveryOrder); deliveryOrderList.add(deliveryOrder); this.flushSession(); } } } return deliveryOrderList; }