001/* 002 * Copyright 2024 Anyware Services 003 * 004 * Licensed under the Apache 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.apache.org/licenses/LICENSE-2.0 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 */ 016package org.ametys.web.properties.section.page; 017 018import java.time.ZonedDateTime; 019import java.util.LinkedHashMap; 020import java.util.Map; 021import java.util.Optional; 022 023import org.ametys.cms.properties.section.AbstractDefaultPropertySection; 024import org.ametys.core.util.DateUtils; 025import org.ametys.plugins.repository.AmetysObject; 026import org.ametys.web.repository.page.Page; 027import org.ametys.web.repository.page.jcr.DefaultPage; 028 029/** 030 * Section displaying publication informations of the page. 031 */ 032public class PagePublicationSection extends AbstractDefaultPropertySection 033{ 034 public boolean supports(AmetysObject ametysObject) 035 { 036 return ametysObject instanceof Page; 037 } 038 039 @Override 040 protected Map<String, Object> buildData(AmetysObject ametysObject) 041 { 042 Map<String, Object> resultMap = new LinkedHashMap<>(); 043 044 Page page = (Page) ametysObject; 045 _addDate2JSON(resultMap, page, DefaultPage.METADATA_PUBLICATION_START_DATE, "startDate"); 046 _addDate2JSON(resultMap, page, DefaultPage.METADATA_PUBLICATION_END_DATE, "endDate"); 047 048 return resultMap; 049 } 050 051 private void _addDate2JSON(Map<String, Object> json, Page page, String dataName, String jsonName) 052 { 053 Optional<String> date = Optional.of(dataName) 054 .map(page::<ZonedDateTime>getValue) 055 .map(DateUtils::zonedDateTimeToString); 056 057 if (date.isPresent()) 058 { 059 json.put(jsonName, date.get()); 060 } 061 } 062}