org.squale.squalecommon.datatransfertobject.result.ResultsDTO.java Source code

Java tutorial

Introduction

Here is the source code for org.squale.squalecommon.datatransfertobject.result.ResultsDTO.java

Source

/**
 * 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/>.
 */
//Source file: D:\\CC_VIEWS\\SQUALE_V0_0_ACT\\SQUALE\\SRC\\squaleCommon\\src\\org\\squale\\squalecommon\\datatransfertobject\\ResultsDTO.java

package org.squale.squalecommon.datatransfertobject.result;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.squale.squalecommon.datatransfertobject.DTOMessages;
import org.squale.squalecommon.datatransfertobject.component.ComponentDTO;

/**
 */
public class ResultsDTO implements Serializable {

    /** log */
    private static Log LOG = LogFactory.getLog(ResultsDTO.class);

    /**
     * Contient : Une liste pValues qui contient : [ une liste colTypes : [ typeY | typeX1 | typeX2 | ... | typeXn ] |
     * et une  n liste(s) de valeurs (la premire valeur etant le type de la ligne) : [ typeY1 | val11 | val21 | ... |
     * valn1 ] | ... | [ typeYm | val1m | val2m | ... | valnm ] ] n > 0, m > 0 (=> (n+1)*(m+1) lments)
     */
    private Map mResultMap;

    /**
     * Cl : AuditDTO (ou ComponentDTO) Valeur : Tableau de rpartitions des pratiques sur des intervalles de pas = 1
     */
    private Map mIntRepartitionPracticeMap;

    /**
     * Cl : AuditDTO (ou ComponentDTO) Valeur : Tableau de rpartitions des pratiques sur des intervalles de pas = 0.1
     */
    private Map mFloatRepartitionPracticeMap;

    /**
     * Constructeur par defaut
     * 
     * @roseuid 42CB94450018
     */
    public ResultsDTO() {
        Map resultMap = new HashMap();
        setResultMap(resultMap);
    }

    /**
     * Access method for the mResultMap property.
     * 
     * @return the current value of the mResultMap property
     * @roseuid 42CB94450040
     */
    public Map getResultMap() {
        return mResultMap;
    }

    /**
     * Sets the value of the mResultMap property.
     * 
     * @param pResultMap the new value of the mResultMap property
     * @roseuid 42CB94450072
     */
    private void setResultMap(Map pResultMap) {
        mResultMap = pResultMap;
    }

    /**
     * Permet d'ajouter au resultMap une ligne supplementaire Verifie que le format est le suivant : null en cle --
     * liste d'objets en valeur ( n fois ) objet en cle -- liste de meme taille en valeur
     * 
     * @param pKey cl  ajouter
     * @param pValue valeur associe a la cle
     */
    public void put(Object pKey, List pValue) {

        List firstList = (List) mResultMap.get(null);
        if (firstList != null) { // s'il n'y a pas de premier element
            if (firstList.size() != pValue.size()) {
                /* Peut arriver dans les cas de la QualityResultsFacade */
                LOG.warn(DTOMessages.getString("dto.exception.results.put.sizelist"));
            } else {
                // on ajoute la liste a la HashMap
                mResultMap.put(pKey, pValue);
            }
        } else {
            if (pKey != null) {
                // si la cle null du premier element n'existe pas
                LOG.debug(DTOMessages.getString("dto.exception.results.put.nofirstelement"));
            }
            // on ajoute la liste a la HashMap
            mResultMap.put(pKey, pValue);
        }

    }

    /**
     * Permet de concatener une collection de resultsDTO
     * 
     * @param pResultsSrc ResultsDTO qui ajoute ses donnes au pResultsDest
     * @return ResultsDTO unique
     */
    public ResultsDTO add(ResultsDTO pResultsSrc) {

        // Chargement des cls de chacune des Maps
        Map resultSrcMap = pResultsSrc.getResultMap();

        Iterator result1Iterator = mResultMap.keySet().iterator();
        Object currentKey = null;

        /*
         * Parcours des cles du premier ResultsDTO et concatenation de la liste (valeur) du deuxieme ResultsDTO
         * correspondant a la cle courante
         */
        while (result1Iterator.hasNext()) {
            currentKey = result1Iterator.next();
            if (resultSrcMap.get(currentKey) != null) {
                ((List) mResultMap.get(currentKey)).addAll((List) resultSrcMap.get(currentKey));
            }
        }

        /*
         * Verification que tous les element du 2eme ResultsDTO sont presents dans le premier
         */
        // TODO chemin non teste
        if (!mResultMap.keySet().containsAll(resultSrcMap.keySet())) {

            Iterator result2Iterator = resultSrcMap.keySet().iterator();
            currentKey = null;

            // Ajout de la premiere liste
            while (result2Iterator.hasNext()) {
                currentKey = result2Iterator.next();
                /*
                 * SI la cl n'existe pas dans le premier ResultsDTO ALORS on ajoute une liste avec des nulls de la
                 * taille des listes du premier ResultsDTO PUIS on concatene la liste de deuxieme ResultsDTO
                 */
                if (mResultMap.get(currentKey) == null) {

                    List result1ListTemp = new ArrayList(((List) mResultMap.get(null)).size());
                    Collections.fill(result1ListTemp, null);
                    result1ListTemp.addAll((List) resultSrcMap.get(currentKey));
                }
            }
        }

        return this;
    }

    /**
     * Access method for the mIntRepartitionPracticeMap property.
     * 
     * @return Map contenant une liste de rpartitions des pratiques
     */
    public Map getIntRepartitionPracticeMap() {
        return mIntRepartitionPracticeMap;
    }

    /**
     * Sets the value of the mIntRepartitionPracticeMap property.
     * 
     * @param pPracticeMap Map contenant une liste de rpartitions des pratiques
     */
    public void setIntRepartitionPracticeMap(Map pPracticeMap) {
        mIntRepartitionPracticeMap = pPracticeMap;
    }

    /**
     * Access method for the mIntRepartitionPracticeMap property.
     * 
     * @return Map contenant une liste de rpartitions des pratiques
     */
    public Map getFloatRepartitionPracticeMap() {
        return mFloatRepartitionPracticeMap;
    }

    /**
     * Sets the value of the mFloatRepartitionPracticeMap property.
     * 
     * @param pPracticeMap Map contenant une liste de rpartitions des pratiques
     */
    public void setFloatRepartitionPracticeMap(Map pPracticeMap) {
        mFloatRepartitionPracticeMap = pPracticeMap;
    }

    /**
     * @param pProject le projet
     * @return la note courante
     */
    public Float getCurrentMark(ComponentDTO pProject) {
        return ((Float) (((List) getResultMap().get(pProject)).get(0)));
    }

    /**
     * @param pProject le projet
     * @return la note prcdente
     */
    public Float getPreviousMark(ComponentDTO pProject) {
        return (Float) (((List) getResultMap().get(pProject)).get(1));
    }

}