/** * 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.squalecommon.datatransfertobject.transform.component; import java.io.Serializable; import java.util.ArrayList; import org.squale.squalecommon.datatransfertobject.component.ComponentDTO; import org.squale.squalecommon.datatransfertobject.transform.tag.TagTransform; import org.squale.squalecommon.enterpriselayer.businessobject.component.AbstractComplexComponentBO; import org.squale.squalecommon.enterpriselayer.businessobject.component.AbstractComponentBO; import org.squale.squalecommon.enterpriselayer.businessobject.component.ApplicationBO; import org.squale.squalecommon.enterpriselayer.businessobject.component.ClassBO; import org.squale.squalecommon.enterpriselayer.businessobject.component.ComponentVisitor; import org.squale.squalecommon.enterpriselayer.businessobject.component.JspBO; import org.squale.squalecommon.enterpriselayer.businessobject.component.MethodBO; import org.squale.squalecommon.enterpriselayer.businessobject.component.PackageBO; import org.squale.squalecommon.enterpriselayer.businessobject.component.ProjectBO; import org.squale.squalecommon.enterpriselayer.businessobject.component.UmlClassBO; import org.squale.squalecommon.enterpriselayer.businessobject.component.UmlInterfaceBO; import org.squale.squalecommon.enterpriselayer.businessobject.component.UmlModelBO; import org.squale.squalecommon.enterpriselayer.businessobject.component.UmlPackageBO; import org.squale.squalecommon.enterpriselayer.businessobject.tag.TagBO; /** * Transforme les composants en bo<->ComponentDTO */ public class ComponentTransform implements Serializable, ComponentVisitor { /** * Constructeur prive */ private ComponentTransform() { } /** * DTO -> BO pour un Component * * @param pComponentDTO ComponentDTO � transformer * @return ComponentBO * @deprecated A ne pas utiliser */ public static AbstractComponentBO dto2BoProxy( ComponentDTO pComponentDTO ) { return null; } /** * BO -> DTO pour un Component * * @param pComponentBO ComponentBO * @return ComponentDTO */ public static ComponentDTO bo2Dto( AbstractComponentBO pComponentBO ) { ComponentDTO componentDTO = (ComponentDTO) pComponentBO.accept( new ComponentTransform(), null ); return componentDTO; } /** * bo -> dto avec le nom complet du composant * * @param pComponentBO le composant � transformer * @return le dto */ public static ComponentDTO bo2DtoWithFullName( AbstractComponentBO pComponentBO ) { ComponentDTO dto = bo2Dto( pComponentBO ); dto.setName( pComponentBO.getFullName() ); return dto; } /** * {@inheritDoc} * * @see org.squale.squalecommon.enterpriselayer.businessobject.component.ComponentVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.component.ApplicationBO, * java.lang.Object) */ public Object visit( ApplicationBO pApplication, Object pArgument ) { ComponentDTO componentDTO = setCommonComplexAttributes( pApplication ); componentDTO.setLastUpdate( pApplication.getLastUpdate() ); componentDTO.setLastUser( pApplication.getLastUser() ); componentDTO.setHasResults( pApplication.hasResults() ); boolean isHide = false; if ( pApplication.getUserList().size() == 0 ) { isHide = true; } componentDTO.setHide( isHide ); return componentDTO; } /** * {@inheritDoc} * * @see org.squale.squalecommon.enterpriselayer.businessobject.component.ComponentVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.component.ProjectBO, * java.lang.Object) */ public Object visit( ProjectBO pProject, Object pArgument ) { ComponentDTO componentDTO = setCommonComplexAttributes( pProject ); componentDTO.setTechnology( pProject.getProfile().getName() ); componentDTO.setLanguage( pProject.getProfile().getLanguage() ); return componentDTO; } /** * {@inheritDoc} * * @see org.squale.squalecommon.enterpriselayer.businessobject.component.ComponentVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.component.PackageBO, * java.lang.Object) */ public Object visit( PackageBO pPackage, Object pArgument ) { ComponentDTO componentDTO = setCommonComplexAttributes( pPackage ); return componentDTO; } /** * {@inheritDoc} * * @see org.squale.squalecommon.enterpriselayer.businessobject.component.ComponentVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.component.ClassBO, * java.lang.Object) */ public Object visit( ClassBO pClass, Object pArgument ) { ComponentDTO componentDTO = setCommonComplexAttributes( pClass ); componentDTO.setFileName( pClass.getFileName() ); return componentDTO; } /** * {@inheritDoc} * * @see org.squale.squalecommon.enterpriselayer.businessobject.component.ComponentVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.component.MethodBO, * java.lang.Object) */ public Object visit( MethodBO pMethod, Object pArgument ) { ComponentDTO componentDTO = setCommonAttributes( pMethod ); componentDTO.setFileName( pMethod.getLongFileName() ); componentDTO.setStartLine( "" + pMethod.getStartLine() ); return componentDTO; } /** * {@inheritDoc} * * @see org.squale.squalecommon.enterpriselayer.businessobject.component.ComponentVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.component.JspBO, * java.lang.Object) */ public Object visit( JspBO pJsp, Object pArgument ) { ComponentDTO componentDTO = setCommonAttributes( pJsp ); componentDTO.setFileName( pJsp.getFileName() ); return componentDTO; } /** * {@inheritDoc} * * @see org.squale.squalecommon.enterpriselayer.businessobject.component.ComponentVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.component.UmlModelBO, * java.lang.Object) */ public Object visit( UmlModelBO pUMLModel, Object pArgument ) { ComponentDTO componentDTO = setCommonComplexAttributes( pUMLModel ); return componentDTO; } /** * {@inheritDoc} * * @see org.squale.squalecommon.enterpriselayer.businessobject.component.ComponentVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.component.UmlPackageBO, * java.lang.Object) */ public Object visit( UmlPackageBO pUMLPackage, Object pArgument ) { ComponentDTO componentDTO = setCommonComplexAttributes( pUMLPackage ); return componentDTO; } /** * {@inheritDoc} * * @see org.squale.squalecommon.enterpriselayer.businessobject.component.ComponentVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.component.UmlInterfaceBO, * java.lang.Object) */ public Object visit( UmlInterfaceBO pUMLInterface, Object pArgument ) { ComponentDTO componentDTO = setCommonAttributes( pUMLInterface ); return componentDTO; } /** * {@inheritDoc} * * @see org.squale.squalecommon.enterpriselayer.businessobject.component.ComponentVisitor#visit(org.squale.squalecommon.enterpriselayer.businessobject.component.UmlClassBO, * java.lang.Object) */ public Object visit( UmlClassBO pUMLClass, Object pArgument ) { ComponentDTO componentDTO = setCommonComplexAttributes( pUMLClass ); return componentDTO; } /** * Modifie les atrtributs communs pour les composants complexes * * @param pComponentBO le composant sous forme BO * @return le composant sous forme DTO avec les param�tres communs modifi�s */ private ComponentDTO setCommonComplexAttributes( AbstractComplexComponentBO pComponentBO ) { ComponentDTO componentDTO = setCommonAttributes( pComponentBO ); componentDTO.setNumberOfChildren( pComponentBO.getChildren().size() ); return componentDTO; } /** * @param pComponentBO le composant sous forme BO * @return le composant sous forme DTO avec les param�tres communs modifi�s */ private ComponentDTO setCommonAttributes( AbstractComponentBO pComponentBO ) { // Initialisation du retour ComponentDTO componentDTO = new ComponentDTO(); componentDTO.setExcludedFromActionPlan( pComponentBO.getExcludedFromActionPlan() ); componentDTO.setJustification( pComponentBO.getJustification() ); componentDTO.setID( pComponentBO.getId() ); componentDTO.setName( pComponentBO.getName() ); componentDTO.setFullName( pComponentBO.getFullName() ); componentDTO.setHasResults( pComponentBO.hasResults() ); componentDTO.setType( pComponentBO.getType() ); componentDTO.setNumberOfChildren( 0 ); if ( pComponentBO.getTags() != null && pComponentBO.getTags().size() > 0 ) { for ( TagBO tagBO : pComponentBO.getTags() ) { componentDTO.addTag( TagTransform.bo2Dto( tagBO ) ); } } else { componentDTO.setTags( new ArrayList() ); } if ( null != pComponentBO.getParent() ) { componentDTO.setIDParent( pComponentBO.getParent().getId() ); } return componentDTO; } }