/**
* Copyright (C) 2008-2010, Squale Project - http://www.squale.org
*
* This file is part of Squale.
*
* Squale is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or any later version.
*
* Squale is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Squale. If not, see <http://www.gnu.org/licenses/>.
*/
package org.squale.squaleweb.transformer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.squale.squalecommon.datatransfertobject.config.web.HomepageComponentDTO;
import org.squale.squaleweb.applicationlayer.formbean.homepagemanagement.HomepageManagementForm;
import org.squale.welcom.struts.bean.WActionForm;
import org.squale.welcom.struts.transformer.WITransformer;
import org.squale.welcom.struts.transformer.WTransformerException;
/**
* This class do the transformation between the HomepageManagementForm and the list of HomepageComponentDTO
*/
public class HomepageManagementTransformer
implements WITransformer
{
/**
* {@inheritDoc}
*/
public Object[] formToObj( WActionForm form )
throws WTransformerException
{
Object[] obj = new Object[1];
formToObj( form, obj );
return obj;
}
/**
* {@inheritDoc}
*/
public void formToObj( WActionForm form, Object[] object )
throws WTransformerException
{
HomepageManagementForm currentForm = (HomepageManagementForm) form;
ArrayList<HomepageComponentDTO> list = (ArrayList<HomepageComponentDTO>) object[0];
HomepageComponentDTO component;
List<String> elementNotChecked = new ArrayList<String>();
String[] elementChecked = new String[HomepageComponentDTO.ELEMENT];
// Form to object for introduction part
ftoIntro( list, currentForm, elementNotChecked, elementChecked );
// form to object for news part
ftoNews( list, currentForm, elementNotChecked, elementChecked );
// form to object for motion chart part
ftoMotionChart( list, currentForm, elementNotChecked, elementChecked );
// Form to object for audit part
ftoAudit( list, currentForm, elementNotChecked, elementChecked );
// Form to object for result part
ftoResult( list, currentForm, elementNotChecked, elementChecked );
// Form to object for statistics part
ftoStat( list, currentForm, elementNotChecked, elementChecked );
currentForm.setJspOrder( doList( elementNotChecked, elementChecked ) );
}
/**
* {@inheritDoc}
*/
public WActionForm objToForm( Object[] object )
throws WTransformerException
{
WActionForm form = new WActionForm();
objToForm( object, form );
return form;
}
/**
* {@inheritDoc}
*/
public void objToForm( Object[] object, WActionForm form )
throws WTransformerException
{
HomepageManagementForm currentForm = (HomepageManagementForm) form;
HashMap<String, HomepageComponentDTO> element = new HashMap<String, HomepageComponentDTO>();
ArrayList<HomepageComponentDTO> list = (ArrayList<HomepageComponentDTO>) object[0];
Iterator<HomepageComponentDTO> it = list.iterator();
while ( it.hasNext() )
{
HomepageComponentDTO component = it.next();
element.put( component.getComponentName(), component );
}
List<String> elementNotChecked = new ArrayList<String>();
String[] elementChecked = new String[HomepageComponentDTO.ELEMENT];
// object to form for introduction part
otfIntro( element, currentForm, elementNotChecked, elementChecked );
// object to form for news part
otfNews( element, currentForm, elementNotChecked, elementChecked );
// object to form for motion chart part
otfMotionChart( element, currentForm, elementNotChecked, elementChecked );
// object to form for audit part
otfAudit( element, currentForm, elementNotChecked, elementChecked );
// object to form for result part
otfResult( element, currentForm, elementNotChecked, elementChecked );
// object to form for statistics part
otfStat( element, currentForm, elementNotChecked, elementChecked );
currentForm.setJspOrder( doList( elementNotChecked, elementChecked ) );
}
/**
* This method give the name of the jsp linked to the name given in argument. This name should be one of the static
* variable define in the HomepageComponentDTO for the five displayable component
*
* @param name Name corresponding to the HomepageComponent (
* @return The name of the jsp
*/
private String jspName( String name )
{
StringBuffer jspName = new StringBuffer( "hmngt_" );
jspName.append( name );
jspName.append( ".jsp" );
return jspName.toString();
}
/**
* Do the ordered list of jsp
*
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
* @return the list of jsp name
*/
private List<String> doList( List<String> elementNotChecked, String[] elementChecked )
{
List<String> jspList = new ArrayList<String>();
// We push of one rank
jspList.add( "" );
for ( int index = 0; index < elementChecked.length; index = index + 1 )
{
if ( elementChecked[index] != null )
{
jspList.add( elementChecked[index] );
}
}
jspList.addAll( elementNotChecked );
return jspList;
}
/**
* Fill the form for the audit bloc
*
* @param element The map of element
* @param currentForm The form to fill
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
*/
private void otfAudit( HashMap<String, HomepageComponentDTO> element, HomepageManagementForm currentForm,
List<String> elementNotChecked, String[] elementChecked )
{
// Elements which depends of audit
HomepageComponentDTO component;
component = element.get( HomepageComponentDTO.AUDIT );
String jspName = jspName( HomepageComponentDTO.AUDIT );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setAuditCheck( true );
currentForm.setPositionAudit( component.getComponentPosition() );
elementChecked[component.getComponentPosition() - 1] = jspName;
}
else
{
currentForm.setAuditCheck( false );
elementNotChecked.add( jspName );
}
otfAuditDone( element, currentForm );
component = element.get( HomepageComponentDTO.AUDIT_SCHEDULED );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setAuditScheduledCheck( true );
}
else
{
currentForm.setAuditScheduledCheck( false );
}
component = element.get( HomepageComponentDTO.AUDIT_SHOW_SEPARETELY );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setAuditShowSeparatelyCheck( true );
}
else
{
currentForm.setAuditShowSeparatelyCheck( false );
}
component = element.get( HomepageComponentDTO.AUDIT_NB_JOURS );
if ( component != null && component.getComponentValue() != null )
{
currentForm.setAuditNbJours( component.getComponentValue() );
}
else
{
currentForm.setAuditNbJours( HomepageComponentDTO.DEFAULT_AUDIT_NB_JOURS );
}
}
/**
* Fill the form for the audit done bloc
*
* @param element The map of element
* @param currentForm The form to fill
*/
private void otfAuditDone( HashMap<String, HomepageComponentDTO> element, HomepageManagementForm currentForm )
{
HomepageComponentDTO component;
component = element.get( HomepageComponentDTO.AUDIT_DONE );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setAuditDoneCheck( true );
}
else
{
currentForm.setAuditDoneCheck( false );
}
// Elements which depends of auditDone
component = element.get( HomepageComponentDTO.AUDIT_SUCCESSFUL );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setAuditSuccessfullCheck( true );
}
else
{
currentForm.setAuditSuccessfullCheck( false );
}
component = element.get( HomepageComponentDTO.AUDIT_PARTIAL );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setAuditPartialCheck( true );
}
else
{
currentForm.setAuditPartialCheck( false );
}
component = element.get( HomepageComponentDTO.AUDIT_FAILED );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setAuditFailedCheck( true );
}
else
{
currentForm.setAuditFailedCheck( false );
}
}
/**
* Fill the form for the result bloc
*
* @param element The map of element
* @param currentForm The form to fill
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
*/
private void otfResult( HashMap<String, HomepageComponentDTO> element, HomepageManagementForm currentForm,
List<String> elementNotChecked, String[] elementChecked )
{
HomepageComponentDTO component;
component = element.get( HomepageComponentDTO.RESULT );
String jspName = jspName( HomepageComponentDTO.RESULT );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setResultCheck( true );
currentForm.setPositionResult( component.getComponentPosition() );
elementChecked[component.getComponentPosition() - 1] = jspName;
}
else
{
currentForm.setResultCheck( false );
elementNotChecked.add( jspName );
}
component = element.get( HomepageComponentDTO.RESULT_BY_GRID );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setResultByGridCheck( true );
}
else
{
currentForm.setResultByGridCheck( false );
}
component = element.get( HomepageComponentDTO.RESULT_KIVIAT );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setResultKiviatCheck( true );
}
else
{
currentForm.setResultKiviatCheck( false );
}
component = element.get( HomepageComponentDTO.KIVIAT_WIDTH );
if ( component != null && component.getComponentValue() != null )
{
currentForm.setKiviatWidth( component.getComponentValue() );
}
else
{
currentForm.setKiviatWidth( HomepageComponentDTO.DEFAULT_KIVIAT_WIDTH );
}
component = element.get( HomepageComponentDTO.KIVIAT_ALL_FACTORS );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setResultKiviatAllFactorsCheck( true );
}
else
{
currentForm.setResultKiviatAllFactorsCheck( false );
}
}
/**
* Fill the form for the introduction bloc
*
* @param element The map of element
* @param currentForm The form to fill
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
*/
private void otfIntro( HashMap<String, HomepageComponentDTO> element, HomepageManagementForm currentForm,
List<String> elementNotChecked, String[] elementChecked )
{
HomepageComponentDTO component;
component = element.get( HomepageComponentDTO.INTRO );
String jspName = jspName( HomepageComponentDTO.INTRO );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setIntroCheck( true );
currentForm.setPositionIntro( component.getComponentPosition() );
elementChecked[component.getComponentPosition() - 1] = jspName;
}
else
{
currentForm.setIntroCheck( false );
elementNotChecked.add( jspName );
}
}
/**
* Fill the form for the news bloc
*
* @param element The map of element
* @param currentForm The form to fill
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
*/
private void otfNews( HashMap<String, HomepageComponentDTO> element, HomepageManagementForm currentForm,
List<String> elementNotChecked, String[] elementChecked )
{
HomepageComponentDTO component;
component = element.get( HomepageComponentDTO.NEWS );
String jspName = jspName( HomepageComponentDTO.NEWS );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setNewsCheck( true );
currentForm.setPositionNews( component.getComponentPosition() );
elementChecked[component.getComponentPosition() - 1] = jspName;
}
else
{
currentForm.setNewsCheck( false );
elementNotChecked.add( jspName );
}
}
/**
* Fill the form for the motion chart bloc
*
* @param element The map of element
* @param currentForm The form to fill
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
*/
private void otfMotionChart( HashMap<String, HomepageComponentDTO> element, HomepageManagementForm currentForm,
List<String> elementNotChecked, String[] elementChecked )
{
HomepageComponentDTO component;
component = element.get( HomepageComponentDTO.MOTION_CHART );
String jspName = jspName( HomepageComponentDTO.MOTION_CHART );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setMotionChartCheck( true );
currentForm.setPositionMotionChart( component.getComponentPosition() );
elementChecked[component.getComponentPosition() - 1] = jspName;
}
else
{
currentForm.setMotionChartCheck( false );
elementNotChecked.add( jspName );
}
}
/**
* Fill the form for the statistics bloc
*
* @param element The map of element
* @param currentForm The form to fill
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
*/
private void otfStat( HashMap<String, HomepageComponentDTO> element, HomepageManagementForm currentForm,
List<String> elementNotChecked, String[] elementChecked )
{
HomepageComponentDTO component;
component = element.get( HomepageComponentDTO.STAT );
String jspName = jspName( HomepageComponentDTO.STAT );
if ( component != null && component.getComponentValue().equals( "true" ) )
{
currentForm.setStatisticCheck( true );
currentForm.setPositionStat( component.getComponentPosition() );
elementChecked[component.getComponentPosition() - 1] = jspName;
}
else
{
currentForm.setStatisticCheck( false );
elementNotChecked.add( jspName );
}
}
/**
* Transform the information from the introduction bloc of the form in a list of homepgeComponentDTO
*
* @param list The list of HomepageComponentDTO to save in the database
* @param currentForm The form used for recover the information
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
*/
private void ftoIntro( ArrayList<HomepageComponentDTO> list, HomepageManagementForm currentForm,
List<String> elementNotChecked, String[] elementChecked )
{
HomepageComponentDTO component;
component = new HomepageComponentDTO( HomepageComponentDTO.INTRO, "false" );
String jspName = jspName( HomepageComponentDTO.INTRO );
if ( currentForm.isIntroCheck() )
{
component.setComponentValue( "true" );
component.setComponentPosition( currentForm.getPositionIntro() );
elementChecked[component.getComponentPosition() - 1] = jspName;
}
else
{
elementNotChecked.add( jspName );
}
list.add( component );
}
/**
* Transform the information from the news bloc of the form in a list of homepgeComponentDTO
*
* @param list The list of HomepageComponentDTO to save in the database
* @param currentForm The form used for recover the information
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
*/
private void ftoNews( ArrayList<HomepageComponentDTO> list, HomepageManagementForm currentForm,
List<String> elementNotChecked, String[] elementChecked )
{
HomepageComponentDTO component;
component = new HomepageComponentDTO( HomepageComponentDTO.NEWS, "false" );
String jspName = jspName( HomepageComponentDTO.NEWS );
if ( currentForm.isNewsCheck() )
{
component.setComponentValue( "true" );
component.setComponentPosition( currentForm.getPositionNews() );
elementChecked[component.getComponentPosition() - 1] = jspName;
}
else
{
elementNotChecked.add( jspName );
}
list.add( component );
}
/**
* Transform the information from the motion chart bloc of the form in a list of homepgeComponentDTO
*
* @param list The list of HomepageComponentDTO to save in the database
* @param currentForm The form used for recover the information
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
*/
private void ftoMotionChart( ArrayList<HomepageComponentDTO> list, HomepageManagementForm currentForm,
List<String> elementNotChecked, String[] elementChecked )
{
HomepageComponentDTO component;
component = new HomepageComponentDTO( HomepageComponentDTO.MOTION_CHART, "false" );
String jspName = jspName( HomepageComponentDTO.MOTION_CHART );
if ( currentForm.isMotionChartCheck() )
{
component.setComponentValue( "true" );
component.setComponentPosition( currentForm.getPositionMotionChart() );
elementChecked[component.getComponentPosition() - 1] = jspName;
}
else
{
elementNotChecked.add( jspName );
}
list.add( component );
}
/**
* Transform the information from the audit bloc of the form in a list of homepgeComponentDTO
*
* @param list The list of HomepageComponentDTO to save in the database
* @param currentForm The form used for recover the information
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
*/
private void ftoAudit( ArrayList<HomepageComponentDTO> list, HomepageManagementForm currentForm,
List<String> elementNotChecked, String[] elementChecked )
{
HomepageComponentDTO component;
component = new HomepageComponentDTO( HomepageComponentDTO.AUDIT, "false" );
String jspName = jspName( HomepageComponentDTO.AUDIT );
if ( currentForm.isAuditCheck() )
{
component.setComponentValue( "true" );
component.setComponentPosition( currentForm.getPositionAudit() );
elementChecked[component.getComponentPosition() - 1] = jspName;
}
else
{
elementNotChecked.add( jspName );
}
list.add( component );
ftoAuditdone( list, currentForm );
component = new HomepageComponentDTO( HomepageComponentDTO.AUDIT_SCHEDULED, "false" );
if ( currentForm.isAuditScheduledCheck() )
{
component.setComponentValue( "true" );
}
list.add( component );
component = new HomepageComponentDTO( HomepageComponentDTO.AUDIT_SHOW_SEPARETELY, "false" );
if ( currentForm.isAuditShowSeparatelyCheck() )
{
component.setComponentValue( "true" );
}
list.add( component );
component =
new HomepageComponentDTO( HomepageComponentDTO.AUDIT_NB_JOURS, HomepageComponentDTO.DEFAULT_AUDIT_NB_JOURS );
if ( currentForm.getAuditNbJours() != null )
{
component.setComponentValue( currentForm.getAuditNbJours() );
}
list.add( component );
}
/**
* Transform the information of the audits done from the form in a list of homepgeComponentDTO
*
* @param list The list of HomepageComponentDTO to save in the database
* @param currentForm The form used for recover the information
*/
private void ftoAuditdone( ArrayList<HomepageComponentDTO> list, HomepageManagementForm currentForm )
{
HomepageComponentDTO component = new HomepageComponentDTO( HomepageComponentDTO.AUDIT_DONE, "false" );
if ( currentForm.isAuditDoneCheck() )
{
component.setComponentValue( "true" );
}
list.add( component );
component = new HomepageComponentDTO( HomepageComponentDTO.AUDIT_SUCCESSFUL, "false" );
if ( currentForm.isAuditSuccessfullCheck() )
{
component.setComponentValue( "true" );
}
list.add( component );
component = new HomepageComponentDTO( HomepageComponentDTO.AUDIT_PARTIAL, "false" );
if ( currentForm.isAuditPartialCheck() )
{
component.setComponentValue( "true" );
}
list.add( component );
component = new HomepageComponentDTO( HomepageComponentDTO.AUDIT_FAILED, "false" );
if ( currentForm.isAuditFailedCheck() )
{
component.setComponentValue( "true" );
}
list.add( component );
}
/**
* Transform the information from the result bloc of the form in a list of homepgeComponentDTO
*
* @param list The list of HomepageComponentDTO to save in the database
* @param currentForm The form used for recover the information
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
*/
private void ftoResult( ArrayList<HomepageComponentDTO> list, HomepageManagementForm currentForm,
List<String> elementNotChecked, String[] elementChecked )
{
HomepageComponentDTO component;
component = new HomepageComponentDTO( HomepageComponentDTO.RESULT, "false" );
String jspName = jspName( HomepageComponentDTO.RESULT );
if ( currentForm.isResultCheck() )
{
component.setComponentValue( "true" );
component.setComponentPosition( currentForm.getPositionResult() );
elementChecked[component.getComponentPosition() - 1] = jspName;
}
else
{
elementNotChecked.add( jspName );
}
list.add( component );
component = new HomepageComponentDTO( HomepageComponentDTO.RESULT_BY_GRID, "false" );
if ( currentForm.isResultByGridCheck() )
{
component.setComponentValue( "true" );
}
list.add( component );
component = new HomepageComponentDTO( HomepageComponentDTO.RESULT_KIVIAT, "false" );
if ( currentForm.isResultKiviatCheck() )
{
component.setComponentValue( "true" );
}
list.add( component );
component =
new HomepageComponentDTO( HomepageComponentDTO.KIVIAT_WIDTH, HomepageComponentDTO.DEFAULT_KIVIAT_WIDTH );
if ( currentForm.getKiviatWidth() != null )
{
component.setComponentValue( currentForm.getKiviatWidth() );
}
list.add( component );
component = new HomepageComponentDTO( HomepageComponentDTO.KIVIAT_ALL_FACTORS, "false" );
if ( currentForm.isResultKiviatAllFactorsCheck() )
{
component.setComponentValue( "true" );
}
list.add( component );
}
/**
* Transform the information from the statistics bloc of the form in a list of homepgeComponentDTO
*
* @param list The list of HomepageComponentDTO to save in the database
* @param currentForm The form used for recover the information
* @param elementNotChecked The list of element not checked
* @param elementChecked The list of element checked
*/
private void ftoStat( ArrayList<HomepageComponentDTO> list, HomepageManagementForm currentForm,
List<String> elementNotChecked, String[] elementChecked )
{
HomepageComponentDTO component;
component = new HomepageComponentDTO( HomepageComponentDTO.STAT, "false" );
String jspName = jspName( HomepageComponentDTO.STAT );
if ( currentForm.isStatisticCheck() )
{
component.setComponentValue( "true" );
component.setComponentPosition( currentForm.getPositionStat() );
elementChecked[component.getComponentPosition() - 1] = jspName;
}
else
{
elementNotChecked.add( jspName );
}
list.add( component );
}
}