Skip to content

LUT-27605 : Workgroup - View form responses #335

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import fr.paris.lutece.plugins.forms.business.form.FormItemSortConfig;
import java.util.Comparator;
import java.util.List;
import fr.paris.lutece.api.user.User;

import javax.inject.Inject;

Expand Down Expand Up @@ -88,4 +89,28 @@ public void populateFormColumns( FormPanel formPanel, List<IFormColumn> listForm

_formListDAO.populateFormColumns( formPanel, listFormColumn, listFormFilter, nStartIndex, nPageSize, sortConfig );
}
/**
* Populate the given FormPanel with the information of the given FormColumns and FormFilters
*
* @param formPanel
* The FormPanel to populate
* @param listFormColumn
* The list of all FormColumn to use to be populated
* @param listFormFilter
* The list of FormFilter to use for retrieving the data of the columns to populate
* @param nStartIndex
* The start index of doc
* @param nPageSize
* The number of docs to load for pagination purpose
* @param sortConfig
*
* @param user
*/
public void populateFormColumns( FormPanel formPanel, List<IFormColumn> listFormColumn, List<FormFilter> listFormFilter, int nStartIndex, int nPageSize,
FormItemSortConfig sortConfig, User user )
{
listFormColumn.sort( Comparator.comparing( IFormColumn::getFormColumnPosition ) );

_formListDAO.populateFormColumns( formPanel, listFormColumn, listFormFilter, nStartIndex, nPageSize, sortConfig, user );
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import fr.paris.lutece.api.user.User;

import org.apache.commons.collections.CollectionUtils;

Expand Down Expand Up @@ -84,6 +85,20 @@ public void populateFormColumns( FormPanel formPanel, List<IFormColumn> listForm

formPanel.setFormResponseItemList( listFormResponseItem );
}
@Override
public void populateFormColumns( FormPanel formPanel, List<IFormColumn> listFormColumn, List<FormFilter> listFormFilter, int nStartIndex, int nPageSize,
FormItemSortConfig sortConfig, User user )
{
// To retrieve the values to display on the table we must have a FormPanel and a list of FormColumn
if ( formPanel == null || CollectionUtils.isEmpty( listFormColumn ) )
{
return;
}

List<FormResponseItem> listFormResponseItem = searchFormResponseItem( formPanel, listFormColumn, listFormFilter, nStartIndex, nPageSize, sortConfig, user );

formPanel.setFormResponseItemList( listFormResponseItem );
}

@Override
public List<FormResponseItem> searchAllFormResponseItem( FormPanel formPanel, List<IFormColumn> listFormColumn, List<FormFilter> listFormFilter,
Expand Down Expand Up @@ -121,6 +136,35 @@ private List<FormResponseItem> searchFormResponseItem( FormPanel formPanel, List

return listFormResponseItem;
}
private List<FormResponseItem> searchFormResponseItem( FormPanel formPanel, List<IFormColumn> listFormColumn, List<FormFilter> listFormFilter,
int nStartIndex, int nPageSize, FormItemSortConfig sortConfig, User user )
{
// Create the list of all values of the parameter to used
List<String> listQueryParametersValues = new ArrayList<>( );

// Build the list of query part from the formPanel, the list of columns and the list of filters
List<IFormPanelInitializerQueryPart> listFormPanelInitializerQueryPart = buildFormPanelInitializerQueryPartList( formPanel, listQueryParametersValues, user );
List<IFormColumnQueryPart> listFormColumnQueryPart = buildformColumnQueryPartList( listFormColumn );
List<IFormFilterQueryPart> listFormFilterQueryPart = buildFormFilterQueryPartList( listFormFilter, listQueryParametersValues );

List<FormResponseItem> listFormResponseItem = new ArrayList<>( );

for ( FormResponseSearchItem formResponseSearchItem : _formSearchEngine.getSearchResults( listFormPanelInitializerQueryPart, listFormColumnQueryPart,
listFormFilterQueryPart, sortConfig, nStartIndex, nPageSize, formPanel ) )
{
// Create a FormResponseItem sppfor the current result line
FormResponseItem formResponseItem = createFormResponseItem( formResponseSearchItem );
listFormResponseItem.add( formResponseItem );

for ( IFormColumnQueryPart formColumnQueryPart : listFormColumnQueryPart )
{
FormColumnCell formColumnCell = formColumnQueryPart.getFormColumnCell( formResponseSearchItem );
formResponseItem.addFormColumnCell( formColumnCell );
}
}

return listFormResponseItem;
}

/**
* Create a FormResponseItem from a DAOUtil
Expand Down Expand Up @@ -169,6 +213,38 @@ private static List<IFormPanelInitializerQueryPart> buildFormPanelInitializerQue

return listFormPanelInitializerQueryPart;
}
/**
* Build the list of all FormPanelInitializerQueryPart associate to all the FormPanelInitializer to retrieve from the given FormPanel
*
* @param formPanel
* The FormPanel used to retrieve the list of all FormPanelInitializer to retrieve the list of FormPanelInitializerQueryPart
* @param listQueryParametersValue
* The list of all parameter values to used to fill the DAOUtil statement
* @return the list of all FormPanelInitializerQueryPart associate to all the FormPanelInitializer to retrieve from the given FormPanel
*/
private static List<IFormPanelInitializerQueryPart> buildFormPanelInitializerQueryPartList( FormPanel formPanel, List<String> listQueryParametersValue, User user )
{
List<IFormPanelInitializerQueryPart> listFormPanelInitializerQueryPart = new ArrayList<>( );

IFormPanelConfiguration formPanelConfiguration = formPanel.getFormPanelConfiguration( );

if ( formPanelConfiguration != null && !CollectionUtils.isEmpty( formPanel.getListFormPanelInitializer( ) ) )
{
List<IFormPanelInitializer> listFormPanelInitializer = formPanel.getListFormPanelInitializer( );

for ( IFormPanelInitializer formPanelInitializer : listFormPanelInitializer )
{
IFormPanelInitializerQueryPart formPanelInitializerQueryPart = retrieveFormPanelInitializerQueryPart( formPanelInitializer,
listQueryParametersValue, user );
if ( formPanelInitializerQueryPart != null )
{
listFormPanelInitializerQueryPart.add( formPanelInitializerQueryPart );
}
}
}

return listFormPanelInitializerQueryPart;
}

/**
* Retrieve the IformPanelInitializerQueryPart associate to the givenFormPanelInitializer
Expand Down Expand Up @@ -200,6 +276,36 @@ private static IFormPanelInitializerQueryPart retrieveFormPanelInitializerQueryP

return formPanelInitializerQueryPartResult;
}
/**
* Retrieve the IformPanelInitializerQueryPart associate to the givenFormPanelInitializer
*
* @param formPanelInitializer
* The formPanelInitializer used to retrieve the associated IFormPanelInitializerQueryPart
* @param listQueryParametersPositionValue
* The list of all parameter values to used to fill the DAOUtil statement
* @return the IFormPanelInitializerQueryPart associate to the given FormPanelInitializer or null if not found
*/
private static IFormPanelInitializerQueryPart retrieveFormPanelInitializerQueryPart( IFormPanelInitializer formPanelInitializer, List<String> listQueryParametersPositionValue , User user)
{
IFormPanelInitializerQueryPart formPanelInitializerQueryPartResult = null;

if ( formPanelInitializer != null )
{
formPanelInitializerQueryPartResult = formPanelInitializer.getIFormPanelInitializerQueryPart( user );

if ( formPanelInitializerQueryPartResult != null )
{
FormParameters formParameters = formPanelInitializer.getFormParameters( );
formPanelInitializerQueryPartResult.buildFormPanelInitializerQuery( formParameters );

List<String> listUsedParametersValues = formParameters.getListUsedParametersValue( );
listQueryParametersPositionValue.addAll( listUsedParametersValues );
}
}

return formPanelInitializerQueryPartResult;
}


/**
* Build the list of IFormColumnQueryPart to use for build the global query from the given list of IFormColumn
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,19 +36,21 @@
import fr.paris.lutece.plugins.forms.business.form.FormResponseItem;
import fr.paris.lutece.plugins.forms.business.form.FormItemSortConfig;
import java.util.List;
import fr.paris.lutece.api.user.User;

import fr.paris.lutece.plugins.forms.business.form.column.IFormColumn;
import fr.paris.lutece.plugins.forms.business.form.filter.FormFilter;
import fr.paris.lutece.plugins.forms.business.form.panel.FormPanel;


/**
* DAO for retrieving the data of a list of FormColumn values from a list of FormFilter
*/
public interface IFormListDAO
{
/**
* Populate the FormPanel with the values returned by the SQL query results
*
*
* @param formPanel
* The FormPanel used to retrieve the values of the FormColumn
* @param listFormColumn
Expand All @@ -64,6 +66,25 @@ public interface IFormListDAO
*/
void populateFormColumns( FormPanel formPanel, List<IFormColumn> listFormColumn, List<FormFilter> listFormFilter, int nStartIndex, int nPageSize,
FormItemSortConfig sortConfig );
/**
* Populate the FormPanel with the values returned by the SQL query results
*
* @param formPanel
* The FormPanel used to retrieve the values of the FormColumn
* @param listFormColumn
* The list of FormColumn to populate
* @param listFormFilter
* The list of FormFilter used for filtering the data to retrieve
* @param nStartIndex
* The start index of doc that all will become FormResponseItem
* @param nPageSize
* The number of doc to load for pagination purpose
* @param sortConfig
* The comparator config
* @param user
*/
void populateFormColumns(FormPanel formPanel, java.util.List<IFormColumn> listFormColumn, List<FormFilter> listFormFilter, int nStartIndex, int nPageSize,
FormItemSortConfig sortConfig, User user);

/**
* Search the Lucene Index.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
*/
package fr.paris.lutece.plugins.forms.business.form.panel.initializer;

import fr.paris.lutece.api.user.User;
import fr.paris.lutece.plugins.forms.business.form.FormParameters;
import fr.paris.lutece.plugins.forms.business.form.panel.initializer.querypart.IFormPanelInitializerQueryPart;
import fr.paris.lutece.plugins.forms.web.form.panel.display.initializer.IFormPanelDisplayInitializer;
Expand Down Expand Up @@ -63,6 +64,8 @@ public interface IFormPanelInitializer
* @return
*/
IFormPanelInitializerQueryPart getIFormPanelInitializerQueryPart( );
IFormPanelInitializerQueryPart getIFormPanelInitializerQueryPart( User user );


/**
* Get an {@link IFormPanelDisplayInitializer} associated with this IFormPanelInitializer.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@

import fr.paris.lutece.plugins.forms.business.form.FormParameters;
import fr.paris.lutece.plugins.forms.business.form.panel.initializer.IFormPanelInitializer;

import fr.paris.lutece.plugins.forms.business.form.panel.initializer.querypart.IFormPanelInitializerQueryPart;
import fr.paris.lutece.api.user.User;
/**
* Abstract class for implementation of the IFormPanelInitializer interface
*/
Expand All @@ -61,4 +62,6 @@ public void setFormParameters( FormParameters formParameters )
{
_formParameters = formParameters;
}
public abstract IFormPanelInitializerQueryPart getIFormPanelInitializerQueryPart(User user);

}
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,14 @@
import fr.paris.lutece.plugins.forms.business.form.panel.initializer.querypart.impl.FormPanelFormResponseInitializerQueryPart;
import fr.paris.lutece.plugins.forms.web.form.panel.display.initializer.IFormPanelDisplayInitializer;
import fr.paris.lutece.plugins.forms.web.form.panel.display.initializer.impl.FormPanelFormResponseDisplayInitializer;

import fr.paris.lutece.api.user.User;
/**
* Implementation of the IFormPanelInitializer associated to the panel Form Response
*/
public class FormPanelFormResponseInitializer extends AbstractFormPanelInitializer
{
public User _user;

@Override
public IFormPanelInitializerQueryPart getIFormPanelInitializerQueryPart( )
{
Expand All @@ -54,4 +56,9 @@ public IFormPanelDisplayInitializer getFormPanelDisplayInitializer( )
{
return new FormPanelFormResponseDisplayInitializer( );
}

@Override
public IFormPanelInitializerQueryPart getIFormPanelInitializerQueryPart(User user) {
return new FormPanelFormResponseInitializerQueryPart(_user);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import fr.paris.lutece.plugins.forms.web.form.panel.display.initializer.IFormPanelDisplayInitializer;
import fr.paris.lutece.plugins.forms.web.form.panel.display.initializer.impl.FormPanelFormsDisplayInitializer;

import fr.paris.lutece.api.user.User;
/**
* Implementation of the IFormPanelInitializer to allow the use of the FormResponse and Form for a Panel
*/
Expand All @@ -48,6 +49,11 @@ public IFormPanelInitializerQueryPart getIFormPanelInitializerQueryPart( )
{
return new FormPanelFormsInitializerQueryPart( );
}
@Override
public IFormPanelInitializerQueryPart getIFormPanelInitializerQueryPart( User user )
{
return new FormPanelFormsInitializerQueryPart(user);
}

@Override
public IFormPanelDisplayInitializer getFormPanelDisplayInitializer( )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,20 @@
*/
package fr.paris.lutece.plugins.forms.business.form.panel.initializer.querypart.impl;

import fr.paris.lutece.api.user.User;
import fr.paris.lutece.plugins.forms.business.form.FormParameters;

/**
* Implementation of the IFormFilterQueryPart for a FormFilterPanelFormResponse filter
*/
public class FormPanelFormResponseInitializerQueryPart extends AbstractFormPanelInitializerQueryPart
{
public FormPanelFormResponseInitializerQueryPart(User user) {
super();
}
public FormPanelFormResponseInitializerQueryPart() {
super();
}
/**
* {@inheritDoc}
*/
Expand Down
Loading