Skip to content

Commit 0d1c04d

Browse files
committed
GENERICATT-132 add new field to entry type text
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 GENERICATT-132 add new field to entry type text GENERICATT-132 add new field to entry type text
1 parent 751c348 commit 0d1c04d

File tree

10 files changed

+79
-6
lines changed

10 files changed

+79
-6
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Lines changed: 0 additions & 1 deletion
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

Lines changed: 3 additions & 1 deletion
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/GenericAttributesPlugin.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
*/
3434
package fr.paris.lutece.plugins.genericattributes.service;
3535

36+
import fr.paris.lutece.portal.service.fileimage.FileImagePublicService;
3637
import fr.paris.lutece.portal.service.image.ImageResourceManager;
3738
import fr.paris.lutece.portal.service.plugin.PluginDefaultImplementation;
3839
import fr.paris.lutece.portal.service.util.AppPropertiesService;
@@ -59,5 +60,7 @@ public void init( )
5960
{
6061
ImageResourceManager.registerProvider( new ResponseImageResourceProvider( ) );
6162
}
63+
64+
FileImagePublicService.init( );
6265
}
6366
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,5 @@ public static String getUrlDownloadImageResponse( int nIdResponse )
9999

100100
return urlItem.getUrl( );
101101
}
102+
102103
}

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

Lines changed: 23 additions & 0 deletions
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,6 +65,7 @@
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
*/
@@ -76,6 +82,8 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
7682
String strFieldInLine = request.getParameter( PARAMETER_FIELD_IN_LINE );
7783
String strCSSClass = request.getParameter( PARAMETER_CSS_CLASS );
7884
String strOnlyDisplayInBack = request.getParameter( PARAMETER_ONLY_DISPLAY_IN_BACK );
85+
MultipartHttpServletRequest multipartRequest = ( MultipartHttpServletRequest ) request;
86+
FileItem imageFileItem = multipartRequest.getFile( PARAMETER_ILLUSTRATION_IMAGE );
7987

8088
int nFieldInLine = -1;
8189

@@ -101,6 +109,21 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
101109
return AdminMessageService.getMessageUrl( request, strFieldError, ERROR_FIELD_REF_LIST, AdminMessage.TYPE_STOP );
102110
}
103111

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

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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 21 additions & 0 deletions
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,6 +61,7 @@
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
*/
@@ -71,6 +77,8 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
7177
String strFieldInLine = request.getParameter( PARAMETER_FIELD_IN_LINE );
7278
String strCSSClass = request.getParameter( PARAMETER_CSS_CLASS );
7379
String strOnlyDisplayInBack = request.getParameter( PARAMETER_ONLY_DISPLAY_IN_BACK );
80+
MultipartHttpServletRequest multipartRequest = ( MultipartHttpServletRequest ) request;
81+
FileItem imageFileItem = multipartRequest.getFile( PARAMETER_ILLUSTRATION_IMAGE );
7482

7583
int nFieldInLine = -1;
7684

@@ -96,6 +104,19 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
96104
return AdminMessageService.getMessageUrl( request, strFieldError, ERROR_FIELD_REF_LIST, AdminMessage.TYPE_STOP );
97105
}
98106

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

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

Lines changed: 24 additions & 2 deletions
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,19 +48,25 @@
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
*/
@@ -84,6 +90,8 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
8490
String strErrorMessage = request.getParameter( PARAMETER_ERROR_MESSAGE );
8591
String strIndexed = request.getParameter( PARAMETER_INDEXED );
8692
String strPlaceholder = request.getParameter( PARAMETER_PLACEHOLDER );
93+
MultipartHttpServletRequest multipartRequest = ( MultipartHttpServletRequest ) request;
94+
FileItem imageFileItem = multipartRequest.getFile( PARAMETER_ILLUSTRATION_IMAGE );
8795

8896
int nWidth = -1;
8997
int nMaxSizeEnter = -1;
@@ -153,11 +161,25 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
153161
entry.setErrorMessage( strErrorMessage );
154162
entry.setCode( strCode );
155163

164+
if ( imageFileItem != null && imageFileItem.getSize( ) > 0 )
165+
{
166+
try
167+
{
168+
String strFileStoreKey = ImageResourceManager.addImageResource( FileImagePublicService.IMAGE_RESOURCE_TYPE_ID, imageFileItem );
169+
GenericAttributesUtils.createOrUpdateField( entry, FIELD_ILLUSTRATION_IMAGE, imageFileItem.getName( ), strFileStoreKey );
170+
}
171+
catch ( Exception e )
172+
{
173+
AppLogService.error( MESSAGE_ERROR_FILE_IMAGE, e );
174+
throw new AppException( MESSAGE_ERROR_FILE_IMAGE, e );
175+
}
176+
}
177+
156178
GenericAttributesUtils.createOrUpdateField( entry, FIELD_TEXT_CONF, null, strValue );
157179
GenericAttributesUtils.createOrUpdateField( entry, FIELD_WIDTH, null, String.valueOf( nWidth ) );
158180
GenericAttributesUtils.createOrUpdateField( entry, FIELD_MAX_SIZE, null, String.valueOf( nMaxSizeEnter ) );
159181
GenericAttributesUtils.createOrUpdateField( entry, FIELD_PLACEHOLDER, null, strPlaceholder != null ? strPlaceholder : StringUtils.EMPTY );
160-
182+
161183
entry.setMandatory( strMandatory != null );
162184
entry.setOnlyDisplayInBack( strOnlyDisplayInBack != null );
163185

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

Lines changed: 2 additions & 0 deletions
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)