FilePathUtils.java
Home
/
sm-shop /
src /
main /
java /
com /
salesmanager /
shop /
utils /
FilePathUtils.java
package com.salesmanager.shop.utils;
import javax.servlet.http.HttpServletRequest;
import javax.inject.Inject;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import com.salesmanager.core.model.catalog.product.file.DigitalProduct;
import com.salesmanager.core.model.content.FileContentType;
import com.salesmanager.core.model.merchant.MerchantStore;
import com.salesmanager.core.business.utils.CoreConfiguration;
import com.salesmanager.shop.constants.ApplicationConstants;
import com.salesmanager.shop.constants.Constants;
import com.salesmanager.shop.model.order.ReadableOrderProductDownload;
@Component
public class FilePathUtils {
@Inject
private CoreConfiguration coreConfiguration;
@Inject
@Qualifier("img")
private ImageFilePath imageUtils;
private final static String DOWNLOADS = "/downloads/";
private final static String DOUBLE_SLASH = "://";
/**
* Builds a static content content file path that can be used by image servlet
* utility for getting the physical image
* @param store
* @param imageName
* @return
*/
public String buildStaticFilePath(MerchantStore store, String imageName) {
return new StringBuilder().append(Constants.FILES_URI).append(Constants.SLASH).append(store.getCode()).append(Constants.SLASH).append(imageName).toString();
}
public String buildAdminDownloadProductFilePath(MerchantStore store, DigitalProduct digitalProduct) {
return new StringBuilder().append(Constants.ADMIN_URI).append(Constants.FILES_URI).append(DOWNLOADS).append(store.getCode()).append(Constants.SLASH).append(digitalProduct.getProductFileName()).toString();
}
public String buildOrderDownloadProductFilePath(MerchantStore store, ReadableOrderProductDownload digitalProduct, Long orderId) {
return new StringBuilder().append(Constants.SHOP_URI).append(Constants.ORDER_DOWNLOAD_URI).append(Constants.SLASH).append(orderId).append(Constants.SLASH).append(digitalProduct.getId()).append(Constants.URL_EXTENSION).toString();
}
public String buildStaticFileAbsolutePath(MerchantStore store, String fileName) {
String absolutePath = null;
if(!StringUtils.isBlank(imageUtils.getBasePath()) &&
imageUtils.getBasePath().startsWith(Constants.HTTP_SCHEME)) {
StringBuilder filePath = new StringBuilder();
filePath.append(imageUtils.getBasePath()).append(Constants.FILES_URI).append(Constants.SLASH).append(store.getCode()).append(Constants.SLASH).append(FileContentType.STATIC_FILE).append(Constants.SLASH).append(fileName).toString();
absolutePath = filePath.toString();
} else {
//Map<String,String> configurations = (Map<String, String>)request.getSession().getAttribute(Constants.STORE_CONFIGURATION);
String scheme = Constants.HTTP_SCHEME;
if(coreConfiguration!=null) {
scheme = (String)coreConfiguration.getProperty("SHOP_SCHEME");
}
StringBuilder storePath = new StringBuilder();
storePath.append(scheme).append("://")
.append(store.getDomainName())
.append(coreConfiguration.getProperty("CONTEXT_PATH"));
//storePath.append(storePath.toString()).append(buildStaticFilePath(store,fileName));
//absolutePath = storePath.toString();
storePath.append(buildStaticFilePath(store,fileName));
absolutePath = storePath.toString();
}
return absolutePath;
}
/**
* Builds http[s]://<domain name>/<context path>
* @param store
* @param request
* @return
*/
public String buildStoreUri(MerchantStore store, HttpServletRequest request) {
return this.buildBaseUrl(request, store);
}
public String buildStoreUri(MerchantStore store, String contextPath) {
StringBuilder resourcePath = new StringBuilder();
String path = contextPath;
if(Constants.SLASH.equals(path)) {
path = Constants.BLANK;
}
String scheme = coreConfiguration.getProperty( ApplicationConstants.SHOP_SCHEME,"http" );
String domainName = store.getDomainName();
if(StringUtils.isBlank(domainName)) {
domainName = Constants.DEFAULT_DOMAIN_NAME;
}
resourcePath.append(scheme).append(DOUBLE_SLASH)
.append(domainName)
.append(path);
return resourcePath.toString();
}
public String buildRelativeStoreUri(HttpServletRequest request, MerchantStore store) {
StringBuilder resourcePath = new StringBuilder();
String path = request.getContextPath();
if(Constants.SLASH.equals(path)) {
path = Constants.BLANK;
}
resourcePath.append(path);
return resourcePath.toString();
}
private String buildBaseUrl(HttpServletRequest request, MerchantStore store) {
StringBuilder resourcePath = new StringBuilder();
String contextPath = request.getContextPath();
if(Constants.SLASH.equals(contextPath)) {
contextPath = Constants.BLANK;
}
String scheme = coreConfiguration.getProperty( ApplicationConstants.SHOP_SCHEME,"http" );
String domainName = store.getDomainName();
if(StringUtils.isBlank(domainName)) {
domainName = Constants.DEFAULT_DOMAIN_NAME;
}
resourcePath.append(scheme).append(DOUBLE_SLASH)
.append(domainName)
.append(contextPath);
return resourcePath.toString();
}
/**
* Access to the customer section
* @param store
* @param request
* @return
*/
public String buildCustomerUri(MerchantStore store, String contextPath) {
return buildStoreUri(store, contextPath);
}
public String buildAdminUri(MerchantStore store, HttpServletRequest request) {
StringBuilder resourcePath = new StringBuilder();
String baseUrl = this.buildBaseUrl(request, store);
resourcePath
.append(baseUrl)
.append(Constants.ADMIN_URI);
return resourcePath.toString();
}
public String buildCategoryUrl(MerchantStore store, String contextPath, String url) {
StringBuilder resourcePath = new StringBuilder();
resourcePath.append(buildStoreUri(store, contextPath))
.append(Constants.SHOP_URI)
.append(Constants.CATEGORY_URI)
.append(Constants.SLASH)
.append(url)
.append(Constants.URL_EXTENSION);
return resourcePath.toString();
}
public String buildProductUrl(MerchantStore store, String contextPath, String url) {
StringBuilder resourcePath = new StringBuilder();
resourcePath.append(buildStoreUri(store, contextPath))
.append(Constants.SHOP_URI)
.append(Constants.PRODUCT_URI)
.append(Constants.SLASH)
.append(url)
.append(Constants.URL_EXTENSION);
return resourcePath.toString();
}
}