diff --git a/pom.xml b/pom.xml
index 7a65143c..b58ec43a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
lutece-global-pom
fr.paris.lutece.tools
- 5.2.1
+ 6.0.0
4.0.0
@@ -36,7 +36,7 @@
fr.paris.lutece
lutece-core
- [7.0.1,)
+ [7.0.6-SNAPSHOT,)
lutece-core
diff --git a/src/java/fr/paris/lutece/plugins/genericattributes/business/Field.java b/src/java/fr/paris/lutece/plugins/genericattributes/business/Field.java
index e5d17053..12e71fe4 100644
--- a/src/java/fr/paris/lutece/plugins/genericattributes/business/Field.java
+++ b/src/java/fr/paris/lutece/plugins/genericattributes/business/Field.java
@@ -35,7 +35,6 @@
import fr.paris.lutece.plugins.referencelist.business.ReferenceItem;
import fr.paris.lutece.portal.business.regularexpression.RegularExpression;
-
import java.io.Serializable;
import java.util.Date;
diff --git a/src/java/fr/paris/lutece/plugins/genericattributes/business/FieldDAO.java b/src/java/fr/paris/lutece/plugins/genericattributes/business/FieldDAO.java
index 6427a2cb..bee4b447 100644
--- a/src/java/fr/paris/lutece/plugins/genericattributes/business/FieldDAO.java
+++ b/src/java/fr/paris/lutece/plugins/genericattributes/business/FieldDAO.java
@@ -59,7 +59,7 @@ public final class FieldDAO implements IFieldDAO
private static final String SQL_QUERY_DELETE = "DELETE FROM genatt_field WHERE id_field = ? ";
private static final String SQL_QUERY_INSERT_VERIF_BY = "INSERT INTO genatt_verify_by(id_field,id_expression) VALUES(?,?) ";
private static final String SQL_QUERY_DELETE_VERIF_BY = "DELETE FROM genatt_verify_by WHERE id_field = ? and id_expression= ?";
- private static final String SQL_QUERY_UPDATE = "UPDATE genatt_field SET "
+ private static final String SQL_QUERY_UPDATE = "UPDATE genatt_field SET "
+ "id_field=?,id_entry=?,code=?,title=?,value=?,default_value=?,pos=?,value_type_date=?,no_display_title=?,comment=? WHERE id_field = ?";
private static final String SQL_QUERY_SELECT_FIELD_BY_ID_ENTRY = SQL_QUERY_SELECT_ALL + " WHERE id_entry = ? ORDER BY pos";
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 )
daoUtil.setDate( nIndex++, ( field.getValueTypeDate( ) == null ) ? null : new Date( field.getValueTypeDate( ).getTime( ) ) );
daoUtil.setBoolean( nIndex++, field.isNoDisplayTitle( ) );
daoUtil.setString( nIndex++, field.getComment( ) );
+
+
daoUtil.executeUpdate( );
if ( daoUtil.nextGeneratedKey( ) )
{
diff --git a/src/java/fr/paris/lutece/plugins/genericattributes/service/GenericAttributesPlugin.java b/src/java/fr/paris/lutece/plugins/genericattributes/service/GenericAttributesPlugin.java
index 99d016a4..33e0712c 100644
--- a/src/java/fr/paris/lutece/plugins/genericattributes/service/GenericAttributesPlugin.java
+++ b/src/java/fr/paris/lutece/plugins/genericattributes/service/GenericAttributesPlugin.java
@@ -33,6 +33,7 @@
*/
package fr.paris.lutece.plugins.genericattributes.service;
+import fr.paris.lutece.portal.service.fileimage.FileImagePublicService;
import fr.paris.lutece.portal.service.image.ImageResourceManager;
import fr.paris.lutece.portal.service.plugin.PluginDefaultImplementation;
import fr.paris.lutece.portal.service.util.AppPropertiesService;
@@ -59,5 +60,7 @@ public void init( )
{
ImageResourceManager.registerProvider( new ResponseImageResourceProvider( ) );
}
+
+ FileImagePublicService.init( );
}
}
diff --git a/src/java/fr/paris/lutece/plugins/genericattributes/service/ResponseImageResourceProvider.java b/src/java/fr/paris/lutece/plugins/genericattributes/service/ResponseImageResourceProvider.java
index e428c1e7..8900aaf0 100644
--- a/src/java/fr/paris/lutece/plugins/genericattributes/service/ResponseImageResourceProvider.java
+++ b/src/java/fr/paris/lutece/plugins/genericattributes/service/ResponseImageResourceProvider.java
@@ -99,4 +99,5 @@ public static String getUrlDownloadImageResponse( int nIdResponse )
return urlItem.getUrl( );
}
+
}
diff --git a/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeCheckBox.java b/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeCheckBox.java
index da843a92..ffd8c467 100644
--- a/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeCheckBox.java
+++ b/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeCheckBox.java
@@ -39,12 +39,17 @@
import fr.paris.lutece.plugins.genericattributes.business.MandatoryError;
import fr.paris.lutece.plugins.genericattributes.business.Response;
import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
+import fr.paris.lutece.portal.service.fileimage.FileImagePublicService;
import fr.paris.lutece.portal.service.i18n.I18nService;
+import fr.paris.lutece.portal.service.image.ImageResourceManager;
import fr.paris.lutece.portal.service.message.AdminMessage;
import fr.paris.lutece.portal.service.message.AdminMessageService;
+import fr.paris.lutece.portal.service.util.AppException;
import fr.paris.lutece.portal.service.util.AppLogService;
+import fr.paris.lutece.portal.web.upload.MultipartHttpServletRequest;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.fileupload.FileItem;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
@@ -60,6 +65,7 @@
*/
public abstract class AbstractEntryTypeCheckBox extends AbstractEntryTypeChoice
{
+ private static final String MESSAGE_ERROR_FILE_IMAGE = "Error importing file.";
/**
* {@inheritDoc}
*/
@@ -76,6 +82,8 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
String strFieldInLine = request.getParameter( PARAMETER_FIELD_IN_LINE );
String strCSSClass = request.getParameter( PARAMETER_CSS_CLASS );
String strOnlyDisplayInBack = request.getParameter( PARAMETER_ONLY_DISPLAY_IN_BACK );
+ MultipartHttpServletRequest multipartRequest = ( MultipartHttpServletRequest ) request;
+ FileItem imageFileItem = multipartRequest.getFile( PARAMETER_ILLUSTRATION_IMAGE );
int nFieldInLine = -1;
@@ -101,6 +109,21 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
return AdminMessageService.getMessageUrl( request, strFieldError, ERROR_FIELD_REF_LIST, AdminMessage.TYPE_STOP );
}
+ if ( imageFileItem != null && imageFileItem.getSize( ) > 0 )
+ {
+ try
+ {
+ String strFileStoreKey = ImageResourceManager.addImageResource( FileImagePublicService.IMAGE_RESOURCE_TYPE_ID, imageFileItem );
+ GenericAttributesUtils.createOrUpdateField( entry, FIELD_ILLUSTRATION_IMAGE, null, strFileStoreKey );
+ }
+ catch ( Exception e )
+ {
+ AppLogService.error( MESSAGE_ERROR_FILE_IMAGE, e );
+ throw new AppException( MESSAGE_ERROR_FILE_IMAGE, e );
+ }
+ }
+
+
entry.setCode( strCode );
entry.setTitle( strTitle );
entry.setHelpMessage( strHelpMessage );
diff --git a/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeImage.java b/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeImage.java
index 6b88ded1..451753bc 100644
--- a/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeImage.java
+++ b/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeImage.java
@@ -59,7 +59,7 @@ public GenericAttributeError getResponseData( Entry entry, HttpServletRequest re
if ( !entry.isMandatory( ) )
{
- String sourceBase = request.getParameter( ( IEntryTypeService.PREFIX_ATTRIBUTE + entry.getIdEntry( ) ) );
+ String sourceBase = request.getParameter( ( PREFIX_ATTRIBUTE + entry.getIdEntry( ) ) );
Response response = getResponseFromImage( sourceBase, entry, false );
response.setIterationNumber( getResponseIterationValue( request ) );
diff --git a/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeRadioButton.java b/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeRadioButton.java
index fc354d83..649ee545 100644
--- a/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeRadioButton.java
+++ b/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeRadioButton.java
@@ -39,11 +39,16 @@
import fr.paris.lutece.plugins.genericattributes.business.MandatoryError;
import fr.paris.lutece.plugins.genericattributes.business.Response;
import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
+import fr.paris.lutece.portal.service.fileimage.FileImagePublicService;
import fr.paris.lutece.portal.service.i18n.I18nService;
+import fr.paris.lutece.portal.service.image.ImageResourceManager;
import fr.paris.lutece.portal.service.message.AdminMessage;
import fr.paris.lutece.portal.service.message.AdminMessageService;
+import fr.paris.lutece.portal.service.util.AppException;
import fr.paris.lutece.portal.service.util.AppLogService;
+import fr.paris.lutece.portal.web.upload.MultipartHttpServletRequest;
+import org.apache.commons.fileupload.FileItem;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
@@ -56,6 +61,7 @@
*/
public abstract class AbstractEntryTypeRadioButton extends AbstractEntryTypeChoice
{
+ private static final String MESSAGE_ERROR_FILE_IMAGE = "Error importing file.";
/**
* {@inheritDoc}
*/
@@ -71,6 +77,8 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
String strFieldInLine = request.getParameter( PARAMETER_FIELD_IN_LINE );
String strCSSClass = request.getParameter( PARAMETER_CSS_CLASS );
String strOnlyDisplayInBack = request.getParameter( PARAMETER_ONLY_DISPLAY_IN_BACK );
+ MultipartHttpServletRequest multipartRequest = ( MultipartHttpServletRequest ) request;
+ FileItem imageFileItem = multipartRequest.getFile( PARAMETER_ILLUSTRATION_IMAGE );
int nFieldInLine = -1;
@@ -96,6 +104,19 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
return AdminMessageService.getMessageUrl( request, strFieldError, ERROR_FIELD_REF_LIST, AdminMessage.TYPE_STOP );
}
+ if ( imageFileItem != null && imageFileItem.getSize( ) > 0 )
+ {
+ try
+ {
+ String strFileStoreKey = ImageResourceManager.addImageResource( FileImagePublicService.IMAGE_RESOURCE_TYPE_ID, imageFileItem);
+ GenericAttributesUtils.createOrUpdateField( entry, FIELD_ILLUSTRATION_IMAGE, null, strFileStoreKey );
+ }
+ catch ( Exception e )
+ {
+ AppLogService.error( MESSAGE_ERROR_FILE_IMAGE, e );
+ throw new AppException( MESSAGE_ERROR_FILE_IMAGE, e );
+ }
+ }
entry.setCode( strCode );
entry.setTitle( strTitle );
entry.setHelpMessage( strHelpMessage );
diff --git a/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeText.java b/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeText.java
index 2bbecb20..c12deacb 100644
--- a/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeText.java
+++ b/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/AbstractEntryTypeText.java
@@ -37,8 +37,8 @@
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
-
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.fileupload.FileItem;
import org.apache.commons.lang3.StringUtils;
import fr.paris.lutece.plugins.genericattributes.business.Entry;
@@ -48,19 +48,25 @@
import fr.paris.lutece.plugins.genericattributes.business.Response;
import fr.paris.lutece.plugins.genericattributes.util.GenericAttributesUtils;
import fr.paris.lutece.portal.business.regularexpression.RegularExpression;
+import fr.paris.lutece.portal.service.fileimage.FileImagePublicService;
import fr.paris.lutece.portal.service.i18n.I18nService;
+import fr.paris.lutece.portal.service.image.ImageResourceManager;
import fr.paris.lutece.portal.service.message.AdminMessage;
import fr.paris.lutece.portal.service.message.AdminMessageService;
import fr.paris.lutece.portal.service.plugin.Plugin;
import fr.paris.lutece.portal.service.regularexpression.RegularExpressionService;
+import fr.paris.lutece.portal.service.util.AppException;
+import fr.paris.lutece.portal.service.util.AppLogService;
import fr.paris.lutece.util.ReferenceList;
import fr.paris.lutece.util.string.StringUtil;
+import fr.paris.lutece.portal.web.upload.MultipartHttpServletRequest;
/**
* Abstract entry type for text
*/
public abstract class AbstractEntryTypeText extends EntryTypeService
{
+ private static final String MESSAGE_ERROR_FILE_IMAGE = "Error importing file.";
/**
* {@inheritDoc}
*/
@@ -84,6 +90,8 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
String strErrorMessage = request.getParameter( PARAMETER_ERROR_MESSAGE );
String strIndexed = request.getParameter( PARAMETER_INDEXED );
String strPlaceholder = request.getParameter( PARAMETER_PLACEHOLDER );
+ MultipartHttpServletRequest multipartRequest = ( MultipartHttpServletRequest ) request;
+ FileItem imageFileItem = multipartRequest.getFile( PARAMETER_ILLUSTRATION_IMAGE );
int nWidth = -1;
int nMaxSizeEnter = -1;
@@ -153,11 +161,25 @@ public String getRequestData( Entry entry, HttpServletRequest request, Locale lo
entry.setErrorMessage( strErrorMessage );
entry.setCode( strCode );
+ if ( imageFileItem != null && imageFileItem.getSize( ) > 0 )
+ {
+ try
+ {
+ String strFileStoreKey = ImageResourceManager.addImageResource( FileImagePublicService.IMAGE_RESOURCE_TYPE_ID, imageFileItem );
+ GenericAttributesUtils.createOrUpdateField( entry, FIELD_ILLUSTRATION_IMAGE, imageFileItem.getName( ), strFileStoreKey );
+ }
+ catch ( Exception e )
+ {
+ AppLogService.error( MESSAGE_ERROR_FILE_IMAGE, e );
+ throw new AppException( MESSAGE_ERROR_FILE_IMAGE, e );
+ }
+ }
+
GenericAttributesUtils.createOrUpdateField( entry, FIELD_TEXT_CONF, null, strValue );
GenericAttributesUtils.createOrUpdateField( entry, FIELD_WIDTH, null, String.valueOf( nWidth ) );
GenericAttributesUtils.createOrUpdateField( entry, FIELD_MAX_SIZE, null, String.valueOf( nMaxSizeEnter ) );
GenericAttributesUtils.createOrUpdateField( entry, FIELD_PLACEHOLDER, null, strPlaceholder != null ? strPlaceholder : StringUtils.EMPTY );
-
+
entry.setMandatory( strMandatory != null );
entry.setOnlyDisplayInBack( strOnlyDisplayInBack != null );
diff --git a/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/IEntryTypeService.java b/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/IEntryTypeService.java
index ff7284cd..b3b12bf8 100644
--- a/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/IEntryTypeService.java
+++ b/src/java/fr/paris/lutece/plugins/genericattributes/service/entrytype/IEntryTypeService.java
@@ -94,6 +94,7 @@ public interface IEntryTypeService
String PARAMETER_USE_REF_LIST = "use_ref_list";
String PARAMETER_REF_LIST_SELECT = "select_ref_list";
String PARAMETER_PLACEHOLDER = "placeholder";
+ String PARAMETER_ILLUSTRATION_IMAGE = "illustration_image";
// Fields codes
String FIELD_DATE_VALUE = "default_date_value";
@@ -137,6 +138,7 @@ public interface IEntryTypeService
String FIELD_USE_REF_LIST = "use_ref_list";
String FIELD_ANONYMIZABLE = "anonymizable";
String FIELD_PLACEHOLDER = "placeholder";
+ String FIELD_ILLUSTRATION_IMAGE = "illustration_image";
// attribute
String ATTRIBUTE_RESPONSE_ITERATION_NUMBER = "response_iteration_number";