001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.kfs.module.purap.dataaccess.impl;
017
018 import java.text.DecimalFormat;
019 import java.text.NumberFormat;
020
021 import org.apache.commons.lang.StringUtils;
022 import org.apache.commons.logging.Log;
023 import org.apache.commons.logging.LogFactory;
024 import org.kuali.kfs.module.purap.PurapConstants;
025 import org.kuali.kfs.module.purap.dataaccess.ImageDao;
026 import org.kuali.kfs.module.purap.document.ContractManagerAssignmentDocument;
027 import org.kuali.kfs.module.purap.exception.PurapConfigurationException;
028 import org.kuali.kfs.sys.KFSConstants;
029 import org.kuali.kfs.sys.service.impl.KfsParameterConstants;
030 import org.kuali.rice.kns.dao.impl.PlatformAwareDaoBaseOjb;
031 import org.kuali.rice.kns.service.KualiConfigurationService;
032 import org.kuali.rice.kns.service.ParameterService;
033
034 /**
035 * OJB Implementation of ImageDao.
036 */
037 public class ImageDaoNet extends PlatformAwareDaoBaseOjb implements ImageDao {
038 private static Log LOG = LogFactory.getLog(ImageDaoNet.class);
039
040 private KualiConfigurationService configurationService;
041 private ParameterService parameterService;
042
043 public void setParameterService(ParameterService parameterService) {
044 this.parameterService = parameterService;
045 }
046
047 public void setConfigurationService(KualiConfigurationService configurationService) {
048 this.configurationService = configurationService;
049 }
050
051 /**
052 * @see org.kuali.kfs.module.purap.dataaccess.ImageDao#getPurchasingDirectorImage(java.lang.String, java.lang.String, java.lang.String)
053 */
054 public String getPurchasingDirectorImage(String key, String campusCode, String location) {
055 LOG.debug("getPurchasingDirectorImage() started");
056
057 String prefix = parameterService.getParameterValue(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.PURCHASING_DIRECTOR_IMAGE_PREFIX);
058 String extension = "." + parameterService.getParameterValue(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.PURCHASING_DIRECTOR_IMAGE_EXTENSION);
059 return getFile(prefix, campusCode, key, extension, location);
060 }
061
062 /**
063 * @see org.kuali.kfs.module.purap.dataaccess.ImageDao#getContractManagerImage(java.lang.String, java.lang.Integer, java.lang.String)
064 */
065 public String getContractManagerImage(String key, Integer contractManagerId, String location) {
066 LOG.debug("getContractManagerImage() started");
067
068 NumberFormat formatter = new DecimalFormat("00");
069 String cm = formatter.format(contractManagerId);
070
071 String prefix = parameterService.getParameterValue(ContractManagerAssignmentDocument.class, PurapConstants.CONTRACT_MANAGER_IMAGE_PREFIX);
072 String extension = "." + parameterService.getParameterValue(ContractManagerAssignmentDocument.class, PurapConstants.CONTRACT_MANAGER_IMAGE_EXTENSION);
073 return getFile(prefix, cm, key, extension, location);
074 }
075
076 /**
077 * @see org.kuali.kfs.module.purap.dataaccess.ImageDao#getLogo(java.lang.String, java.lang.String, java.lang.String)
078 */
079 public String getLogo(String key, String campusCode, String location) {
080 LOG.debug("getLogo() started. key is " + key + ". campusCode is " + campusCode);
081
082 String prefix = parameterService.getParameterValue(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.LOGO_IMAGE_PREFIX);
083 String extension = "." + parameterService.getParameterValue(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.LOGO_IMAGE_EXTENSION);
084 return getFile(prefix, campusCode, key, extension, location);
085 }
086
087 /**
088 * Copy a file from a web location to the local system.
089 *
090 * @param prefix - Prefix for the file name
091 * @param fileKey - File key for file
092 * @param key - Unique key for the file
093 * @param location - location of file
094 * @return - location to copied file
095 */
096 protected String getFile(String prefix, String fileKey, String key, String extension, String location) {
097 LOG.debug("getFile() started");
098
099 // try retrieving file URL from parameter
100 String urlpath = parameterService.getParameterValue(KfsParameterConstants.PURCHASING_DOCUMENT.class, PurapConstants.PDF_IMAGE_LOCATION_URL);
101 // if parameter value is empty, then try retrieving it from property
102 if (StringUtils.isEmpty(urlpath)) {
103 urlpath = configurationService.getPropertyString(KFSConstants.EXTERNALIZABLE_IMAGES_URL_KEY);
104 }
105
106 if (urlpath == null) {
107 throw new PurapConfigurationException("Application Setting " + KFSConstants.EXTERNALIZABLE_IMAGES_URL_KEY + " is missing");
108 }
109 if (location == null) {
110 throw new PurapConfigurationException("Valid location to store temp image files was null");
111 }
112
113 String completeUrl = urlpath + prefix + "_" + fileKey.toLowerCase() + extension;
114 LOG.debug("getFile() URL = " + completeUrl);
115 return completeUrl;
116 }
117
118 }