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.generators;
017
018import java.util.ArrayList;
019import java.util.List;
020
021import org.apache.avalon.framework.service.ServiceException;
022import org.apache.avalon.framework.service.ServiceManager;
023import org.apache.cocoon.environment.ObjectModelHelper;
024import org.apache.cocoon.environment.Request;
025import org.apache.cocoon.xml.XMLUtils;
026import org.xml.sax.SAXException;
027
028import org.ametys.core.right.RightManager;
029import org.ametys.plugins.forms.dao.FormDAO;
030import org.ametys.plugins.forms.helper.FormAdminDashboardHelper;
031import org.ametys.plugins.forms.repository.Form;
032import org.ametys.plugins.linkdirectory.dynamic.AbstractInternalDynamicInformationGenerator;
033import org.ametys.runtime.i18n.I18nizableText;
034import org.ametys.web.WebHelper;
035
036/**
037 * Fenerator for saxing dynamic information for admin dashboard service
038 */
039public class FormAdminDashboardDynamicInformationGenerator extends AbstractInternalDynamicInformationGenerator
040{
041    /** The form DAO */
042    protected FormDAO _formDAO;
043    
044    /** The right manager */
045    protected RightManager _rightManager;
046    
047    /** The form admin dashboard helper */
048    protected FormAdminDashboardHelper _formAdminDashboardHelper;
049    
050    @Override
051    public void service(ServiceManager serviceManager) throws ServiceException
052    {
053        super.service(serviceManager);
054        _formDAO = (FormDAO) serviceManager.lookup(FormDAO.ROLE);
055        _rightManager = (RightManager) serviceManager.lookup(RightManager.ROLE);
056        _formAdminDashboardHelper = (FormAdminDashboardHelper) serviceManager.lookup(FormAdminDashboardHelper.ROLE);
057    }
058    
059    @Override
060    protected void saxShortValue() throws SAXException
061    {
062        Request request = ObjectModelHelper.getRequest(objectModel);
063        String siteName = WebHelper.getSiteName(request);
064        
065        List<Form> formToAdmin = _formAdminDashboardHelper.getFormToAdmin(siteName, getCurrentUser());
066        XMLUtils.createElement(contentHandler, SHORT_VALUE, String.valueOf(formToAdmin.size()));
067    }
068
069    @Override
070    protected void saxLongValue() throws SAXException
071    {
072        Request request = ObjectModelHelper.getRequest(objectModel);
073        String siteName = WebHelper.getSiteName(request);
074        
075        List<Form> formToAdmin = _formAdminDashboardHelper.getFormToAdmin(siteName, getCurrentUser());
076        int nb = formToAdmin.size();
077        if (nb != 0)
078        {
079            List<String> params = new ArrayList<>();
080            params.add(String.valueOf(nb));
081            I18nizableText longValue = new I18nizableText("plugin.forms", nb > 1 ? "PLUGINS_FORMS_LINK_DIRECTORY_ADMIN_DASHBOARD_LONG_VALUE_MULTIPLE" : "PLUGINS_FORMS_LINK_DIRECTORY_ADMIN_DASHBOARD_LONG_VALUE", params);
082
083            XMLUtils.startElement(contentHandler, LONG_VALUE);
084            longValue.toSAX(contentHandler);
085            XMLUtils.endElement(contentHandler, LONG_VALUE);
086        }
087        else
088        {
089            I18nizableText longValue = new I18nizableText("plugin.forms", "PLUGINS_FORMS_LINK_DIRECTORY_ADMIN_DASHBOARD_LONG_VALUE_NO_FORMS");
090            XMLUtils.startElement(contentHandler, LONG_VALUE);
091            longValue.toSAX(contentHandler);
092            XMLUtils.endElement(contentHandler, LONG_VALUE);
093        }
094    }
095
096    @Override
097    protected void saxTooltips() throws SAXException
098    {
099        Request request = ObjectModelHelper.getRequest(objectModel);
100        String siteName = WebHelper.getSiteName(request);
101        
102        List<Form> formToAdmin = _formAdminDashboardHelper.getFormToAdmin(siteName, getCurrentUser());
103        
104        for (Form form : formToAdmin)
105        {
106            saxItem(form.getTitle(), form.getDescription(), null);
107        }
108    }
109}