Skip to content

Commit b0314c4

Browse files
committed
LUT-26831: simplify get response from backup
1 parent 4b64abb commit b0314c4

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
{
@@ -936,7 +923,6 @@ public synchronized XPage doSaveStep( HttpServletRequest request ) throws SiteMe
936923
errorList.stream( ).collect( Collectors.joining( ) )
937924
}, null, null, null, SiteMessage.TYPE_ERROR, null, getViewFullUrl( VIEW_STEP ) );
938925
}
939-
IsRequestComingFromAction = true;
940926
return getStepView( request );
941927
}
942928

@@ -964,7 +950,6 @@ private boolean isCaptchaKO( HttpServletRequest request, boolean needValidation
964950
@Action( value = ACTION_SAVE_FOR_BACKUP )
965951
public synchronized XPage doSaveForBackup( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException, AccessDeniedException
966952
{
967-
IsRequestComingFromAction = true;
968953
// CSRF Token control
969954
if ( !SecurityTokenService.getInstance( ).validate( request, ACTION_SAVE_FORM_RESPONSE ) )
970955
{
@@ -1012,7 +997,6 @@ public synchronized XPage doSaveForBackup( HttpServletRequest request ) throws S
1012997

1013998
_formService.saveFormForBackup( formResponse );
1014999
_formResponseManager.setFormResponseUpdateDate( formResponse.getUpdateStatus( ) );
1015-
_formResponseManager.setIsResponseLoadedFromBackup(false);
10161000
_formService.saveFormForBackup(formResponse);
10171001
}
10181002
return getStepView( request );
@@ -1034,7 +1018,6 @@ public synchronized XPage doSaveForBackup( HttpServletRequest request ) throws S
10341018
@Action( value = ACTION_RESET_BACKUP )
10351019
public synchronized XPage doResetBackup( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException, AccessDeniedException
10361020
{
1037-
IsRequestComingFromAction = true;
10381021
// CSRF Token control
10391022
if ( !SecurityTokenService.getInstance( ).validate( request, ACTION_SAVE_FORM_RESPONSE ) )
10401023
{
@@ -1078,8 +1061,6 @@ public synchronized XPage doResetBackup( HttpServletRequest request ) throws Sit
10781061
@Action( value = ACTION_ADD_ITERATION )
10791062
public synchronized XPage doAddIteration( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException
10801063
{
1081-
IsRequestComingFromAction = true;
1082-
10831064
try
10841065
{
10851066
boolean bSessionLost = isSessionLost( );
@@ -1122,8 +1103,6 @@ public synchronized XPage doAddIteration( HttpServletRequest request ) throws Si
11221103
@Action( value = ACTION_REMOVE_ITERATION )
11231104
public synchronized XPage doRemoveIteration( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException
11241105
{
1125-
IsRequestComingFromAction = true;
1126-
11271106
try
11281107
{
11291108
boolean bSessionLost = isSessionLost( );
@@ -1166,7 +1145,6 @@ public synchronized XPage doRemoveIteration( HttpServletRequest request ) throws
11661145
@Action( value = ACTION_UPLOAD )
11671146
public synchronized XPage doSynchronousUploadDocument( HttpServletRequest request ) throws SiteMessageException, UserNotSignedException
11681147
{
1169-
IsRequestComingFromAction = true;
11701148

11711149
boolean bSessionLost = isSessionLost( );
11721150
if ( bSessionLost )
@@ -1248,12 +1226,22 @@ public synchronized XPage doSynchronousUploadDocument( HttpServletRequest reques
12481226

12491227
return getStepView( request );
12501228
}
1251-
1229+
/*
1230+
* Check if the request is from a login page
1231+
*/
1232+
private void isRequestFromALoginPage (HttpServletRequest request)
1233+
{
1234+
String urlFromRequestReferer = request.getHeader("referer");
1235+
if (urlFromRequestReferer != null && urlFromRequestReferer.contains(AUTH_PROVIDER))
1236+
{
1237+
isRequestFromLoginPage = true;
1238+
}
1239+
}
12521240
private void initFormResponseManager( HttpServletRequest request, Form form )
12531241
{
12541242
LuteceUser user = SecurityService.getInstance( ).getRegisteredUser( request );
1255-
1256-
if ( _formResponseManager == null || !_formResponseManager.getIsResponseLoadedFromBackup() && !IsRequestComingFromAction)
1243+
isRequestFromALoginPage(request);
1244+
if ( _formResponseManager == null || isRequestFromLoginPage)
12571245
{
12581246
if ( user != null && form.isBackupEnabled() )
12591247
{
@@ -1263,6 +1251,7 @@ private void initFormResponseManager( HttpServletRequest request, Form form )
12631251
{
12641252
_formResponseManager = new FormResponseManager( form );
12651253
}
1254+
isRequestFromLoginPage = false;
12661255
}
12671256
}
12681257

@@ -1328,7 +1317,6 @@ private void init( int nIdForm )
13281317
_formResponseManager = null;
13291318
_stepDisplayTree = null;
13301319
_breadcrumb = null;
1331-
IsRequestComingFromAction = false;
13321320
}
13331321

13341322
/**

0 commit comments

Comments
 (0)