001/* 002 * Copyright 2022 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.plugins.forms.content.workflow; 017 018import java.util.Collections; 019import java.util.List; 020import java.util.stream.Collectors; 021 022import javax.jcr.Node; 023 024import org.apache.avalon.framework.service.ServiceException; 025import org.apache.avalon.framework.service.ServiceManager; 026import org.apache.cocoon.environment.Request; 027 028import org.ametys.core.user.UserIdentity; 029import org.ametys.plugins.forms.FormsException; 030import org.ametys.plugins.forms.content.Form; 031import org.ametys.plugins.forms.content.jcr.FormPropertiesManager; 032import org.ametys.plugins.forms.content.table.FormTableManager; 033import org.ametys.plugins.forms.data.Answer; 034import org.ametys.plugins.forms.workflow.AbstractFormDashboardGenerator; 035import org.ametys.plugins.workflow.store.JdbcWorkflowStore; 036import org.ametys.plugins.workflow.support.WorkflowProvider; 037 038import com.opensymphony.workflow.Workflow; 039 040/** 041 * This class generates all the forms process information for current user 042 */ 043public class FormDashboardGenerator extends AbstractFormDashboardGenerator 044{ 045 /** The form table manager */ 046 protected FormTableManager _formTableManager; 047 048 /** The form properties manager */ 049 protected FormPropertiesManager _formPropertiesManager; 050 051 /** The workflow provider */ 052 protected WorkflowProvider _workflowProvider; 053 054 @Override 055 public void service(ServiceManager smanager) throws ServiceException 056 { 057 super.service(smanager); 058 _formTableManager = (FormTableManager) smanager.lookup(FormTableManager.ROLE); 059 _formPropertiesManager = (FormPropertiesManager) smanager.lookup(FormPropertiesManager.ROLE); 060 _workflowProvider = (WorkflowProvider) smanager.lookup(WorkflowProvider.ROLE); 061 } 062 063 @Override 064 protected List<Answer> _getAnswers(Request request, String siteName, String lang, UserIdentity user) throws FormsException 065 { 066 List<Form> forms = _formPropertiesManager.getFormContentNodes(siteName, lang) 067 .stream() 068 .map(this::_getForms) 069 .flatMap(List::stream) 070 .collect(Collectors.toList()); 071 072 return _formTableManager.getUserAnwsers(forms, user); 073 } 074 075 @Override 076 protected Workflow _getWorkflow(Answer answer) 077 { 078 return _workflowProvider.getExternalWorkflow(JdbcWorkflowStore.ROLE); 079 } 080 081 private List<Form> _getForms(Node node) 082 { 083 try 084 { 085 return _formPropertiesManager.getForms(node); 086 } 087 catch (Exception e) 088 { 089 getLogger().error("Can get forms from content node", e); 090 } 091 092 return Collections.EMPTY_LIST; 093 } 094}