BlogParameterService.java

package fr.paris.lutece.plugins.blog.service;

import fr.paris.lutece.portal.service.datastore.DatastoreService;
import fr.paris.lutece.portal.service.util.AppLogService;

import org.apache.commons.lang3.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Blog parameter service.
 */
public class BlogParameterService
{
    private static BlogParameterService _singleton = new BlogParameterService( );

    public static final String DSKEY_DEFAULT_NUMBER_MANDATORY_TAGS = "blog.advanced_parameters.number_mandatory_tags";
    public static final String DSKEY_DEFAULT_DATE_END_PUBLISHING = "blog.advanced_parameters.default_date_end_publishing";
    public static final String DSKEY_DEFAULT_EDITOR = "blog.advanced_parameters.editor";
    public static final String MARK_DEFAULT_NUMBER_MANDATORY_TAGS = "number_mandatory_tags";
    public static final String MARK_DEFAULT_DATE_END_PUBLISHING = "default_date_end_publishing";
    public static final String MARK_DEFAULT_EDITOR = "default_editor";
    public static final String DSKEY_DEFAULT_EDITOR_BACK_OFFICE = "core.backOffice.defaultEditor";
    
    private static final String FIELD_DATEFORMAT = "yyyy-MM-dd";
    private static final String DB_DATEFORMAT = "dd/MM/yyyy";

    /**
     * Get the unique instance of the service
     *
     * @return The unique instance
     */
    public static BlogParameterService getInstance( )
    {
        return _singleton;
    }

    /**
     * Do modify the number of mandatory tags for a blog
     *
     * @param nbMandatoryTags
     */
    public void updateNumberMandatoryTags(String nbMandatoryTags)
    {
        int valueNbMandatoryTags = 0;
        try
        {
            valueNbMandatoryTags = Integer.parseInt(nbMandatoryTags);
        }
        catch (NumberFormatException e)
        {
            AppLogService.error("Incorrect value for number mandatory tags", e);
        }

        if(valueNbMandatoryTags<0)
        {
            valueNbMandatoryTags=0;
        }

        DatastoreService.setDataValue( DSKEY_DEFAULT_NUMBER_MANDATORY_TAGS, Integer.toString(valueNbMandatoryTags));
    }

    /**
     * Get the number of mandatory tags for a blog
     *
     * @return numberMandatoryTags
     */
    public int getNumberMandatoryTags( )
    {
        try
        {
            return Integer.parseInt(DatastoreService.getDataValue( DSKEY_DEFAULT_NUMBER_MANDATORY_TAGS , "0" ));
        }
        catch (NumberFormatException e)
        {
            return 0;
        }
    }


    /**
     * Update default end publishing date from string iso date
     *
     * @param strValue date format 'yyyy-mm-dd'
     */
    public void updateDefaultDateEndPublishing(String strValue)
    {
        if (StringUtils.isNotBlank( strValue ))
        {
            try
            {
                SimpleDateFormat formatField = new SimpleDateFormat(FIELD_DATEFORMAT);
                Date date = formatField.parse(strValue);

                SimpleDateFormat format = new SimpleDateFormat(DB_DATEFORMAT);
                String strDbDate = format.format(date);

                DatastoreService.setDataValue( DSKEY_DEFAULT_DATE_END_PUBLISHING, strDbDate );
            }
            catch (ParseException e)
            {
                AppLogService.error("Incorrect value for default date end publishing update", e);
            }
        }
    }
    
    /**
     * Get String default editor
     *
     * @return default editor
     */
    public java.sql.Date getDefaultDateEndPublishing()
    {
        SimpleDateFormat format = new SimpleDateFormat(DB_DATEFORMAT);
        try
        {
            return new java.sql.Date(format.parse(DatastoreService.getDataValue( DSKEY_DEFAULT_DATE_END_PUBLISHING , "" )).getTime());
        }
        catch (ParseException e)
        {
            return null;
        }
    }
   
    /**
     * Update default editor
     *
     * @param strValue editor name
     */
    public void updateDefaultEditor(String strValue)
    {
        try
        {
            DatastoreService.setDataValue( DSKEY_DEFAULT_EDITOR, strValue );
        }
        catch (Exception e)
        {
            AppLogService.error("Error updating editor config", e );
        }
    }

     /**
     * Get String default editor name
     *
     * @return default editor name for plugin
     */
    public String getDefaultBlogEditor()
    {
        String strDefaultEditor = DatastoreService.getDataValue( DSKEY_DEFAULT_EDITOR_BACK_OFFICE, "" );
        String strBlogDefaultEditor = DatastoreService.getDataValue( DSKEY_DEFAULT_EDITOR, "" );
        if (StringUtils.isNotBlank( strBlogDefaultEditor ))
        {
            return strBlogDefaultEditor;
        }
        else
        {
            return strDefaultEditor;
        }
             
    }

}