use of org.broadleafcommerce.cms.page.domain.Page in project BroadleafCommerce by BroadleafCommerce.
the class PageTemplateCustomPersistenceHandler method getFieldGroups.
protected List<FieldGroup> getFieldGroups(PersistencePackage pp, DynamicEntityDao dynamicEntityDao) {
String pageId = pp.getCustomCriteria()[1];
String pageTemplateId = pp.getCustomCriteria().length > 3 ? pp.getCustomCriteria()[3] : null;
if (pageId == null) {
return new ArrayList<FieldGroup>(0);
}
Page page = pageService.findPageById(Long.valueOf(pageId));
PageTemplate template = null;
if (pageTemplateId != null) {
template = pageService.findPageTemplateById(Long.valueOf(pageTemplateId));
}
return getFieldGroups(page, template);
}
use of org.broadleafcommerce.cms.page.domain.Page in project BroadleafCommerce by BroadleafCommerce.
the class PageTemplateCustomPersistenceHandler method fetchEntityBasedOnId.
@Override
public Entity fetchEntityBasedOnId(String pageId, List<String> dirtyFields) throws Exception {
Page page = pageService.findPageById(Long.valueOf(pageId));
// Make sure the fieldmap is refreshed from the database based on any changes introduced in addOrUpdate()
em.refresh(page);
return fetchDynamicEntity(page, dirtyFields, true);
}
use of org.broadleafcommerce.cms.page.domain.Page in project BroadleafCommerce by BroadleafCommerce.
the class PageTemplateCustomPersistenceHandler method addOrUpdate.
protected Entity addOrUpdate(PersistencePackage persistencePackage, DynamicEntityDao dynamicEntityDao, RecordHelper helper) throws ServiceException {
String ceilingEntityFullyQualifiedClassname = persistencePackage.getCeilingEntityFullyQualifiedClassname();
try {
String pageId = persistencePackage.getCustomCriteria()[1];
if (StringUtils.isBlank(pageId)) {
return persistencePackage.getEntity();
}
Page page = pageService.findPageById(Long.valueOf(pageId));
Property[] properties = dynamicFieldUtil.buildDynamicPropertyList(getFieldGroups(page, null), PageTemplate.class);
Map<String, FieldMetadata> md = new HashMap<String, FieldMetadata>();
for (Property property : properties) {
md.put(property.getName(), property.getMetadata());
}
boolean validated = helper.validate(persistencePackage.getEntity(), null, md);
if (!validated) {
throw new ValidationException(persistencePackage.getEntity(), "Page dynamic fields failed validation");
}
List<String> templateFieldNames = new ArrayList<String>(20);
for (FieldGroup group : getFieldGroups(page, null)) {
for (FieldDefinition def : group.getFieldDefinitions()) {
templateFieldNames.add(def.getName());
}
}
Map<String, String> dirtyFieldsOrigVals = new HashMap<String, String>();
List<String> dirtyFields = new ArrayList<String>();
Map<String, PageField> pageFieldMap = page.getPageFields();
for (Property property : persistencePackage.getEntity().getProperties()) {
if (property.getEnabled() && templateFieldNames.contains(property.getName())) {
PageField pageField = pageFieldMap.get(property.getName());
if (pageField != null) {
boolean isDirty = (pageField.getValue() == null && property.getValue() != null) || (pageField.getValue() != null && property.getValue() == null);
if (isDirty || (pageField.getValue() != null && property.getValue() != null && !pageField.getValue().trim().equals(property.getValue().trim()))) {
dirtyFields.add(property.getName());
dirtyFieldsOrigVals.put(property.getName(), pageField.getValue());
pageField.setValue(property.getValue());
pageField = dynamicEntityDao.merge(pageField);
}
} else {
pageField = new PageFieldImpl();
pageField.setFieldKey(property.getName());
pageField.setValue(property.getValue());
pageField.setPage(page);
dynamicEntityDao.persist(pageField);
dirtyFields.add(property.getName());
}
}
}
List<String> removeItems = new ArrayList<String>();
for (String key : pageFieldMap.keySet()) {
if (persistencePackage.getEntity().findProperty(key) == null) {
removeItems.add(key);
}
}
if (removeItems.size() > 0) {
for (String removeKey : removeItems) {
pageFieldMap.remove(removeKey);
}
}
Collections.sort(dirtyFields);
Entity entity = fetchEntityBasedOnId(pageId, dirtyFields);
for (Map.Entry<String, String> entry : dirtyFieldsOrigVals.entrySet()) {
entity.getPMap().get(entry.getKey()).setOriginalValue(entry.getValue());
entity.getPMap().get(entry.getKey()).setOriginalDisplayValue(entry.getValue());
}
return entity;
} catch (ValidationException e) {
throw e;
} catch (Exception e) {
throw new ServiceException("Unable to perform update for entity: " + ceilingEntityFullyQualifiedClassname, e);
}
}
use of org.broadleafcommerce.cms.page.domain.Page in project BroadleafCommerce by BroadleafCommerce.
the class PageServiceImpl method findPageByURI.
/*
* Retrieve the page if one is available for the passed in uri.
*/
@Override
public PageDTO findPageByURI(Locale locale, String uri, Map<String, Object> ruleDTOs, boolean secure) {
final List<PageDTO> returnList = getPageDTOListForURI(locale, uri, secure);
PageDTO dto = evaluatePageRules(returnList, locale, ruleDTOs);
if (dto.getId() != null) {
final Page page = findPageById(dto.getId());
final ExtensionResultHolder<PageDTO> newDTO = new ExtensionResultHolder<>();
// Allow an extension point to override the page to render.
extensionManager.getProxy().overridePageDto(newDTO, dto, page);
if (newDTO.getResult() != null) {
dto = newDTO.getResult();
}
}
if (dto != null) {
dto = pageServiceUtility.hydrateForeignLookups(dto);
}
return dto;
}
use of org.broadleafcommerce.cms.page.domain.Page in project BroadleafCommerce by BroadleafCommerce.
the class PageSiteMapGenerator method addSiteMapEntries.
@Override
public void addSiteMapEntries(SiteMapGeneratorConfiguration smgc, SiteMapBuilder siteMapBuilder) {
int rowOffset = 0;
List<Page> pages;
String previousUrl = "";
do {
pages = pageDao.readOnlineAndIncludedPages(rowLimit, rowOffset, "fullUrl");
rowOffset += pages.size();
for (Page page : pages) {
if (page.getExcludeFromSiteMap()) {
continue;
}
String currentURL = page.getFullUrl();
if (previousUrl.equals(currentURL)) {
continue;
} else {
previousUrl = currentURL;
}
SiteMapURLWrapper siteMapUrl = new SiteMapURLWrapper();
// location
siteMapUrl.setLoc(generateUri(siteMapBuilder, page));
// change frequency
siteMapUrl.setChangeFreqType(smgc.getSiteMapChangeFreq());
// priority
siteMapUrl.setPriorityType(smgc.getSiteMapPriority());
// lastModDate
siteMapUrl.setLastModDate(generateDate(page));
siteMapBuilder.addUrl(siteMapUrl);
}
} while (pages.size() == rowLimit);
}
Aggregations