Skip to content

Commit

Permalink
GENERICATT-132 add new field to entry type text, checkbox and radios
Browse files Browse the repository at this point in the history
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
  • Loading branch information
rdeniel committed Apr 29, 2022
1 parent 751c348 commit 040e298
Show file tree
Hide file tree
Showing 9 changed files with 91 additions and 7 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<parent>
<artifactId>lutece-global-pom</artifactId>
<groupId>fr.paris.lutece.tools</groupId>
<version>5.2.1</version>
<version>6.0.0</version>
</parent>

<modelVersion>4.0.0</modelVersion>
Expand Down Expand Up @@ -36,7 +36,7 @@
<dependency>
<groupId>fr.paris.lutece</groupId>
<artifactId>lutece-core</artifactId>
<version>[7.0.1,)</version>
<version>[7.0.6-SNAPSHOT,)</version>
<type>lutece-core</type>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 ";
Expand Down Expand Up @@ -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( ) )
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
*/
package fr.paris.lutece.plugins.genericattributes.service;

import org.apache.commons.fileupload.FileItem;

import fr.paris.lutece.plugins.genericattributes.business.Response;
import fr.paris.lutece.plugins.genericattributes.business.ResponseHome;
import fr.paris.lutece.portal.business.file.File;
Expand All @@ -41,6 +43,7 @@
import fr.paris.lutece.portal.business.physicalfile.PhysicalFileHome;
import fr.paris.lutece.portal.service.image.ImageResource;
import fr.paris.lutece.portal.service.image.ImageResourceProvider;
import fr.paris.lutece.portal.service.util.AppException;
import fr.paris.lutece.util.file.FileUtil;
import fr.paris.lutece.util.url.UrlItem;

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

return urlItem.getUrl( );
}

@Override
public String addImageResource( FileItem fileItem )
{
throw new AppException( "Not implemented yet." );
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -60,13 +65,16 @@
*/
public abstract class AbstractEntryTypeCheckBox extends AbstractEntryTypeChoice
{
private static final String MESSAGE_ERROR_FILE_IMAGE = "Error importing file.";
/**
* {@inheritDoc}
*/
@Override
public String getRequestData( Entry entry, HttpServletRequest request, Locale locale )
{
initCommonRequestData( entry, request );
FileImagePublicService fileImagePublicService = FileImagePublicService.getInstance( );
fileImagePublicService.register();
String strCode = request.getParameter( PARAMETER_ENTRY_CODE );
String strTitle = request.getParameter( PARAMETER_TITLE );
String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null ) ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
Expand All @@ -76,6 +84,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;

Expand All @@ -101,6 +111,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 );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 ) );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -56,13 +61,16 @@
*/
public abstract class AbstractEntryTypeRadioButton extends AbstractEntryTypeChoice
{
private static final String MESSAGE_ERROR_FILE_IMAGE = "Error importing file.";
/**
* {@inheritDoc}
*/
@Override
public String getRequestData( Entry entry, HttpServletRequest request, Locale locale )
{
initCommonRequestData( entry, request );
FileImagePublicService fileImagePublicService = FileImagePublicService.getInstance( );
fileImagePublicService.register();
String strTitle = request.getParameter( PARAMETER_TITLE );
String strCode = request.getParameter( PARAMETER_ENTRY_CODE );
String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null ) ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
Expand All @@ -71,6 +79,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;

Expand All @@ -96,6 +106,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 );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -48,26 +48,34 @@
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}
*/
@Override
public String getRequestData( Entry entry, HttpServletRequest request, Locale locale )
{
initCommonRequestData( entry, request );
FileImagePublicService fileImagePublicService = FileImagePublicService.getInstance( );
fileImagePublicService.init();
String strCode = request.getParameter( PARAMETER_ENTRY_CODE );
String strTitle = request.getParameter( PARAMETER_TITLE );
String strHelpMessage = ( request.getParameter( PARAMETER_HELP_MESSAGE ) != null ) ? request.getParameter( PARAMETER_HELP_MESSAGE ).trim( ) : null;
Expand All @@ -84,6 +92,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;
Expand Down Expand Up @@ -153,11 +163,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 );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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";
Expand Down

0 comments on commit 040e298

Please sign in to comment.