1 package nl.hippo.cms.workflows.reviewedactions; 2 3 import java.io.IOException ; 4 import java.util.ArrayList ; 5 import java.util.Collections ; 6 import java.util.Date ; 7 import java.util.HashMap ; 8 import java.util.List ; 9 import java.util.Map ; 10 import nl.hippo.cms.Constants; 11 import nl.hippo.cms.workflows.shared.DateUtil; 12 import nl.hippo.cms.workflows.shared.InitialDataRetrieverComponent; 13 import nl.hippo.cms.workflows.shared.WorkflowExtensionUtil; 14 import nl.hippo.cocoon.webdav.WebDAVHelper; 15 import org.apache.commons.httpclient.HttpState; 16 import org.apache.webdav.lib.PropertyName; 17 18 public class PublishInitialDataRetriever extends InitialDataRetrieverComponent 19 { 20 21 private static final PropertyName REQUESTED_UNPUBLICATION_DATE_PROPERTY_NAME = new PropertyName(Constants.CMS_1_0_NAMESPACE, Constants.REQUESTED_UNPUBLICATION_DATE_PROPERTY_NAME); 22 private static final PropertyName REQUESTED_PUBLICATION_DATE_PROPERTY_NAME = new PropertyName(Constants.CMS_1_0_NAMESPACE, Constants.REQUESTED_PUBLICATION_DATE_PROPERTY_NAME); 23 private static final List PROPERTIES = new ArrayList (); 24 25 static 26 { 27 PROPERTIES.add(REQUESTED_PUBLICATION_DATE_PROPERTY_NAME); 28 PROPERTIES.add(REQUESTED_UNPUBLICATION_DATE_PROPERTY_NAME); 29 } 30 31 public PublishInitialDataRetriever() 32 { 33 super(); 34 } 35 36 public Map getDataImpl(String uri, HttpState httpState) 37 { 38 HashMap result = new HashMap (); 39 try 40 { 41 Map propertyValues = WebDAVHelper.propfindAsStrings(uri, Collections.enumeration(PROPERTIES), httpState); 42 String requestedPublicationDateAsString = (String ) propertyValues.get(REQUESTED_PUBLICATION_DATE_PROPERTY_NAME); 43 Date requestedPublicationDate = WorkflowExtensionUtil.getDateAndTime(requestedPublicationDateAsString); 44 if (requestedPublicationDate == null || DateUtil.isBefore(requestedPublicationDate, new Date ())) 45 { 46 result.put("publicationDateMode", "now"); 47 result.put("publicationDate", null); 48 } 49 else 50 { 51 result.put("publicationDateMode", "other"); 52 result.put("publicationDate", requestedPublicationDateAsString); 53 } 54 55 String requestedUnpublicationDateAsString = (String ) propertyValues.get(REQUESTED_UNPUBLICATION_DATE_PROPERTY_NAME); 56 Date requestedUnpublicationDate = WorkflowExtensionUtil.getDateAndTime(requestedUnpublicationDateAsString); 57 if (requestedUnpublicationDate == null) 58 { 59 result.put("unpublicationDateMode", "never"); 60 result.put("unpublicationDate", null); 61 } 62 else 63 { 64 result.put("unpublicationDateMode", "other"); 65 result.put("unpublicationDate", requestedUnpublicationDateAsString); 66 } 67 } 68 catch (IOException e) 69 { 70 } 72 return result; 73 } 74 75 } 76 | Popular Tags |