Skip to content

Commit 46774e1

Browse files
committed
LUT-26831: simplify get response from backup
1 parent ab88b11 commit 46774e1

File tree

3 files changed

+46
-111
lines changed

3 files changed

+46
-111
lines changed

src/java/fr/paris/lutece/plugins/forms/service/FormService.java

Lines changed: 11 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -33,51 +33,18 @@
3333
*/
3434
package fr.paris.lutece.plugins.forms.service;
3535

36-
import java.util.List;
37-
import java.util.stream.Collectors;
38-
39-
import javax.inject.Inject;
40-
import javax.servlet.http.HttpServletRequest;
41-
42-
import org.apache.commons.collections.CollectionUtils;
43-
import org.springframework.transaction.annotation.Transactional;
44-
4536
import fr.paris.lutece.api.user.User;
46-
import fr.paris.lutece.plugins.forms.business.Form;
47-
import fr.paris.lutece.plugins.forms.business.FormDisplay;
48-
import fr.paris.lutece.plugins.forms.business.FormHome;
49-
import fr.paris.lutece.plugins.forms.business.FormMessageHome;
50-
import fr.paris.lutece.plugins.forms.business.FormQuestionResponse;
51-
import fr.paris.lutece.plugins.forms.business.FormQuestionResponseHome;
52-
import fr.paris.lutece.plugins.forms.business.FormResponse;
53-
import fr.paris.lutece.plugins.forms.business.FormResponseHome;
54-
import fr.paris.lutece.plugins.forms.business.FormResponseStep;
55-
import fr.paris.lutece.plugins.forms.business.FormResponseStepHome;
56-
import fr.paris.lutece.plugins.forms.business.Question;
57-
import fr.paris.lutece.plugins.forms.business.Step;
58-
import fr.paris.lutece.plugins.forms.business.StepHome;
37+
import fr.paris.lutece.plugins.forms.business.*;
5938
import fr.paris.lutece.plugins.forms.business.export.FormExportConfigHome;
6039
import fr.paris.lutece.plugins.forms.exception.MaxFormResponseException;
6140
import fr.paris.lutece.plugins.forms.service.workflow.IFormWorkflowService;
6241
import fr.paris.lutece.plugins.forms.util.FormsConstants;
6342
import fr.paris.lutece.plugins.forms.util.FormsResponseUtils;
64-
import fr.paris.lutece.plugins.forms.web.CompositeGroupDisplay;
65-
import fr.paris.lutece.plugins.forms.web.CompositeQuestionDisplay;
66-
import fr.paris.lutece.plugins.forms.web.FormResponseManager;
67-
import fr.paris.lutece.plugins.forms.web.ICompositeDisplay;
68-
import fr.paris.lutece.plugins.forms.web.StepDisplayTree;
43+
import fr.paris.lutece.plugins.forms.web.*;
6944
import fr.paris.lutece.plugins.forms.web.admin.MultiviewFormResponseDetailsJspBean;
7045
import fr.paris.lutece.plugins.forms.web.entrytype.IEntryDataService;
71-
import fr.paris.lutece.plugins.genericattributes.business.Entry;
72-
import fr.paris.lutece.plugins.genericattributes.business.EntryHome;
73-
import fr.paris.lutece.plugins.genericattributes.business.FieldHome;
74-
import fr.paris.lutece.plugins.genericattributes.business.Response;
75-
import fr.paris.lutece.plugins.genericattributes.business.ResponseHome;
76-
import fr.paris.lutece.plugins.genericattributes.service.entrytype.AbstractEntryTypeFile;
77-
import fr.paris.lutece.plugins.genericattributes.service.entrytype.AbstractEntryTypeGalleryImage;
78-
import fr.paris.lutece.plugins.genericattributes.service.entrytype.AbstractEntryTypeImage;
79-
import fr.paris.lutece.plugins.genericattributes.service.entrytype.EntryTypeServiceManager;
80-
import fr.paris.lutece.plugins.genericattributes.service.entrytype.IEntryTypeService;
46+
import fr.paris.lutece.plugins.genericattributes.business.*;
47+
import fr.paris.lutece.plugins.genericattributes.service.entrytype.*;
8148
import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
8249
import fr.paris.lutece.portal.business.event.ResourceEvent;
8350
import fr.paris.lutece.portal.business.file.FileHome;
@@ -88,6 +55,13 @@
8855
import fr.paris.lutece.portal.service.spring.SpringContextService;
8956
import fr.paris.lutece.portal.service.workgroup.AdminWorkgroupService;
9057
import fr.paris.lutece.util.sql.TransactionManager;
58+
import org.apache.commons.collections.CollectionUtils;
59+
import org.springframework.transaction.annotation.Transactional;
60+
61+
import javax.inject.Inject;
62+
import javax.servlet.http.HttpServletRequest;
63+
import java.util.List;
64+
import java.util.stream.Collectors;
9165

9266
/**
9367
* This is the service class related to the form
@@ -474,7 +448,6 @@ public FormResponseManager createFormResponseManagerFromBackUp( Form form, Strin
474448
if ( CollectionUtils.isNotEmpty( listFormResponse ) )
475449
{
476450
formResponseManager = new FormResponseManager( listFormResponse.get( 0 ) );
477-
formResponseManager.setIsResponseLoadedFromBackup(true);
478451
}
479452
else
480453
{

src/java/fr/paris/lutece/plugins/forms/web/FormResponseManager.java

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,18 @@
3333
*/
3434
package fr.paris.lutece.plugins.forms.web;
3535

36-
import java.sql.Timestamp;
37-
import java.time.LocalDateTime;
38-
import java.util.*;
39-
import java.util.stream.Collectors;
4036
import fr.paris.lutece.plugins.forms.business.*;
41-
import fr.paris.lutece.portal.service.util.AppLogService;
42-
import org.apache.commons.collections.CollectionUtils;
43-
4437
import fr.paris.lutece.plugins.forms.service.EntryServiceManager;
4538
import fr.paris.lutece.plugins.forms.util.FormsConstants;
4639
import fr.paris.lutece.plugins.forms.validation.IValidator;
4740
import fr.paris.lutece.plugins.genericattributes.business.GenericAttributeError;
41+
import fr.paris.lutece.portal.service.util.AppLogService;
42+
import org.apache.commons.collections.CollectionUtils;
43+
44+
import java.sql.Timestamp;
45+
import java.util.ArrayList;
46+
import java.util.List;
47+
import java.util.stream.Collectors;
4848

4949
/**
5050
*
@@ -55,8 +55,6 @@ public class FormResponseManager
5555
{
5656
private final List<Step> _listValidatedStep;
5757
private final FormResponse _formResponse;
58-
private boolean _bIsResponseLoadedFromBackup = false;
59-
private boolean _isBackupResponseAlreadyInitiated = false;
6058
/**
6159
* Constructor
6260
*
@@ -153,35 +151,11 @@ public Timestamp getFormResponseUpdateDate()
153151
}
154152
return updateDate;
155153
}
156-
157154
public void setFormResponseUpdateDate(Timestamp updateDate)
158155
{
159156
FormResponse formResponse = getFormResponse();
160157
formResponse.setUpdate(updateDate);
161158
}
162-
/**
163-
* Give a boolean indicating that indicates if view (getViewStep) has been initialized from backup
164-
* So with _isBackupResponseAlreadyInitiated and _bIsResponseLoadedFromBackup we can deduce if it's the first time the getViewStep is loaded with the backup response
165-
*
166-
* @return a boolean indicating that indicates if view has been initialized from backup
167-
*/
168-
public Boolean getIsBackupResponseAlreadyInitiated() {
169-
return _isBackupResponseAlreadyInitiated;
170-
}
171-
public void setBackupResponseAlreadyInitiated(Boolean isBackupResponseAlreadyInitiated) {
172-
_isBackupResponseAlreadyInitiated = isBackupResponseAlreadyInitiated;
173-
}
174-
/**
175-
* Gives a boolean indicating if the response is loaded from backup
176-
*
177-
* @return a boolean indicating if the response is loaded from backup
178-
*/
179-
public Boolean getIsResponseLoadedFromBackup () {
180-
return _bIsResponseLoadedFromBackup;
181-
}
182-
public void setIsResponseLoadedFromBackup (Boolean bIsResponseLoadedFromBackup) {
183-
_bIsResponseLoadedFromBackup = bIsResponseLoadedFromBackup;
184-
}
185159

186160
/**
187161
* Initializes the steps order

src/java/fr/paris/lutece/plugins/forms/web/FormXPage.java

Lines changed: 28 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,7 @@
3333
*/
3434
package fr.paris.lutece.plugins.forms.web;
3535

36-
import java.sql.Timestamp;
37-
import java.time.LocalDateTime;
38-
import java.util.*;
39-
import java.util.stream.Collectors;
40-
41-
import javax.servlet.http.HttpServletRequest;
42-
4336
import fr.paris.lutece.plugins.forms.business.*;
44-
import fr.paris.lutece.plugins.genericattributes.business.ResponseHome;
45-
import fr.paris.lutece.portal.service.util.AppLogService;
46-
import org.apache.commons.fileupload.FileItem;
47-
import org.apache.commons.lang3.StringUtils;
48-
import org.apache.commons.lang3.math.NumberUtils;
49-
5037
import fr.paris.lutece.plugins.forms.exception.FormNotFoundException;
5138
import fr.paris.lutece.plugins.forms.exception.MaxFormResponseException;
5239
import fr.paris.lutece.plugins.forms.exception.QuestionValidationException;
@@ -77,6 +64,7 @@
7764
import fr.paris.lutece.portal.service.security.SecurityTokenService;
7865
import fr.paris.lutece.portal.service.security.UserNotSignedException;
7966
import fr.paris.lutece.portal.service.spring.SpringContextService;
67+
import fr.paris.lutece.portal.service.util.AppLogService;
8068
import fr.paris.lutece.portal.service.util.AppPathService;
8169
import fr.paris.lutece.portal.service.util.AppPropertiesService;
8270
import fr.paris.lutece.portal.util.mvc.commons.annotations.Action;
@@ -87,7 +75,15 @@
8775
import fr.paris.lutece.portal.web.upload.MultipartHttpServletRequest;
8876
import fr.paris.lutece.portal.web.xpages.XPage;
8977
import fr.paris.lutece.util.url.UrlItem;
90-
import org.apache.james.mime4j.dom.datetime.DateTime;
78+
import org.apache.commons.fileupload.FileItem;
79+
import org.apache.commons.lang3.StringUtils;
80+
import org.apache.commons.lang3.math.NumberUtils;
81+
82+
import javax.servlet.http.HttpServletRequest;
83+
import java.sql.Timestamp;
84+
import java.time.LocalDateTime;
85+
import java.util.*;
86+
import java.util.stream.Collectors;
9187

9288
/**
9389
*
@@ -143,7 +139,7 @@ public class FormXPage extends MVCApplication
143139
private static final String MARK_FORM_LIST = "form_list";
144140
private static final String MARK_DISPLAY_CAPTCHA = "display_captcha";
145141
private static final String MARK_CAPTCHA = "captcha";
146-
142+
private static final String AUTH_PROVIDER = "auth_provider";
147143
// Other
148144
private static FormService _formService = SpringContextService.getBean( FormService.BEAN_NAME );
149145
private ICaptchaSecurityService _captchaSecurityService = new CaptchaSecurityService( );
@@ -153,7 +149,8 @@ public class FormXPage extends MVCApplication
153149
private StepDisplayTree _stepDisplayTree;
154150
private IBreadcrumb _breadcrumb;
155151
private boolean _bInactiveStateBypassed;
156-
private boolean IsRequestComingFromAction = false;
152+
private Boolean isRequestFromLoginPage = false;
153+
157154

158155
/**
159156
* Return the default XPage with the list of all available Form
@@ -312,9 +309,6 @@ public synchronized XPage getStepView( HttpServletRequest request ) throws SiteM
312309
{
313310
_breadcrumb = SpringContextService.getBean( form.getBreadcrumbName( ) );
314311
}
315-
if(_formResponseManager != null && !_formResponseManager.getIsBackupResponseAlreadyInitiated() && _formResponseManager.getIsResponseLoadedFromBackup()) {
316-
_formResponseManager.setBackupResponseAlreadyInitiated(true);
317-
}
318312
initFormResponseManager( request, form );
319313
if ( _formResponseManager.getFormResponse( ).isFromSave( ) )
320314
{
@@ -361,7 +355,6 @@ public synchronized XPage getStepView( HttpServletRequest request ) throws SiteM
361355
SiteMessageService.setMessage( request, FormsConstants.MESSAGE_ERROR_INACTIVE_FORM, SiteMessage.TYPE_ERROR );
362356
}
363357
}
364-
IsRequestComingFromAction = true;
365358
XPage xPage = getXPage( TEMPLATE_VIEW_STEP, getLocale( request ), model );
366359
xPage.setTitle( strTitleForm );
367360
xPage.setPathLabel( strPathForm );
@@ -451,7 +444,6 @@ private void getFormStepModel( Form form, HttpServletRequest request, Map<String
451444
@Action( value = ACTION_PREVIOUS_STEP )
452445
public synchronized XPage doReturnStep( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException
453446
{
454-
IsRequestComingFromAction = true;
455447
boolean bSessionLost = isSessionLost( );
456448
try
457449
{
@@ -471,8 +463,7 @@ public synchronized XPage doReturnStep( HttpServletRequest request ) throws Site
471463
{
472464
// The condition below : We don't want to fill the FormResponseManager when just logged in with response made when user wasn't logged in
473465
//for exemple in case you are at step 2, you log in and you have to go back to step 1 that you already saved in backup
474-
if(_formResponseManager.getIsBackupResponseAlreadyInitiated() && _formResponseManager.getIsResponseLoadedFromBackup()
475-
|| !_formResponseManager.getIsResponseLoadedFromBackup() && _formResponseManager.getFormResponse().getCreation() != null) {
466+
if(_formResponseManager.getFormResponse().getCreation() != null) {
476467
FormsResponseUtils.fillResponseManagerWithResponses(request, false, _formResponseManager, _stepDisplayTree.getQuestions(), false);
477468
}
478469
}
@@ -504,7 +495,6 @@ public synchronized XPage doReturnStep( HttpServletRequest request ) throws Site
504495
@Action( value = ACTION_GO_TO_STEP )
505496
public synchronized XPage doGoToStep( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException
506497
{
507-
IsRequestComingFromAction = true;
508498

509499
boolean bSessionLost = isSessionLost( );
510500

@@ -554,7 +544,6 @@ public synchronized XPage doGoToStep( HttpServletRequest request ) throws SiteMe
554544
@Action( value = ACTION_FORM_RESPONSE_SUMMARY )
555545
public synchronized XPage doFormResponseSummary( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException
556546
{
557-
IsRequestComingFromAction = true;
558547
Form form = null;
559548
try
560549
{
@@ -649,7 +638,6 @@ private Map<String, Object> buildModelForSummary( Form form, HttpServletRequest
649638
@Action( value = ACTION_SAVE_FORM_RESPONSE )
650639
public synchronized XPage doSaveFormResponse( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException, AccessDeniedException
651640
{
652-
IsRequestComingFromAction = true;
653641
// CSRF Token control
654642
if ( !SecurityTokenService.getInstance( ).validate( request, ACTION_SAVE_FORM_RESPONSE ) )
655643
{
@@ -696,7 +684,6 @@ public synchronized XPage doSaveFormResponse( HttpServletRequest request ) throw
696684
@Action( value = ACTION_SAVE_FORM_RESPONSE_SUMMARY )
697685
public synchronized XPage doSaveFormResponseSummary( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException, AccessDeniedException
698686
{
699-
IsRequestComingFromAction = true;
700687
// CSRF Token control
701688
if ( !SecurityTokenService.getInstance( ).validate( request, ACTION_SAVE_FORM_RESPONSE ) )
702689
{
@@ -934,7 +921,6 @@ public synchronized XPage doSaveStep( HttpServletRequest request ) throws SiteMe
934921
errorList.stream( ).collect( Collectors.joining( ) )
935922
}, null, null, null, SiteMessage.TYPE_ERROR, null, getViewFullUrl( VIEW_STEP ) );
936923
}
937-
IsRequestComingFromAction = true;
938924
return getStepView( request );
939925
}
940926

@@ -962,7 +948,6 @@ private boolean isCaptchaKO( HttpServletRequest request, boolean needValidation
962948
@Action( value = ACTION_SAVE_FOR_BACKUP )
963949
public synchronized XPage doSaveForBackup( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException, AccessDeniedException
964950
{
965-
IsRequestComingFromAction = true;
966951
// CSRF Token control
967952
if ( !SecurityTokenService.getInstance( ).validate( request, ACTION_SAVE_FORM_RESPONSE ) )
968953
{
@@ -1010,7 +995,6 @@ public synchronized XPage doSaveForBackup( HttpServletRequest request ) throws S
1010995

1011996
_formService.saveFormForBackup( formResponse );
1012997
_formResponseManager.setFormResponseUpdateDate( formResponse.getUpdateStatus( ) );
1013-
_formResponseManager.setIsResponseLoadedFromBackup(false);
1014998
_formService.saveFormForBackup(formResponse);
1015999
}
10161000
return getStepView( request );
@@ -1032,7 +1016,6 @@ public synchronized XPage doSaveForBackup( HttpServletRequest request ) throws S
10321016
@Action( value = ACTION_RESET_BACKUP )
10331017
public synchronized XPage doResetBackup( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException, AccessDeniedException
10341018
{
1035-
IsRequestComingFromAction = true;
10361019
// CSRF Token control
10371020
if ( !SecurityTokenService.getInstance( ).validate( request, ACTION_SAVE_FORM_RESPONSE ) )
10381021
{
@@ -1076,8 +1059,6 @@ public synchronized XPage doResetBackup( HttpServletRequest request ) throws Sit
10761059
@Action( value = ACTION_ADD_ITERATION )
10771060
public synchronized XPage doAddIteration( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException
10781061
{
1079-
IsRequestComingFromAction = true;
1080-
10811062
try
10821063
{
10831064
boolean bSessionLost = isSessionLost( );
@@ -1120,8 +1101,6 @@ public synchronized XPage doAddIteration( HttpServletRequest request ) throws Si
11201101
@Action( value = ACTION_REMOVE_ITERATION )
11211102
public synchronized XPage doRemoveIteration( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException
11221103
{
1123-
IsRequestComingFromAction = true;
1124-
11251104
try
11261105
{
11271106
boolean bSessionLost = isSessionLost( );
@@ -1164,7 +1143,6 @@ public synchronized XPage doRemoveIteration( HttpServletRequest request ) throws
11641143
@Action( value = ACTION_UPLOAD )
11651144
public synchronized XPage doSynchronousUploadDocument( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException
11661145
{
1167-
IsRequestComingFromAction = true;
11681146

11691147
boolean bSessionLost = isSessionLost( );
11701148
if ( bSessionLost )
@@ -1246,12 +1224,22 @@ public synchronized XPage doSynchronousUploadDocument( HttpServletRequest reques
12461224

12471225
return getStepView( request );
12481226
}
1249-
1227+
/*
1228+
* Check if the request is from a login page
1229+
*/
1230+
private void isRequestFromALoginPage (HttpServletRequest request)
1231+
{
1232+
String urlFromRequestReferer = request.getHeader("referer");
1233+
if (urlFromRequestReferer != null && urlFromRequestReferer.contains(AUTH_PROVIDER))
1234+
{
1235+
isRequestFromLoginPage = true;
1236+
}
1237+
}
12501238
private void initFormResponseManager( HttpServletRequest request, Form form )
12511239
{
12521240
LuteceUser user = SecurityService.getInstance( ).getRegisteredUser( request );
1253-
1254-
if ( _formResponseManager == null || !_formResponseManager.getIsResponseLoadedFromBackup() && !IsRequestComingFromAction)
1241+
isRequestFromALoginPage(request);
1242+
if ( _formResponseManager == null || isRequestFromLoginPage)
12551243
{
12561244
if ( user != null && form.isBackupEnabled() )
12571245
{
@@ -1261,6 +1249,7 @@ private void initFormResponseManager( HttpServletRequest request, Form form )
12611249
{
12621250
_formResponseManager = new FormResponseManager( form );
12631251
}
1252+
isRequestFromLoginPage = false;
12641253
}
12651254
}
12661255

@@ -1326,7 +1315,6 @@ private void init( int nIdForm )
13261315
_formResponseManager = null;
13271316
_stepDisplayTree = null;
13281317
_breadcrumb = null;
1329-
IsRequestComingFromAction = false;
13301318
}
13311319

13321320
/**

0 commit comments

Comments
 (0)