Commit 022b89f0 authored by Francois Merlin's avatar Francois Merlin
Browse files

RELEASER-13 :-refactor workflow context history

parent ef6780ad
/*
* Copyright (c) 2002-2020, Mairie de Paris
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright notice
* and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice
* and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* License 1.0
*/
package fr.paris.lutece.plugins.releaser.business;
import fr.paris.lutece.portal.service.plugin.Plugin;
import fr.paris.lutece.util.ReferenceList;
import java.util.List;
/**
* IWorkflowDeployContextDAO Interface
*/
public interface IWorkflowContextHistoryDAO
{
/**
* Insert a new record in the table.
* @param workflowDeployContext instance of the WorkflowDeployContext object to insert
* @param plugin the Plugin
*/
void insert( WorkflowContextHistory workflowDeployContext, Plugin plugin );
/**
* Update the record in the table
* @param workflowDeployContext the reference of the WorkflowDeployContext
* @param plugin the Plugin
*/
void store( WorkflowContextHistory workflowDeployContext, Plugin plugin );
/**
* Delete a record from the table
* @param nKey The identifier of the WorkflowDeployContext to delete
* @param plugin the Plugin
*/
void delete( int nKey, Plugin plugin );
///////////////////////////////////////////////////////////////////////////
// Finders
/**
* Load the data from the table
* @param nKey The identifier of the workflowDeployContext
* @param plugin the Plugin
* @return The instance of the workflowDeployContext
*/
WorkflowContextHistory load( int nKey, Plugin plugin );
/**
* Load the data of all the workflowDeployContext objects and returns them as a list
* @param plugin the Plugin
* @return The list which contains the data of all the workflowDeployContext objects
*/
List<WorkflowContextHistory> selectWorkflowDeployContextsList( Plugin plugin );
/**
* {@inheritDoc }
*/
List<WorkflowContextHistory> selectWorkflowDeployContextsListByArtifactId(Plugin plugin, String strArtifactId);
}
\ No newline at end of file
......@@ -542,10 +542,13 @@ public class Site extends AbstractReleaserResource implements RBACResource, Seri
}
public void setPermissions(HashMap<String, Boolean> permissions) {
if ( this.permissions == null) this.permissions = new HashMap<String, Boolean>( );
else this.permissions.clear();
this.permissions.putAll( permissions );
if (this.permissions == null)
this.permissions = new HashMap<String, Boolean>();
else
this.permissions.clear();
if (permissions != null) {
this.permissions.putAll(permissions);
}
}
......
/*
* Copyright (c) 2002-2020, Mairie de Paris
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright notice
* and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice
* and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* License 1.0
*/
package fr.paris.lutece.plugins.releaser.business;
import java.io.Serializable;
import java.sql.Timestamp;
// TODO: Auto-generated Javadoc
/**
* This is the business class for the object WorkflowDeployContext.
*/
public class WorkflowContextHistory implements Serializable {
/** The Constant serialVersionUID. */
private static final long serialVersionUID = 1L;
/** The n id. */
// Variables declarations
private int _nId;
/** The date begin. */
private Timestamp _dateBegin;
/** The date end. */
private Timestamp _dateEnd;
/** The str artifact id. */
private String _strArtifactId;
/** The str data. */
private String _strData;
/** The str user. */
private String _strUser;
/**
* Returns the Id.
*
* @return The Id
*/
public int getId() {
return _nId;
}
/**
* Sets the Id.
*
* @param nId The Id
*/
public void setId(int nId) {
_nId = nId;
}
/**
* Returns the Data.
*
* @return The Data
*/
public String getData() {
return _strData;
}
/**
* Sets the Data.
*
* @param strData The Data
*/
public void setData(String strData) {
_strData = strData;
}
/**
* Returns the User.
*
* @return The User
*/
public String getUser() {
return _strUser;
}
/**
* Sets the User.
*
* @param strUser The User
*/
public void setUser(String strUser) {
_strUser = strUser;
}
/**
* Gets the date begin.
*
* @return the date begin
*/
public Timestamp getDateBegin() {
return _dateBegin;
}
/**
* Sets the date begin.
*
* @param _dateBegin the new date begin
*/
public void setDateBegin(Timestamp _dateBegin) {
this._dateBegin = _dateBegin;
}
/**
* Gets the date end.
*
* @return the date end
*/
public Timestamp getDateEnd() {
return _dateEnd;
}
/**
* Sets the date end.
*
* @param _dateEnd the new date end
*/
public void setDateEnd(Timestamp _dateEnd) {
this._dateEnd = _dateEnd;
}
/**
* Gets the artifact id.
*
* @return the artifact id
*/
public String getArtifactId() {
return _strArtifactId;
}
/**
* Sets the artifact id.
*
* @param _strArtifactId the new artifact id
*/
public void setArtifactId(String _strArtifactId) {
this._strArtifactId = _strArtifactId;
}
}
/*
* Copyright (c) 2002-2020, Mairie de Paris
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright notice
* and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice
* and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* License 1.0
*/
package fr.paris.lutece.plugins.releaser.business;
import fr.paris.lutece.portal.service.plugin.Plugin;
import fr.paris.lutece.util.ReferenceList;
import fr.paris.lutece.util.sql.DAOUtil;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
* This class provides Data Access methods for WorkflowDeployContext objects
*/
public final class WorkflowContextHistoryDAO implements IWorkflowContextHistoryDAO
{
// Constants
private static final String SQL_QUERY_SELECT = "SELECT id_wf_context, date_begin, date_end, artifact_id,data, user_name FROM releaser_workflow_context_history WHERE id_wf_context = ?";
private static final String SQL_QUERY_INSERT = "INSERT INTO releaser_workflow_context_history ( date_begin, date_end, artifact_id,data, user_name ) VALUES ( ?, ?, ?, ?, ?) ";
private static final String SQL_QUERY_DELETE = "DELETE FROM releaser_workflow_context_history WHERE id_wf_context = ? ";
private static final String SQL_QUERY_UPDATE = "UPDATE releaser_workflow_context_history SET id_wf_context = ?, date_begin = ?, date_end = ?, artifact_id= ?, data = ?, user_name = ? WHERE id_wf_context = ?";
private static final String SQL_QUERY_SELECTALL = "SELECT id_wf_context, date_begin, date_end, artifact_id ,data, user_name FROM releaser_workflow_context_history";
private static final String FILTER_BY_ARTIFACT_ID = " WHERE artifact_id= ?";
/**
* {@inheritDoc }
*/
@Override
public void insert( WorkflowContextHistory workflowContext, Plugin plugin )
{
try( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT, Statement.RETURN_GENERATED_KEYS, plugin ) )
{
int nIndex = 1;
daoUtil.setTimestamp( nIndex++ , workflowContext.getDateBegin( ) );
daoUtil.setTimestamp( nIndex++ , workflowContext.getDateEnd( ) );
daoUtil.setString( nIndex++ , workflowContext.getArtifactId() );
daoUtil.setString( nIndex++ , workflowContext.getData( ) );
daoUtil.setString( nIndex++ , workflowContext.getUser( ) );
daoUtil.executeUpdate( );
if ( daoUtil.nextGeneratedKey( ) )
{
workflowContext.setId( daoUtil.getGeneratedKeyInt( 1 ) );
}
}
}
/**
* {@inheritDoc }
*/
@Override
public WorkflowContextHistory load( int nKey, Plugin plugin )
{
try( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT, plugin ) )
{
daoUtil.setInt( 1 , nKey );
daoUtil.executeQuery( );
WorkflowContextHistory workflowContext = null;
if ( daoUtil.next( ) )
{
workflowContext = new WorkflowContextHistory();
int nIndex = 1;
workflowContext.setId( daoUtil.getInt( nIndex++ ) );
workflowContext.setDateBegin( daoUtil.getTimestamp( nIndex++ ) );
workflowContext.setDateEnd( daoUtil.getTimestamp( nIndex++ ) );
workflowContext.setArtifactId( daoUtil.getString( nIndex++ ) );
workflowContext.setData( daoUtil.getString( nIndex++ ) );
workflowContext.setUser( daoUtil.getString( nIndex ) );
}
daoUtil.free( );
return workflowContext;
}
}
/**
* {@inheritDoc }
*/
@Override
public void delete( int nKey, Plugin plugin )
{
try( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE, plugin ) )
{
daoUtil.setInt( 1 , nKey );
daoUtil.executeUpdate( );
daoUtil.free( );
}
}
/**
* {@inheritDoc }
*/
@Override
public void store( WorkflowContextHistory workflowContext, Plugin plugin )
{
try( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE, plugin ) )
{
int nIndex = 1;
daoUtil.setInt( nIndex++ , workflowContext.getId( ) );
daoUtil.setTimestamp( nIndex++ , workflowContext.getDateBegin( ) );
daoUtil.setTimestamp( nIndex++ , workflowContext.getDateEnd( ) );
daoUtil.setString( nIndex++ , workflowContext.getArtifactId() );
daoUtil.setString( nIndex++ , workflowContext.getData( ) );
daoUtil.setString( nIndex++ , workflowContext.getUser( ) );
daoUtil.setInt( nIndex , workflowContext.getId( ) );
daoUtil.executeUpdate( );
daoUtil.free( );
}
}
/**
* {@inheritDoc }
*/
@Override
public List<WorkflowContextHistory> selectWorkflowDeployContextsList( Plugin plugin )
{
List<WorkflowContextHistory> workflowContextList = new ArrayList<>( );
try( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECTALL, plugin ) )
{
daoUtil.executeQuery( );
while ( daoUtil.next( ) )
{
WorkflowContextHistory workflowContext = new WorkflowContextHistory( );
int nIndex = 1;
workflowContext.setId( daoUtil.getInt( nIndex++ ) );
workflowContext.setDateBegin( daoUtil.getTimestamp( nIndex++ ) );
workflowContext.setDateEnd( daoUtil.getTimestamp( nIndex++ ) );
workflowContext.setArtifactId( daoUtil.getString( nIndex++ ) );
workflowContext.setData( daoUtil.getString( nIndex++ ) );
workflowContext.setUser( daoUtil.getString( nIndex ) );
workflowContextList.add( workflowContext );
}
daoUtil.free( );
return workflowContextList;
}
}
/**
* {@inheritDoc }
*/
@Override
public List<WorkflowContextHistory> selectWorkflowDeployContextsListByArtifactId( Plugin plugin ,String strArtifactId)
{
List<WorkflowContextHistory> workflowContextList = new ArrayList<>( );
try( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECTALL +FILTER_BY_ARTIFACT_ID, plugin ) )
{
daoUtil.setString( 1 ,strArtifactId );
daoUtil.executeQuery( );
while ( daoUtil.next( ) )
{
WorkflowContextHistory workflowContext = new WorkflowContextHistory( );
int nIndex = 1;
workflowContext.setId( daoUtil.getInt( nIndex++ ) );
workflowContext.setDateBegin( daoUtil.getTimestamp( nIndex++ ) );
workflowContext.setDateEnd( daoUtil.getTimestamp( nIndex++ ) );
workflowContext.setArtifactId( daoUtil.getString( nIndex++ ) );
workflowContext.setData( daoUtil.getString( nIndex++ ) );
workflowContext.setUser( daoUtil.getString( nIndex ) );
workflowContextList.add( workflowContext );
}
daoUtil.free( );
return workflowContextList;
}
}
}
/*
* Copyright (c) 2002-2020, Mairie de Paris
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright notice
* and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice
* and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* License 1.0
*/
package fr.paris.lutece.plugins.releaser.business;
import fr.paris.lutece.portal.service.plugin.Plugin;
import fr.paris.lutece.portal.service.plugin.PluginService;
import fr.paris.lutece.portal.service.spring.SpringContextService;
import fr.paris.lutece.util.ReferenceList;
import java.util.List;
/**
* This class provides instances management methods (create, find, ...) for WorkflowDeployContext objects
*/
public final class WorkflowContextHistoryHome
{
// Static variable pointed at the DAO instance
private static IWorkflowContextHistoryDAO _dao = SpringContextService.getBean( "releaser.workflowContextHistoryDAO" );
private static Plugin _plugin = PluginService.getPlugin( "releaser" );
/**
* Private constructor - this class need not be instantiated
*/
private WorkflowContextHistoryHome( )
{
}
/**
* Create an instance of the workflowDeployContext class
* @param workflowDeployContext The instance of the WorkflowDeployContext which contains the informations to store
* @return The instance of workflowDeployContext which has been created with its primary key.
*/
public static WorkflowContextHistory create( WorkflowContextHistory workflowDeployContext )
{
_dao.insert( workflowDeployContext, _plugin );
return workflowDeployContext;
}
/**
* Update of the workflowDeployContext which is specified in parameter
* @param workflowDeployContext The instance of the WorkflowDeployContext which contains the data to store
* @return The instance of the workflowDeployContext which has been updated
*/
public static WorkflowContextHistory update( WorkflowContextHistory workflowDeployContext )
{
_dao.store( workflowDeployContext, _plugin );
return workflowDeployContext;