1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.genericattributes.service.entrytype;
35
36 import java.util.List;
37 import java.util.Locale;
38 import java.util.stream.Collectors;
39
40 import javax.servlet.http.HttpServletRequest;
41
42 import org.apache.commons.lang3.StringUtils;
43
44 import fr.paris.lutece.plugins.genericattributes.business.Entry;
45 import fr.paris.lutece.plugins.genericattributes.business.Field;
46 import fr.paris.lutece.plugins.genericattributes.business.FieldHome;
47 import fr.paris.lutece.plugins.genericattributes.business.ReferenceItemFieldHome;
48 import fr.paris.lutece.plugins.genericattributes.business.Response;
49 import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
50 import fr.paris.lutece.plugins.referencelist.business.ReferenceItem;
51 import fr.paris.lutece.plugins.referencelist.service.ReferenceItemListService;
52
53 public abstract class AbstractEntryTypeChoice extends EntryTypeService
54 {
55
56 @Override
57 public String getResponseValueForExport( Entry entry, HttpServletRequest request, Response response, Locale locale )
58 {
59 return response.getResponseValue( );
60 }
61
62 @Override
63 public String getResponseValueForRecap( Entry entry, HttpServletRequest request, Response response, Locale locale )
64 {
65 if ( response.getField( ) != null )
66 {
67 if ( response.getField( ).getTitle( ) == null )
68 {
69 Field field = FieldHome.findByPrimaryKey( response.getField( ).getIdField( ) );
70
71 if ( field != null )
72 {
73 response.setField( field );
74 }
75 }
76
77 return response.getField( ).getTitle( );
78 }
79
80 return null;
81 }
82
83 protected String createFieldsUseRefList( Entry entry, HttpServletRequest request )
84 {
85 String strUseRefList = request.getParameter( PARAMETER_USE_REF_LIST );
86 String strRefListSelect = request.getParameter( PARAMETER_REF_LIST_SELECT );
87
88 boolean useRefList = false;
89 int idRefList = -1;
90 if ( StringUtils.isNotEmpty( strUseRefList ) )
91 {
92 if ( StringUtils.isEmpty( strRefListSelect ) )
93 {
94 return MESSAGE_MANDATORY_FIELD;
95 }
96 useRefList = true;
97 idRefList = Integer.parseInt( strRefListSelect );
98 }
99
100 int oldIdRefList = -1;
101 Field field = entry.getFieldByCode( FIELD_USE_REF_LIST );
102 if ( field != null )
103 {
104 oldIdRefList = Integer.parseInt( field.getTitle( ) );
105 }
106 GenericAttributesUtils.createOrUpdateField( entry, FIELD_USE_REF_LIST, String.valueOf( idRefList ), String.valueOf( useRefList ) );
107
108
109 if ( oldIdRefList != idRefList )
110 {
111
112 List<Field> anwserFields = entry.getFields( ).stream( ).filter( f -> IEntryTypeService.FIELD_ANSWER_CHOICE.equals( f.getCode( ) ) )
113 .collect( Collectors.toList( ) );
114
115 for ( Field anwserField : anwserFields )
116 {
117 FieldHome.remove( anwserField.getIdField( ) );
118 ReferenceItemFieldHome.removeByField( anwserField.getIdField( ) );
119 entry.getFields( ).removeIf( f -> f.getIdField( ) == anwserField.getIdField( ) );
120 }
121
122
123 if ( useRefList )
124 {
125 for ( ReferenceItem item : ReferenceItemListService.getInstance( ).getReferenceItemsList( idRefList ) )
126 {
127 Field anwserField = GenericAttributesUtils.createFieldFromReferenceItem( entry, item );
128 entry.getFields( ).add( anwserField );
129 }
130 }
131 }
132 return null;
133 }
134 }