001 package org.kuali.ole.patron.controller; 002 003 import org.apache.commons.lang.StringUtils; 004 import org.apache.commons.net.ntp.TimeStamp; 005 import org.apache.log4j.Logger; 006 import org.kuali.ole.OLEConstants; 007 import org.kuali.ole.patron.api.OlePatronDefinition; 008 import org.kuali.ole.patron.bo.*; 009 import org.kuali.ole.service.OlePatronHelperService; 010 import org.kuali.ole.service.OlePatronHelperServiceImpl; 011 import org.kuali.ole.service.OlePatronMaintenanceDocumentServiceImpl; 012 import org.kuali.ole.service.OlePatronService; 013 import org.kuali.rice.core.api.criteria.CriteriaLookupService; 014 import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader; 015 import org.kuali.rice.kim.impl.identity.address.EntityAddressBo; 016 import org.kuali.rice.kim.impl.identity.affiliation.EntityAffiliationBo; 017 import org.kuali.rice.kim.impl.identity.email.EntityEmailBo; 018 import org.kuali.rice.kim.impl.identity.employment.EntityEmploymentBo; 019 import org.kuali.rice.kim.impl.identity.entity.EntityBo; 020 import org.kuali.rice.kim.impl.identity.phone.EntityPhoneBo; 021 import org.kuali.rice.krad.maintenance.MaintenanceDocument; 022 import org.kuali.rice.krad.maintenance.MaintenanceUtils; 023 import org.kuali.rice.krad.service.KRADServiceLocator; 024 import org.kuali.rice.krad.service.MaintenanceDocumentService; 025 import org.kuali.rice.krad.uif.UifParameters; 026 import org.kuali.rice.krad.uif.view.View; 027 import org.kuali.rice.krad.util.GlobalVariables; 028 import org.kuali.rice.krad.util.KRADConstants; 029 import org.kuali.rice.krad.web.controller.MaintenanceDocumentController; 030 import org.kuali.rice.krad.web.form.DocumentFormBase; 031 import org.kuali.rice.krad.web.form.MaintenanceForm; 032 import org.kuali.rice.krad.web.form.UifFormBase; 033 import org.springframework.stereotype.Controller; 034 import org.springframework.validation.BindingResult; 035 import org.springframework.web.bind.annotation.ModelAttribute; 036 import org.springframework.web.bind.annotation.RequestMapping; 037 import org.springframework.web.bind.annotation.RequestMethod; 038 import org.springframework.web.multipart.MultipartFile; 039 import org.springframework.web.servlet.ModelAndView; 040 041 import javax.imageio.ImageIO; 042 import javax.servlet.http.HttpServletRequest; 043 import javax.servlet.http.HttpServletResponse; 044 import java.awt.*; 045 import java.awt.image.BufferedImage; 046 import java.io.ByteArrayInputStream; 047 import java.io.ByteArrayOutputStream; 048 import java.text.SimpleDateFormat; 049 import java.util.*; 050 import java.util.List; 051 052 /** 053 * .OlePatronMaintenanceDocumentController invokes MaintenanceDocumentController and returns instance of MaintenanceDocumentService. 054 */ 055 @Controller 056 @RequestMapping(value = "/patronMaintenance") 057 public class OlePatronMaintenanceDocumentController extends MaintenanceDocumentController { 058 059 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(OlePatronMaintenanceDocumentController.class); 060 private OlePatronService olePatronService; 061 private OlePatronHelperService olePatronHelperService = new OlePatronHelperServiceImpl(); 062 private byte[] imageInByte; 063 064 public OlePatronService getOlePatronService() { 065 if (olePatronService != null) { 066 olePatronService = GlobalResourceLoader.getService(OLEConstants.OlePatron.OLE_PATRON_SERVICE); 067 } 068 return olePatronService; 069 } 070 071 /** 072 * This method returns the instance of olePatronMaintenanceDocumentService 073 * @return olePatronMaintenanceDocumentService(MaintenanceDocumentService) 074 */ 075 @Override 076 protected MaintenanceDocumentService getMaintenanceDocumentService() { 077 return GlobalResourceLoader.getService(OLEConstants.OlePatron.OLE_PATRON_MAINTENANCE_DOC_SERVICE); 078 } 079 080 /** 081 * Use to create a link delete in the lookup result action field which will use to delete patron record.. 082 * @param form 083 * @param result 084 * @param request 085 * @param response 086 * @return ModelAndView 087 * @throws Exception 088 */ 089 @RequestMapping(params = "methodToCall=" + "maintenanceDelete") 090 public ModelAndView maintenanceDelete(@ModelAttribute("KualiForm") MaintenanceForm form, BindingResult result, 091 HttpServletRequest request, HttpServletResponse response) throws Exception { 092 LOG.debug(" Inside maintenanceDelete "); 093 setupMaintenanceForDelete(form, request, OLEConstants.OlePatron.OLE_PATRON_DELETE); 094 return getUIFModelAndView(form); 095 } 096 097 /** 098 * To delete the whole patron document. 099 * @param form 100 * @param result 101 * @param request 102 * @param response 103 * @return Close the document 104 * @throws Exception 105 */ 106 @RequestMapping(params = "methodToCall=" + "deleteDocument") 107 public ModelAndView deleteDocument(@ModelAttribute("KualiForm") MaintenanceForm form, BindingResult result, 108 HttpServletRequest request, HttpServletResponse response) throws Exception { 109 110 LOG.debug(" Inside deleteDocument "); 111 MaintenanceDocument document = form.getDocument(); 112 OlePatronDocument olePatronDocument = new OlePatronDocument(); 113 try { 114 if (document.getDocumentDataObject() != null) { 115 olePatronDocument = (OlePatronDocument) document.getDocumentDataObject(); 116 if (olePatronDocument != null && olePatronDocument.getOlePatronId() != null) { 117 boolean deletePatronDetail = olePatronHelperService.deletePatron(olePatronDocument); 118 if (deletePatronDetail) { 119 return close(form, result, request, response); 120 } else { 121 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_MESSAGES, OLEConstants.OlePatron.ERROR_PATRON_HAS_LOAN); 122 return getUIFModelAndView(form); 123 } 124 } else { 125 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_MESSAGES, OLEConstants.OlePatron.ERROR_PATRON_NOT_FOUND); 126 return getUIFModelAndView(form); 127 } 128 } 129 } catch (Exception ex) { 130 LOG.error(ex.getMessage()); 131 } 132 return close(form, result, request, response); 133 } 134 135 136 /** 137 * This method populates confirmation to delete the document. 138 * 139 * @param form 140 * @param request 141 * @param maintenanceAction 142 */ 143 protected void setupMaintenanceForDelete(MaintenanceForm form, HttpServletRequest request, String maintenanceAction) { 144 LOG.debug(" Inside setupMaintenanceForDelete "); 145 MaintenanceDocument document = form.getDocument(); 146 if (document == null) { 147 document = getMaintenanceDocumentService() 148 .setupNewMaintenanceDocument(form.getDataObjectClassName(), form.getDocTypeName(), 149 maintenanceAction); 150 151 form.setDocument(document); 152 form.setDocTypeName(document.getDocumentHeader().getWorkflowDocument().getDocumentTypeName()); 153 } 154 155 form.setMaintenanceAction(maintenanceAction); 156 OlePatronMaintenanceDocumentServiceImpl olePatronMaintenanceDocumentServicec = (OlePatronMaintenanceDocumentServiceImpl) getMaintenanceDocumentService(); 157 olePatronMaintenanceDocumentServicec.setupMaintenanceObjectForDelete(document, maintenanceAction, request.getParameterMap()); 158 MaintenanceUtils.checkForLockingDocument(document, false); 159 } 160 161 /** 162 * To submit or route the patron maintenance document 163 * @param form document form base containing the document instance that will be routed 164 * @return ModelAndView 165 */ 166 @Override 167 @RequestMapping(params = "methodToCall=route") 168 public ModelAndView route(@ModelAttribute("KualiForm") DocumentFormBase form, BindingResult result, 169 HttpServletRequest request, HttpServletResponse response){ 170 171 LOG.debug(" Inside route method of patron maintenance controller "); 172 ModelAndView modelAndView; 173 MaintenanceForm mainForm = (MaintenanceForm) form; 174 MaintenanceDocument document = (MaintenanceDocument) form.getDocument(); 175 176 SimpleDateFormat fmt = new SimpleDateFormat(OLEConstants.OlePatron.PATRON_MAINTENANCE_DATE_FORMAT); 177 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject(); 178 List<OleProxyPatronDocument> oleProxyPatronDocumentList = newOlePatronDocument.getOleProxyPatronDocuments(); 179 List<OleProxyPatronDocument> proxyPatronDocumentList = new ArrayList<OleProxyPatronDocument>(); 180 if (oleProxyPatronDocumentList.size() > 0) { 181 for (OleProxyPatronDocument oleProxyPatronDocument : oleProxyPatronDocumentList) { 182 Map<String, String> proxyMap = new HashMap<String, String>(); 183 proxyMap.put(OLEConstants.OlePatron.PATRON_ID, oleProxyPatronDocument.getProxyPatronId()); 184 OlePatronDocument tempDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, proxyMap); 185 if (tempDocument != null) { 186 oleProxyPatronDocument.setProxyPatronBarcode(tempDocument.getBarcode()); 187 oleProxyPatronDocument.setProxyPatronFirstName(tempDocument.getEntity().getNames().get(0).getFirstName()); 188 oleProxyPatronDocument.setProxyPatronLastName(tempDocument.getEntity().getNames().get(0).getLastName()); 189 proxyPatronDocumentList.add(oleProxyPatronDocument); 190 } 191 } 192 newOlePatronDocument.setOleProxyPatronDocuments(proxyPatronDocumentList); 193 } 194 195 List<OleProxyPatronDocument> proxyPatron = newOlePatronDocument.getOleProxyPatronDocuments(); 196 String patronId = ""; 197 Date proxyActDate = null; 198 Date proxyExpDate = null; 199 200 201 if (proxyPatron.size() > 0) { 202 for (OleProxyPatronDocument proxy : proxyPatron) { 203 patronId = proxy.getProxyPatronId(); 204 proxyActDate = proxy.getProxyPatronActivationDate(); 205 proxyExpDate = proxy.getProxyPatronExpirationDate(); 206 Map<String, String> patronMap = new HashMap<String, String>(); 207 patronMap.put(OLEConstants.OlePatron.PATRON_ID, patronId); 208 OlePatronDocument patronDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap); 209 if (patronDocument != null) { 210 Date patronExpDate = patronDocument.getExpirationDate(); 211 Date patronActDate = patronDocument.getActivationDate(); 212 if (proxyActDate != null) { 213 if (patronActDate != null && fmt.format(patronActDate).compareTo(fmt.format(proxyActDate)) > 0) { 214 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_REAL_PATRON_ACTIVATION_DATE); 215 return getUIFModelAndView(mainForm); 216 } 217 } 218 if (proxyExpDate != null) { 219 if (patronExpDate != null) { 220 if (fmt.format(proxyExpDate).compareTo(fmt.format(patronExpDate)) > 0) { 221 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_REAL_PATRON_EXPIRATION_DATE); 222 return getUIFModelAndView(mainForm); 223 } 224 } 225 } 226 } 227 boolean lostBarcodeCheck = olePatronHelperService.CheckBarcodeAndLostBarcode(newOlePatronDocument); 228 if(lostBarcodeCheck) { 229 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_BARCODE_INVALID); 230 return getUIFModelAndView(mainForm); 231 } 232 boolean isBorrowerTypeActive = olePatronHelperService.isBorrowerTypeActive(newOlePatronDocument); 233 if(!isBorrowerTypeActive) { 234 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_BORROWER_TYPE_INACTIVE); 235 return getUIFModelAndView(mainForm); 236 } 237 if (patronId != null && newOlePatronDocument.getOlePatronId() != null && newOlePatronDocument.getOlePatronId().equals(patronId)) { 238 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PROXY_PATRON_ID); 239 return getUIFModelAndView(mainForm); 240 } else if (proxyActDate != null && fmt.format(new Date(System.currentTimeMillis())).compareTo(fmt.format(proxyActDate)) > 0) { 241 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PROXY_PATRON_ACTIVATION_DATE); 242 return getUIFModelAndView(mainForm); 243 } else { 244 if (proxyExpDate != null) { 245 if (proxyActDate != null) { 246 if ((fmt.format(proxyActDate).compareTo(fmt.format(proxyExpDate)) >= 0)) { 247 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PROXY_PATRON_EXPIRATION_DATE); 248 return getUIFModelAndView(mainForm); 249 } 250 } else if (fmt.format(new Date(System.currentTimeMillis())).compareTo(fmt.format(proxyExpDate)) > 0) { 251 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PROXY_PATRON_EXPIRATION_DATE); 252 return getUIFModelAndView(mainForm); 253 } 254 } 255 } 256 } 257 } 258 if (newOlePatronDocument.isGeneralBlock() && (newOlePatronDocument.getGeneralBlockNotes() == null || newOlePatronDocument.getGeneralBlockNotes().equals(""))) { 259 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_GENERAL_BLOCK_NOTES, OLEConstants.OlePatron.PATRON_GENERAL_BLOCK_NOTES); 260 return getUIFModelAndView(mainForm); 261 } else if (newOlePatronDocument.getActivationDate() != null && fmt.format(new Date(System.currentTimeMillis())).compareTo(fmt.format(newOlePatronDocument.getActivationDate())) > 0) { 262 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_ACTIVATION_DATE); 263 return getUIFModelAndView(mainForm); 264 } else if ((newOlePatronDocument.getExpirationDate() != null && newOlePatronDocument.getActivationDate() != null && fmt.format(newOlePatronDocument.getActivationDate()).compareTo(fmt.format(newOlePatronDocument.getExpirationDate())) >= 0) || (newOlePatronDocument.getExpirationDate() != null && fmt.format(new Date(System.currentTimeMillis())).compareTo(fmt.format(newOlePatronDocument.getExpirationDate())) > 0)) { 265 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_EXPIRATION_DATE); 266 return getUIFModelAndView(mainForm); 267 } else if (newOlePatronDocument.getOlePatronId() != null) { 268 Map<String, String> tempId = new HashMap<String, String>(); 269 tempId.put(OLEConstants.OlePatron.PATRON_ID, newOlePatronDocument.getOlePatronId()); 270 OlePatronDocument tempDocument = (OlePatronDocument) KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, tempId); 271 if (tempDocument != null) { 272 if (tempDocument.getEntity() != null) { 273 List<EntityAddressBo> addressBoList = tempDocument.getEntity().getEntityTypeContactInfos().get(0).getAddresses(); 274 if (addressBoList.size() > 0) { 275 for (int i = 0; i < addressBoList.size(); i++) { 276 EntityAddressBo entityAddressBo = addressBoList.get(i); 277 Map<String, Object> criteria = new HashMap<String, Object>(); 278 criteria.put(OLEConstants.OlePatron.OLE_ADDRESS_ID, entityAddressBo.getId()); 279 OleAddressBo oleAddressBo = KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OleAddressBo.class, criteria); 280 281 if (oleAddressBo != null) { 282 if (oleAddressBo.getAddressValidTo() != null && oleAddressBo.getAddressValidFrom() != null && fmt.format(oleAddressBo.getAddressValidFrom()).compareTo(fmt.format(oleAddressBo.getAddressValidTo())) >= 0) { 283 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_VALID_ADDRESS_TO_DATE); 284 return getUIFModelAndView(mainForm); 285 } 286 } 287 if (entityAddressBo != null) { 288 KRADServiceLocator.getBusinessObjectService().delete(oleAddressBo); 289 KRADServiceLocator.getBusinessObjectService().delete(entityAddressBo); 290 } 291 } 292 } 293 List<EntityEmailBo> emailBoList = tempDocument.getEntity().getEntityTypeContactInfos().get(0).getEmailAddresses(); 294 if (emailBoList.size() > 0) { 295 KRADServiceLocator.getBusinessObjectService().delete(emailBoList); 296 } 297 List<EntityPhoneBo> phoneBoList = tempDocument.getEntity().getEntityTypeContactInfos().get(0).getPhoneNumbers(); 298 if (phoneBoList.size() > 0) { 299 KRADServiceLocator.getBusinessObjectService().delete(phoneBoList); 300 } 301 List<OlePatronNotes> patronNotesList = tempDocument.getNotes(); 302 if (patronNotesList.size() > 0) { 303 KRADServiceLocator.getBusinessObjectService().delete(patronNotesList); 304 } 305 List<OlePatronLostBarcode> lostBarcodeList = tempDocument.getLostBarcodes(); 306 if (lostBarcodeList.size() > 0) { 307 KRADServiceLocator.getBusinessObjectService().delete(lostBarcodeList); 308 } 309 List<EntityEmploymentBo> employmentBoList = tempDocument.getEntity().getEmploymentInformation(); 310 if (employmentBoList.size() > 0) { 311 KRADServiceLocator.getBusinessObjectService().delete(employmentBoList); 312 } 313 List<EntityAffiliationBo> affiliationBoList = tempDocument.getEntity().getAffiliations(); 314 if (affiliationBoList.size() > 0) { 315 KRADServiceLocator.getBusinessObjectService().delete(affiliationBoList); 316 } 317 List<OleProxyPatronDocument> proxyPatronDocuments = tempDocument.getOleProxyPatronDocuments(); 318 if (proxyPatronDocuments.size() > 0) { 319 KRADServiceLocator.getBusinessObjectService().delete(proxyPatronDocuments); 320 } 321 List<OlePatronLocalIdentificationBo> patronLocalIdentificationBos = tempDocument.getOlePatronLocalIds(); 322 if(patronLocalIdentificationBos.size() > 0) { 323 KRADServiceLocator.getBusinessObjectService().delete(patronLocalIdentificationBos); 324 } 325 } 326 } 327 } 328 return super.route(mainForm, result, request, response); 329 } 330 331 332 @RequestMapping(params = "methodToCall=lostBarcode") 333 public ModelAndView lostBarcode(@ModelAttribute("KualiForm") DocumentFormBase form, BindingResult result, 334 HttpServletRequest request, HttpServletResponse response) { 335 336 LOG.debug(" Inside route method of patron maintenance controller "); 337 ModelAndView modelAndView; 338 MaintenanceForm mainForm = (MaintenanceForm) form; 339 MaintenanceDocument document = (MaintenanceDocument) form.getDocument(); 340 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject(); 341 String lostBarcode = newOlePatronDocument.getBarcode(); 342 OlePatronLostBarcode olePatronLostBarcode = new OlePatronLostBarcode(); 343 olePatronLostBarcode.setInvalidOrLostBarcodeNumber(lostBarcode); 344 olePatronLostBarcode.setInvalidOrLostBarcodeEffDate(new Date()); 345 olePatronLostBarcode.setRevertBarcode(true); 346 List<OlePatronLostBarcode> lostBarcodes = newOlePatronDocument.getLostBarcodes(); 347 List<OlePatronLostBarcode> lostBarcodeList = new ArrayList<OlePatronLostBarcode>(); 348 lostBarcodeList.add(olePatronLostBarcode); 349 if (lostBarcodes.size() > 0) { 350 for (OlePatronLostBarcode lostPatronBarcode : lostBarcodes) { 351 lostPatronBarcode.setRevertBarcode(false); 352 lostBarcodeList.add(lostPatronBarcode); 353 } 354 } 355 newOlePatronDocument.setLostBarcodes(lostBarcodeList); 356 newOlePatronDocument.setBarcode(null); 357 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ENTER_PATRON_BARCODE); 358 return getUIFModelAndView(mainForm); 359 } 360 361 @RequestMapping(params = "methodToCall=uploadImage") 362 public ModelAndView uploadImage(@ModelAttribute("KualiForm") DocumentFormBase form, BindingResult result, 363 HttpServletRequest request, HttpServletResponse response) { 364 ModelAndView modelAndView; 365 MaintenanceForm mainForm = (MaintenanceForm) form; 366 MaintenanceDocument document = (MaintenanceDocument) form.getDocument(); 367 OlePatronDocument newOlePatronDocument = (OlePatronDocument) document.getNewMaintainableObject().getDataObject(); 368 MultipartFile multipartFile = mainForm.getAttachmentFile(); 369 String fileName = multipartFile.getOriginalFilename(); 370 if (validateFile(multipartFile.getOriginalFilename())) { 371 try { 372 byte[] fileContent = multipartFile.getBytes(); 373 BufferedImage patronImage = ImageIO.read(new ByteArrayInputStream(fileContent)); 374 if(patronImage.getWidth() >= 100 || patronImage.getHeight() >= 100) { 375 BufferedImage resizedImage = new BufferedImage(100,100,1); 376 Graphics2D g = resizedImage.createGraphics(); 377 g.drawImage(patronImage, 0, 0, 100, 100, null); 378 g.dispose(); 379 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 380 ImageIO.write(resizedImage, "jpg", baos); 381 byte[] res=baos.toByteArray(); 382 imageInByte=baos.toByteArray(); 383 newOlePatronDocument.setPatronPhotograph(res); 384 } else { 385 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_PHOTOGRAPH_SIZE); 386 return getUIFModelAndView(mainForm); 387 } 388 } catch (Exception ex) { 389 LOG.error(ex.getMessage()); 390 } 391 } else { 392 GlobalVariables.getMessageMap().putErrorWithoutFullErrorPath(KRADConstants.GLOBAL_ERRORS, OLEConstants.OlePatron.ERROR_PATRON_PHOTOGRAPH_FORMAT); 393 return getUIFModelAndView(mainForm); 394 } 395 return getUIFModelAndView(mainForm); 396 } 397 398 /** 399 * This method validate the image file type. 400 * @param inputFile 401 * @return boolean 402 */ 403 public boolean validateFile(String inputFile) { 404 return (inputFile.contains(".jpg") || inputFile.contains(".png") || inputFile.contains(".jpeg") || inputFile.contains(".gif")? true:false); 405 } 406 407 @RequestMapping(params = "methodToCall=getImage") 408 public ModelAndView getImage(@ModelAttribute("KualiForm") MaintenanceForm form, BindingResult result, 409 HttpServletRequest request, HttpServletResponse response) { 410 try { 411 String patronId = request.getParameter(OLEConstants.OlePatron.PATRON_ID); 412 if (patronId != null) { 413 Map patronMap = new HashMap(); 414 patronMap.put(OLEConstants.OlePatron.PATRON_ID, patronId); 415 OlePatronDocument olePatronDocument = KRADServiceLocator.getBusinessObjectService().findByPrimaryKey(OlePatronDocument.class, patronMap); 416 byte[] patronPhoto = olePatronDocument.getPatronPhotograph(); 417 if (patronPhoto != null) { 418 if(imageInByte == null || patronPhoto.equals(imageInByte)) { 419 response.setContentType("image/jpg"); 420 response.getOutputStream().write(patronPhoto); 421 } else { 422 response.setContentType("image/jpg"); 423 response.getOutputStream().write(imageInByte); 424 } 425 } else { 426 response.setContentType("image/jpg"); 427 response.getOutputStream().write(imageInByte); 428 } 429 } else { 430 if (imageInByte != null) { 431 response.setContentType("image/jpg"); 432 response.getOutputStream().write(imageInByte); 433 } 434 } 435 } catch (Exception ex) { 436 ex.printStackTrace(); 437 } 438 return null; 439 } 440 }