use of org.broadleafcommerce.cms.file.domain.StaticAsset in project BroadleafCommerce by BroadleafCommerce.
the class StaticAssetServiceImpl method createStaticAsset.
@Override
@Transactional(TransactionUtils.DEFAULT_TRANSACTION_MANAGER)
public StaticAsset createStaticAsset(InputStream inputStream, String fileName, long fileSize, Map<String, String> properties) {
if (properties == null) {
properties = new HashMap<String, String>();
}
String fullUrl = buildAssetURL(properties, fileName);
StringBuilder urlBuilder = new StringBuilder();
urlBuilder.append(fullUrl);
ExtensionResultStatusType resultStatusType = staticAssetExtensionManager.getProxy().modifyDuplicateAssetURL(urlBuilder);
fullUrl = urlBuilder.toString();
StaticAsset newAsset = staticAssetDao.readStaticAssetByFullUrl(fullUrl);
// logic for handling duplicate files.
if (resultStatusType != ExtensionResultStatusType.HANDLED) {
int count = 0;
while (newAsset != null) {
count++;
// try the new format first, then the old
newAsset = staticAssetDao.readStaticAssetByFullUrl(getCountUrl(fullUrl, count, false));
if (newAsset == null) {
newAsset = staticAssetDao.readStaticAssetByFullUrl(getCountUrl(fullUrl, count, true));
}
}
if (count > 0) {
fullUrl = getCountUrl(fullUrl, count, false);
}
}
try {
ImageMetadata metadata = imageArtifactProcessor.getImageMetadata(inputStream);
newAsset = new ImageStaticAssetImpl();
((ImageStaticAsset) newAsset).setWidth(metadata.getWidth());
((ImageStaticAsset) newAsset).setHeight(metadata.getHeight());
} catch (Exception e) {
// must not be an image stream
LOG.warn("unable to convert asset:" + fileName + " into Image");
LOG.debug(e);
if (getShouldAcceptNonImageAsset()) {
newAsset = createNonImageAsset(inputStream, fileName, properties);
} else {
throw new RuntimeException("Selected Asset/File was not valid image.");
}
}
if (storeAssetsOnFileSystem) {
newAsset.setStorageType(StorageType.FILESYSTEM);
} else {
newAsset.setStorageType(StorageType.DATABASE);
}
newAsset.setName(fileName);
getMimeType(inputStream, fileName, newAsset);
newAsset.setFileExtension(getFileExtension(fileName));
newAsset.setFileSize(fileSize);
newAsset.setFullUrl(fullUrl);
return staticAssetDao.addOrUpdateStaticAsset(newAsset, false);
}
use of org.broadleafcommerce.cms.file.domain.StaticAsset in project BroadleafCommerce by BroadleafCommerce.
the class AdminAssetUploadController method upload.
@RequestMapping(value = "/{id}/uploadAsset", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> upload(HttpServletRequest request, @RequestParam("file") MultipartFile file, @PathVariable(value = "sectionKey") String sectionKey, @PathVariable(value = "id") String id) throws IOException {
Map<String, Object> responseMap = new HashMap<String, Object>();
Map<String, String> properties = new HashMap<String, String>();
properties.put("entityType", sectionKey);
properties.put("entityId", id);
StaticAsset staticAsset = staticAssetService.createStaticAssetFromFile(file, properties);
staticAssetStorageService.createStaticAssetStorageFromFile(file, staticAsset);
String staticAssetUrlPrefix = staticAssetService.getStaticAssetUrlPrefix();
if (staticAssetUrlPrefix != null && !staticAssetUrlPrefix.startsWith("/")) {
staticAssetUrlPrefix = "/" + staticAssetUrlPrefix;
}
String assetUrl = staticAssetUrlPrefix + staticAsset.getFullUrl();
responseMap.put("adminDisplayAssetUrl", request.getContextPath() + assetUrl);
responseMap.put("assetUrl", assetUrl);
if (staticAsset instanceof ImageStaticAssetImpl) {
responseMap.put("image", Boolean.TRUE);
responseMap.put("assetThumbnail", assetUrl + "?smallAdminThumbnail");
responseMap.put("assetLarge", assetUrl + "?largeAdminThumbnail");
} else {
responseMap.put("image", Boolean.FALSE);
}
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.add("Content-Type", "text/html; charset=utf-8");
return new ResponseEntity<Map<String, Object>>(responseMap, responseHeaders, HttpStatus.OK);
}
use of org.broadleafcommerce.cms.file.domain.StaticAsset in project BroadleafCommerce by BroadleafCommerce.
the class StaticAssetDaoImpl method readStaticAssetByFullUrl.
@Override
public StaticAsset readStaticAssetByFullUrl(String fullUrl) {
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<StaticAsset> criteria = builder.createQuery(StaticAsset.class);
Root<StaticAssetImpl> handler = criteria.from(StaticAssetImpl.class);
criteria.select(handler);
List<Predicate> restrictions = new ArrayList<Predicate>();
List<Order> sorts = new ArrayList<Order>();
restrictions.add(builder.equal(handler.get("fullUrl"), fullUrl));
try {
if (queryExtensionManager != null) {
queryExtensionManager.getProxy().setup(StaticAssetImpl.class, null);
queryExtensionManager.getProxy().refineRetrieve(StaticAssetImpl.class, null, builder, criteria, handler, restrictions);
queryExtensionManager.getProxy().refineOrder(StaticAssetImpl.class, null, builder, criteria, handler, sorts);
}
criteria.where(restrictions.toArray(new Predicate[restrictions.size()]));
if (!org.apache.commons.collections.CollectionUtils.isEmpty(sorts)) {
criteria.orderBy(sorts);
}
TypedQuery<StaticAsset> query = em.createQuery(criteria);
query.setHint(QueryHints.HINT_CACHEABLE, true);
List<StaticAsset> response = query.getResultList();
if (response.size() > 0) {
return response.get(0);
}
return null;
} finally {
if (queryExtensionManager != null) {
queryExtensionManager.getProxy().breakdown(StaticAssetImpl.class, null);
}
}
}
use of org.broadleafcommerce.cms.file.domain.StaticAsset in project BroadleafCommerce by BroadleafCommerce.
the class StaticAssetDaoImpl method readStaticAssetById.
@Override
public StaticAsset readStaticAssetById(Long id) {
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<StaticAsset> criteria = builder.createQuery(StaticAsset.class);
Root<StaticAssetImpl> handler = criteria.from(StaticAssetImpl.class);
criteria.select(handler);
List<Predicate> restrictions = new ArrayList<Predicate>();
restrictions.add(builder.equal(handler.get("id"), id));
if (queryExtensionManager != null) {
queryExtensionManager.getProxy().setup(StaticAssetImpl.class, null);
queryExtensionManager.getProxy().refineRetrieve(StaticAssetImpl.class, null, builder, criteria, handler, restrictions);
}
criteria.where(restrictions.toArray(new Predicate[restrictions.size()]));
TypedQuery<StaticAsset> query = em.createQuery(criteria);
query.setHint(QueryHints.HINT_CACHEABLE, true);
List<StaticAsset> response = query.getResultList();
if (response.size() > 0) {
return response.get(0);
}
return null;
}
use of org.broadleafcommerce.cms.file.domain.StaticAsset in project BroadleafCommerce by BroadleafCommerce.
the class AdminAssetUploadController method upload.
/**
* Used by the Asset list view to upload an asset and then immediately show the
* edit form for that record.
*
* @param request
* @param file
* @param sectionKey
* @return
* @throws IOException
*/
@RequestMapping(value = "/uploadAsset", method = RequestMethod.POST)
public String upload(HttpServletRequest request, HttpServletResponse response, Model model, @PathVariable Map<String, String> pathVars, @RequestParam("file") MultipartFile file, @RequestParam MultiValueMap<String, String> requestParams) throws Exception {
StaticAsset staticAsset = staticAssetService.createStaticAssetFromFile(file, null);
staticAssetStorageService.createStaticAssetStorageFromFile(file, staticAsset);
String staticAssetUrlPrefix = staticAssetService.getStaticAssetUrlPrefix();
if (staticAssetUrlPrefix != null && !staticAssetUrlPrefix.startsWith("/")) {
staticAssetUrlPrefix = "/" + staticAssetUrlPrefix;
}
return "redirect:/assets/" + staticAsset.getId();
}
Aggregations