1 23 package org.infoglue.cms.applications.workflowtool.function; 24 25 import java.util.ArrayList ; 26 import java.util.List ; 27 28 import org.infoglue.cms.controllers.kernel.impl.simple.ContentStateController; 29 import org.infoglue.cms.controllers.kernel.impl.simple.PublicationController; 30 import org.infoglue.cms.entities.content.ContentVersionVO; 31 import org.infoglue.cms.entities.publishing.PublicationVO; 32 33 import com.opensymphony.workflow.WorkflowException; 34 35 38 public class ContentPublisher extends ContentFunction 39 { 40 43 private static final String STATUS_OK = "status.publish.ok"; 44 45 48 private static final String STATUS_NOK = "status.publish.nok"; 49 50 53 protected void execute() throws WorkflowException 54 { 55 setFunctionStatus(STATUS_NOK); 56 if(getContentVO() != null && getContentVersionVO() != null) 57 { 58 publish(); 59 } 60 } 61 62 65 private void publish() throws WorkflowException 66 { 67 try 68 { 69 if(getContentVersionVO().getStateId().equals(ContentVersionVO.WORKING_STATE)) 70 { 71 final List events = new ArrayList (); 72 ContentStateController.changeState(getContentVersionVO().getContentVersionId(), ContentVersionVO.PUBLISH_STATE, "Auto", false, getPrincipal(), getContentVO().getId(), getDatabase(), events); 73 PublicationController.getController().createAndPublish(createPublicationVO(), events, true, getPrincipal(), getDatabase()); 74 setFunctionStatus(STATUS_OK); 75 } 76 } 77 catch(Exception e) 78 { 79 throwException(e); 80 } 81 } 82 83 86 private PublicationVO createPublicationVO() 87 { 88 final PublicationVO publicationVO = new PublicationVO(); 89 publicationVO.setName("Workflow publication by " + getPrincipal().getName()); 90 publicationVO.setDescription("Workflow publication by " + getPrincipal().getName()); 91 publicationVO.setRepositoryId(getContentVO().getRepositoryId()); 92 return publicationVO; 93 } 94 } | Popular Tags |