Search in sources :

Example 6 with Page

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);
}
Also used : PageTemplate(org.broadleafcommerce.cms.page.domain.PageTemplate) ArrayList(java.util.ArrayList) Page(org.broadleafcommerce.cms.page.domain.Page)

Example 7 with Page

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);
}
Also used : Page(org.broadleafcommerce.cms.page.domain.Page)

Example 8 with Page

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);
    }
}
Also used : Entity(org.broadleafcommerce.openadmin.dto.Entity) AdminMainEntity(org.broadleafcommerce.common.admin.domain.AdminMainEntity) FieldMetadata(org.broadleafcommerce.openadmin.dto.FieldMetadata) ValidationException(org.broadleafcommerce.openadmin.server.service.ValidationException) HashMap(java.util.HashMap) FieldGroup(org.broadleafcommerce.cms.field.domain.FieldGroup) FieldDefinition(org.broadleafcommerce.cms.field.domain.FieldDefinition) ArrayList(java.util.ArrayList) Page(org.broadleafcommerce.cms.page.domain.Page) ServiceException(org.broadleafcommerce.common.exception.ServiceException) ValidationException(org.broadleafcommerce.openadmin.server.service.ValidationException) PageField(org.broadleafcommerce.cms.page.domain.PageField) ServiceException(org.broadleafcommerce.common.exception.ServiceException) Property(org.broadleafcommerce.openadmin.dto.Property) HashMap(java.util.HashMap) Map(java.util.Map) PageFieldImpl(org.broadleafcommerce.cms.page.domain.PageFieldImpl)

Example 9 with Page

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;
}
Also used : NullPageDTO(org.broadleafcommerce.common.page.dto.NullPageDTO) PageDTO(org.broadleafcommerce.common.page.dto.PageDTO) Page(org.broadleafcommerce.cms.page.domain.Page) ExtensionResultHolder(org.broadleafcommerce.common.extension.ExtensionResultHolder)

Example 10 with Page

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);
}
Also used : Page(org.broadleafcommerce.cms.page.domain.Page) SiteMapURLWrapper(org.broadleafcommerce.common.sitemap.wrapper.SiteMapURLWrapper)

Aggregations

Page (org.broadleafcommerce.cms.page.domain.Page)11 ArrayList (java.util.ArrayList)6 CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)4 PageImpl (org.broadleafcommerce.cms.page.domain.PageImpl)3 Date (java.util.Date)2 Predicate (javax.persistence.criteria.Predicate)2 Root (javax.persistence.criteria.Root)2 FieldGroup (org.broadleafcommerce.cms.field.domain.FieldGroup)2 PageField (org.broadleafcommerce.cms.page.domain.PageField)2 AdminMainEntity (org.broadleafcommerce.common.admin.domain.AdminMainEntity)2 Entity (org.broadleafcommerce.openadmin.dto.Entity)2 Property (org.broadleafcommerce.openadmin.dto.Property)2 File (java.io.File)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 NoResultException (javax.persistence.NoResultException)1 Query (javax.persistence.Query)1 TypedQuery (javax.persistence.TypedQuery)1 CriteriaQuery (javax.persistence.criteria.CriteriaQuery)1 FieldDefinition (org.broadleafcommerce.cms.field.domain.FieldDefinition)1