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;
35
36 import java.util.List;
37 import java.util.stream.Collectors;
38
39 import org.apache.commons.collections.CollectionUtils;
40
41 import fr.paris.lutece.plugins.genericattributes.business.Entry;
42 import fr.paris.lutece.plugins.genericattributes.business.EntryHome;
43 import fr.paris.lutece.plugins.genericattributes.business.Field;
44 import fr.paris.lutece.plugins.genericattributes.business.FieldHome;
45 import fr.paris.lutece.plugins.genericattributes.business.ReferenceItemFieldHome;
46 import fr.paris.lutece.plugins.genericattributes.service.entrytype.IEntryTypeService;
47 import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
48 import fr.paris.lutece.plugins.referencelist.business.ReferenceItem;
49 import fr.paris.lutece.plugins.referencelist.service.IReferenceItemListener;
50
51 public class GenattReferenceItemListener implements IReferenceItemListener
52 {
53
54 @Override
55 public void addReferenceItem( ReferenceItem item )
56 {
57 List<Entry> entryList = listConcernedEntries( item.getIdreference( ) );
58 if ( CollectionUtils.isEmpty( entryList ) )
59 {
60 return;
61 }
62
63 for ( Entry entry : entryList )
64 {
65 Field field = GenericAttributesUtils.createFieldFromReferenceItem( entry, item );
66 FieldHome.create( field );
67 }
68 }
69
70 @Override
71 public void removeReferenceItem( ReferenceItem item )
72 {
73 List<Integer> idFields = ReferenceItemFieldHome.findIdFieldByIdItem( item.getId( ) );
74 for ( Integer id : idFields )
75 {
76 FieldHome.remove( id );
77 }
78 ReferenceItemFieldHome.removeByItem( item.getId( ) );
79 }
80
81 @Override
82 public void updateReferenceItem( ReferenceItem item )
83 {
84 List<Integer> idFields = ReferenceItemFieldHome.findIdFieldByIdItem( item.getId( ) );
85 for ( Integer id : idFields )
86 {
87 Field field = FieldHome.findByPrimaryKey( id );
88 field.setValue( item.getCode( ) );
89 field.setTitle( item.getName( ) );
90 FieldHome.update( field );
91 }
92
93 }
94
95 private List<Entry> listConcernedEntries( int idList )
96 {
97 List<Field> listField = FieldHome.getFieldListByCode( IEntryTypeService.FIELD_USE_REF_LIST );
98 return listField.stream( ).filter( f -> Integer.parseInt( f.getTitle( ) ) == idList ).map( Field::getParentEntry ).map( Entry::getIdEntry ).distinct( )
99 .map( EntryHome::findByPrimaryKey ).collect( Collectors.toList( ) );
100 }
101 }