Skip to content

Commit 040e298

Browse files
committed
GENERICATT-132 add new field to entry type text, checkbox and radios
GENERICATT-132 add new field to entry type text GENERICATT-132 add new field to entry type text GENERICATT-132 add new attribute to entry type text GENERICATT-132 update POM to use new Lutece Core's FileImagePublicService class GENERICATT-132 update sql script init GENERICATT-132 add sql script upgrade GENERICATT-132 add illustration image field GENERICATT-132 add illustration image field GENERICATT-132 add illustration image field add new field to entry type text, checkbox and radios GENERICATT-132 add new field to entry type text, checkbox and radios
1 parent 751c348 commit 040e298

9 files changed

+91
-7
lines changed

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<artifactId>lutece-global-pom</artifactId>
55
<groupId>fr.paris.lutece.tools</groupId>
6-
<version>5.2.1</version>
6+
<version>6.0.0</version>
77
</parent>
88

99
<modelVersion>4.0.0</modelVersion>
@@ -36,7 +36,7 @@
3636
<dependency>
3737
<groupId>fr.paris.lutece</groupId>
3838
<artifactId>lutece-core</artifactId>
39-
<version>[7.0.1,)</version>
39+
<version>[7.0.6-SNAPSHOT,)</version>
4040
<type>lutece-core</type>
4141
</dependency>
4242
<dependency>

src/java/fr/paris/lutece/plugins/genericattributes/business/Field.java

-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535

3636
import fr.paris.lutece.plugins.referencelist.business.ReferenceItem;
3737
import fr.paris.lutece.portal.business.regularexpression.RegularExpression;
38-
3938
import java.io.Serializable;
4039

4140
import java.util.Date;

src/java/fr/paris/lutece/plugins/genericattributes/business/FieldDAO.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public final class FieldDAO implements IFieldDAO
5959
private static final String SQL_QUERY_DELETE = "DELETE FROM genatt_field WHERE id_field = ? ";
6060
private static final String SQL_QUERY_INSERT_VERIF_BY = "INSERT INTO genatt_verify_by(id_field,id_expression) VALUES(?,?) ";
6161
private static final String SQL_QUERY_DELETE_VERIF_BY = "DELETE FROM genatt_verify_by WHERE id_field = ? and id_expression= ?";
62-
private static final String SQL_QUERY_UPDATE = "UPDATE genatt_field SET "
62+
private static final String SQL_QUERY_UPDATE = "UPDATE genatt_field SET "
6363
+ "id_field=?,id_entry=?,code=?,title=?,value=?,default_value=?,pos=?,value_type_date=?,no_display_title=?,comment=? WHERE id_field = ?";
6464
private static final String SQL_QUERY_SELECT_FIELD_BY_ID_ENTRY = SQL_QUERY_SELECT_ALL + " WHERE id_entry = ? ORDER BY pos";
6565
private static final String SQL_QUERY_NEW_POSITION = "SELECT MAX(pos)" + " FROM genatt_field ";
@@ -113,6 +113,8 @@ public synchronized int insert( Field field, Plugin plugin )
113113
daoUtil.setDate( nIndex++, ( field.getValueTypeDate( ) == null ) ? null : new Date( field.getValueTypeDate( ).getTime( ) ) );
114114
daoUtil.setBoolean( nIndex++, field.isNoDisplayTitle( ) );
115115
daoUtil.setString( nIndex++, field.getComment( ) );
116+
117+
116118
daoUtil.executeUpdate( );
117119
if ( daoUtil.nextGeneratedKey( ) )
118120
{

src/java/fr/paris/lutece/plugins/genericattributes/service/ResponseImageResourceProvider.java

+9
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
*/
3434
package fr.paris.lutece.plugins.genericattributes.service;
3535

36+
import org.apache.commons.fileupload.FileItem;
37+
3638
import fr.paris.lutece.plugins.genericattributes.business.Response;
3739
import fr.paris.lutece.plugins.genericattributes.business.ResponseHome;
3840
import fr.paris.lutece.portal.business.file.File;
@@ -41,6 +43,7 @@
4143
import fr.paris.lutece.portal.business.physicalfile.PhysicalFileHome;
4244
import fr.paris.lutece.portal.service.image.ImageResource;
4345
import fr.paris.lutece.portal.service.image.ImageResourceProvider;
46+
import fr.paris.lutece.portal.service.util.AppException;
4447
import fr.paris.lutece.util.file.FileUtil;
4548
import fr.paris.lutece.util.url.UrlItem;
4649

@@ -99,4 +102,10 @@ public static String getUrlDownloadImageResponse( int nIdResponse )
99102

100103
return urlItem.getUrl( );
101104
}
105+
106+
@Override
107+
public String addImageResource( FileItem fileItem )
108+
{
109+
throw new AppException( "Not implemented yet." );
110+
}
102111
}

src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeCheckBox.java

+25
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,17 @@
3939
import fr.paris.lutece.plugins.genericattributes.business.MandatoryError;
4040
import fr.paris.lutece.plugins.genericattributes.business.Response;
4141
import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
42+
import fr.paris.lutece.portal.service.fileimage.FileImagePublicService;
4243
import fr.paris.lutece.portal.service.i18n.I18nService;
44+
import fr.paris.lutece.portal.service.image.ImageResourceManager;
4345
import fr.paris.lutece.portal.service.message.AdminMessage;
4446
import fr.paris.lutece.portal.service.message.AdminMessageService;
47+
import fr.paris.lutece.portal.service.util.AppException;
4548
import fr.paris.lutece.portal.service.util.AppLogService;
49+
import fr.paris.lutece.portal.web.upload.MultipartHttpServletRequest;
4650

4751
import org.apache.commons.collections.CollectionUtils;
52+
import org.apache.commons.fileupload.FileItem;
4853
import org.apache.commons.lang3.StringUtils;
4954

5055
import java.util.ArrayList;
@@ -60,13 +65,16 @@
6065
*/
6166
public abstract class AbstractEntryTypeCheckBox extends AbstractEntryTypeChoice
6267
{
68+
private static final String MESSAGE_ERROR_FILE_IMAGE = "Error importing file.";
6369
/**
6470
* {@inheritDoc}
6571
*/
6672
@Override
6773
public String getRequestData( Entry entry, HttpServletRequest request, Locale locale )
6874
{
6975
initCommonRequestData( entry, request );
76+
FileImagePublicService fileImagePublicService = FileImagePublicService.getInstance( );
77+
fileImagePublicService.register();
7078
String strCode = request.getParameter( PARAMETER_ENTRY_CODE );
7179
String strTitle = request.getParameter( PARAMETER_TITLE );
7280
String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null ) ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
@@ -76,6 +84,8 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
7684
String strFieldInLine = request.getParameter( PARAMETER_FIELD_IN_LINE );
7785
String strCSSClass = request.getParameter( PARAMETER_CSS_CLASS );
7886
String strOnlyDisplayInBack = request.getParameter( PARAMETER_ONLY_DISPLAY_IN_BACK );
87+
MultipartHttpServletRequest multipartRequest = ( MultipartHttpServletRequest ) request;
88+
FileItem imageFileItem = multipartRequest.getFile( PARAMETER_ILLUSTRATION_IMAGE );
7989

8090
int nFieldInLine = -1;
8191

@@ -101,6 +111,21 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
101111
return AdminMessageService.getMessageUrl( request, strFieldError, ERROR_FIELD_REF_LIST, AdminMessage.TYPE_STOP );
102112
}
103113

114+
if ( imageFileItem != null && imageFileItem.getSize( ) > 0 )
115+
{
116+
try
117+
{
118+
String strFileStoreKey = ImageResourceManager.addImageResource( fileImagePublicService.IMAGE_RESOURCE_TYPE_ID, imageFileItem);
119+
GenericAttributesUtils.createOrUpdateField( entry, FIELD_ILLUSTRATION_IMAGE, null, strFileStoreKey );
120+
}
121+
catch ( Exception e )
122+
{
123+
AppLogService.error( MESSAGE_ERROR_FILE_IMAGE, e );
124+
throw new AppException( MESSAGE_ERROR_FILE_IMAGE, e );
125+
}
126+
}
127+
128+
104129
entry.setCode( strCode );
105130
entry.setTitle( strTitle );
106131
entry.setHelpMessage( strHelpMessage );

src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeImage.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public GenericAttributeError getResponseData( Entry entry, HttpServletRequest re
5959

6060
if ( !entry.isMandatory( ) )
6161
{
62-
String sourceBase = request.getParameter( ( IEntryTypeService.PREFIX_ATTRIBUTE + entry.getIdEntry( ) ) );
62+
String sourceBase = request.getParameter( ( PREFIX_ATTRIBUTE + entry.getIdEntry( ) ) );
6363

6464
Response response = getResponseFromImage( sourceBase, entry, false );
6565
response.setIterationNumber( getResponseIterationValue( request ) );

src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeRadioButton.java

+23
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,16 @@
3939
import fr.paris.lutece.plugins.genericattributes.business.MandatoryError;
4040
import fr.paris.lutece.plugins.genericattributes.business.Response;
4141
import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
42+
import fr.paris.lutece.portal.service.fileimage.FileImagePublicService;
4243
import fr.paris.lutece.portal.service.i18n.I18nService;
44+
import fr.paris.lutece.portal.service.image.ImageResourceManager;
4345
import fr.paris.lutece.portal.service.message.AdminMessage;
4446
import fr.paris.lutece.portal.service.message.AdminMessageService;
47+
import fr.paris.lutece.portal.service.util.AppException;
4548
import fr.paris.lutece.portal.service.util.AppLogService;
49+
import fr.paris.lutece.portal.web.upload.MultipartHttpServletRequest;
4650

51+
import org.apache.commons.fileupload.FileItem;
4752
import org.apache.commons.lang3.StringUtils;
4853

4954
import java.util.List;
@@ -56,13 +61,16 @@
5661
*/
5762
public abstract class AbstractEntryTypeRadioButton extends AbstractEntryTypeChoice
5863
{
64+
private static final String MESSAGE_ERROR_FILE_IMAGE = "Error importing file.";
5965
/**
6066
* {@inheritDoc}
6167
*/
6268
@Override
6369
public String getRequestData( Entry entry, HttpServletRequest request, Locale locale )
6470
{
6571
initCommonRequestData( entry, request );
72+
FileImagePublicService fileImagePublicService = FileImagePublicService.getInstance( );
73+
fileImagePublicService.register();
6674
String strTitle = request.getParameter( PARAMETER_TITLE );
6775
String strCode = request.getParameter( PARAMETER_ENTRY_CODE );
6876
String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null ) ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
@@ -71,6 +79,8 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
7179
String strFieldInLine = request.getParameter( PARAMETER_FIELD_IN_LINE );
7280
String strCSSClass = request.getParameter( PARAMETER_CSS_CLASS );
7381
String strOnlyDisplayInBack = request.getParameter( PARAMETER_ONLY_DISPLAY_IN_BACK );
82+
MultipartHttpServletRequest multipartRequest = ( MultipartHttpServletRequest ) request;
83+
FileItem imageFileItem = multipartRequest.getFile( PARAMETER_ILLUSTRATION_IMAGE );
7484

7585
int nFieldInLine = -1;
7686

@@ -96,6 +106,19 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
96106
return AdminMessageService.getMessageUrl( request, strFieldError, ERROR_FIELD_REF_LIST, AdminMessage.TYPE_STOP );
97107
}
98108

109+
if ( imageFileItem != null && imageFileItem.getSize( ) > 0 )
110+
{
111+
try
112+
{
113+
String strFileStoreKey = ImageResourceManager.addImageResource( fileImagePublicService.IMAGE_RESOURCE_TYPE_ID, imageFileItem);
114+
GenericAttributesUtils.createOrUpdateField( entry, FIELD_ILLUSTRATION_IMAGE, null, strFileStoreKey );
115+
}
116+
catch ( Exception e )
117+
{
118+
AppLogService.error( MESSAGE_ERROR_FILE_IMAGE, e );
119+
throw new AppException( MESSAGE_ERROR_FILE_IMAGE, e );
120+
}
121+
}
99122
entry.setCode( strCode );
100123
entry.setTitle( strTitle );
101124
entry.setHelpMessage( strHelpMessage );

src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeText.java

+26-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
import java.util.Locale;
3838

3939
import javax.servlet.http.HttpServletRequest;
40-
4140
import org.apache.commons.collections.CollectionUtils;
41+
import org.apache.commons.fileupload.FileItem;
4242
import org.apache.commons.lang3.StringUtils;
4343

4444
import fr.paris.lutece.plugins.genericattributes.business.Entry;
@@ -48,26 +48,34 @@
4848
import fr.paris.lutece.plugins.genericattributes.business.Response;
4949
import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
5050
import fr.paris.lutece.portal.business.regularexpression.RegularExpression;
51+
import fr.paris.lutece.portal.service.fileimage.FileImagePublicService;
5152
import fr.paris.lutece.portal.service.i18n.I18nService;
53+
import fr.paris.lutece.portal.service.image.ImageResourceManager;
5254
import fr.paris.lutece.portal.service.message.AdminMessage;
5355
import fr.paris.lutece.portal.service.message.AdminMessageService;
5456
import fr.paris.lutece.portal.service.plugin.Plugin;
5557
import fr.paris.lutece.portal.service.regularexpression.RegularExpressionService;
58+
import fr.paris.lutece.portal.service.util.AppException;
59+
import fr.paris.lutece.portal.service.util.AppLogService;
5660
import fr.paris.lutece.util.ReferenceList;
5761
import fr.paris.lutece.util.string.StringUtil;
62+
import fr.paris.lutece.portal.web.upload.MultipartHttpServletRequest;
5863

5964
/**
6065
* Abstract entry type for text
6166
*/
6267
public abstract class AbstractEntryTypeText extends EntryTypeService
6368
{
69+
private static final String MESSAGE_ERROR_FILE_IMAGE = "Error importing file.";
6470
/**
6571
* {@inheritDoc}
6672
*/
6773
@Override
6874
public String getRequestData( Entry entry, HttpServletRequest request, Locale locale )
6975
{
7076
initCommonRequestData( entry, request );
77+
FileImagePublicService fileImagePublicService = FileImagePublicService.getInstance( );
78+
fileImagePublicService.init();
7179
String strCode = request.getParameter( PARAMETER_ENTRY_CODE );
7280
String strTitle = request.getParameter( PARAMETER_TITLE );
7381
String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null ) ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
@@ -84,6 +92,8 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
8492
String strErrorMessage = request.getParameter( PARAMETER_ERROR_MESSAGE );
8593
String strIndexed = request.getParameter( PARAMETER_INDEXED );
8694
String strPlaceholder = request.getParameter( PARAMETER_PLACEHOLDER );
95+
MultipartHttpServletRequest multipartRequest = ( MultipartHttpServletRequest ) request;
96+
FileItem imageFileItem = multipartRequest.getFile( PARAMETER_ILLUSTRATION_IMAGE );
8797

8898
int nWidth = -1;
8999
int nMaxSizeEnter = -1;
@@ -153,11 +163,25 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
153163
entry.setErrorMessage( strErrorMessage );
154164
entry.setCode( strCode );
155165

166+
if ( imageFileItem != null && imageFileItem.getSize( ) > 0 )
167+
{
168+
try
169+
{
170+
String strFileStoreKey = ImageResourceManager.addImageResource( fileImagePublicService.IMAGE_RESOURCE_TYPE_ID, imageFileItem);
171+
GenericAttributesUtils.createOrUpdateField( entry, FIELD_ILLUSTRATION_IMAGE, imageFileItem.getName( ), strFileStoreKey );
172+
}
173+
catch ( Exception e )
174+
{
175+
AppLogService.error( MESSAGE_ERROR_FILE_IMAGE, e );
176+
throw new AppException( MESSAGE_ERROR_FILE_IMAGE, e );
177+
}
178+
}
179+
156180
GenericAttributesUtils.createOrUpdateField( entry, FIELD_TEXT_CONF, null, strValue );
157181
GenericAttributesUtils.createOrUpdateField( entry, FIELD_WIDTH, null, String.valueOf( nWidth ) );
158182
GenericAttributesUtils.createOrUpdateField( entry, FIELD_MAX_SIZE, null, String.valueOf( nMaxSizeEnter ) );
159183
GenericAttributesUtils.createOrUpdateField( entry, FIELD_PLACEHOLDER, null, strPlaceholder != null ? strPlaceholder : StringUtils.EMPTY );
160-
184+
161185
entry.setMandatory( strMandatory != null );
162186
entry.setOnlyDisplayInBack( strOnlyDisplayInBack != null );
163187

src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/IEntryTypeService.java

+2
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public interface IEntryTypeService
9494
String PARAMETER_USE_REF_LIST = "use_ref_list";
9595
String PARAMETER_REF_LIST_SELECT = "select_ref_list";
9696
String PARAMETER_PLACEHOLDER = "placeholder";
97+
String PARAMETER_ILLUSTRATION_IMAGE = "illustration_image";
9798

9899
// Fields codes
99100
String FIELD_DATE_VALUE = "default_date_value";
@@ -137,6 +138,7 @@ public interface IEntryTypeService
137138
String FIELD_USE_REF_LIST = "use_ref_list";
138139
String FIELD_ANONYMIZABLE = "anonymizable";
139140
String FIELD_PLACEHOLDER = "placeholder";
141+
String FIELD_ILLUSTRATION_IMAGE = "illustration_image";
140142

141143
// attribute
142144
String ATTRIBUTE_RESPONSE_ITERATION_NUMBER = "response_iteration_number";

0 commit comments

Comments
 (0)