/*
 * #%L
 * IsisFish data
 * %%
 * Copyright (C) 2006 - 2014 Ifremer, Code Lutin, Cedric Pineau, Benjamin Poussin
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as
 * published by the Free Software Foundation, either version 3 of the 
 * License, or (at your option) any later version.
 * 
 * This program 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 General Public 
 * License along with this program.  If not, see
 * <http://www.gnu.org/licenses/gpl-3.0.html>.
 * #L%
 */

package scripts;

import static org.nuiton.i18n.I18n.n;

import fr.ifremer.isisfish.util.Doc; // pour pouvoir afficher une aide contextuelle (BUG#1605)

/**
 * Contient l'ensemble des noms des differents resultats. Le mieux lorsque l'on
 * veut un nouveau resultat est d'ajouter une constante ici, et de l'utiliser
 * ensuite lors de la creation de la matrice.
 * <p>
 * Ceci permet d'avoir un endroit unique ou l'on voit l'ensemble des resultats
 * potentiellement disponible et de ne pas ce tromper en ecrivent le nom d'un
 * resultat
 * <p>
 * Cette classe ne doit contenir que des noms de resultat en static public
 * String l'interface de lancement de simulation se base sur cette classe pour
 * afficher l'ensemble des resultats disponible
 * 
 * @author poussin
 */
public class ResultName {

    /**
     * Matrix with 4 dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Metier
     * Dimension 3 : Population
     * Dimension 4 : Zone
     */
    @Doc(value = "do the doc of Result matrixDiscardsWeightPerStrMet")
    static final public String MATRIX_DISCARDS_WEIGHT_PER_STR_MET_PER_ZONE_POP = n("matrixDiscardsWeightPerStrMetPerZonePop");

    /**
     * Matrix with five dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     * Dimension 4 : Group
     * Dimension 5 : Zone
     */
    @Doc(value = "do the doc of Result matrixDiscardsPerStrMet")
    static final public String MATRIX_DISCARDS_PER_STR_MET_PER_ZONE_POP = n("matrixDiscardsPerStrMetPerZonePop");

    /**
     * Matrix with five dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     * Dimension 4 : Group
     * Dimension 5 : Zone
     */
    @Doc(value = "do the doc of Result matrixLandingPerMet")
    static final public String MATRIX_LANDING_PER_MET = n("matrixLandingPerMet");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixEffortPerStrategyMet")
    static final public String MATRIX_EFFORT_PER_STRATEGY_MET = n("matrixEffortPerStrategyMet");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixEffortNominalPerStrategyMet")
    static final public String MATRIX_EFFORT_NOMINAL_PER_STRATEGY_MET = n("matrixEffortNominalPerStrategyMet");

    /**
     * Matrix with five dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     * Dimension 4 : Group
     * Dimension 5 : Zone
     */
    @Doc(value = "Disponible uniquement avec les simulations par Zone. do the doc of Result matrixCatchRatePerStrategyMet")
    static final public String MATRIX_CATCH_RATE_PER_STRATEGY_MET_PER_ZONE_POP = n("matrixCatchRatePerStrategyMet");

    /**
     * Matrix with five dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     * Dimension 4 : Group
     * Dimension 5 : Zone
     * 
     * N'est calculé que si l'effort est calculé par cellule et non par zone.
     * @see simulators.SimulatorEffortByCell
     */
    @Doc(value = "do the doc of Result matrixCatchPerStrategyMetPerZoneMet")
    static final public String MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_MET = n("matrixCatchPerStrategyMetPerZoneMet");

    /**
     * Matrix with five dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     * Dimension 4 : Group
     * Dimension 5 : Zone
     */
    @Doc(value = "do the doc of Result matrixCatchPerStrategyMetPerZonePop")
    static final public String MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP = n("matrixCatchPerStrategyMetPerZonePop");

    /**
     * Matrix with five dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     * Dimension 4 : Group
     * Dimension 5 : Zone
     * 
     * N'est calculé que si l'effort est calculé par cellule et non par zone.
     * @see simulators.SimulatorEffortByCell
     */
    @Doc(value = "do the doc of Result matrixCatchWeightPerStrategyMetPerZoneMet")
    static final public String MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_MET = n("matrixCatchWeightPerStrategyMetPerZoneMet");

    /**
     * Matrix with five dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     * Dimension 4 : Group
     * Dimension 5 : Zone
     */
    @Doc(value = "do the doc of Result matrixCatchWeightPerStrategyMetPerZonePop")
    static final public String MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP = n("matrixCatchWeightPerStrategyMetPerZonePop");

    /**
     * Matrix with five dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     * Dimension 4 : Group
     * Dimension 5 : Zone
     */
    @Doc(value = "Disponible uniquement avec les simulations par Zone. do the doc of Result matrixFishingMortality")
    static final public String MATRIX_FISHING_MORTALITY = n("matrixFishingMortality");

	/**
     * Matrix with 1 dimension
	 * Dimension 1 : TimeStep
     */
    @Doc(value = "do the doc of Result matrixTotalFishingMortality")
    static final public String MATRIX_TOTAL_FISHING_MORTALITY = n("matrixTotalFishingMortality");
	
	/**
     * Matrix with 2 dimensions
	 * Dimension 1 : TimeStep
	 * Dimension 2 : Group
     */
    @Doc(value = "do the doc of Result matrixFishingMortalityPerGroup")
    static final public String MATRIX_FISHING_MORTALITY_PER_GROUP = n("matrixFishingMortalityPerGroup");
	
    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Group (semantics : Dimension 1)
     * Dimension 3 : Zone (semantics : Dimension 2)
     */
    @Doc(value = "do the doc of Result matrixAbundance")
    static final public String MATRIX_ABUNDANCE = n("matrixAbundance");

    /**
     * Matrix with three dimensions
     * Dimension 1 : Date
     * Dimension 2 : Group
     * Dimension 3 : Zone
     */
    @Doc(value = "do the doc of Result matrixAbundanceBeginMonth")
    static final public String MATRIX_ABUNDANCE_BEGIN_MONTH = n("matrixAbundanceBeginMonth");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Group
     * Dimension 3 : Zone
     */
    @Doc(value = "do the doc of Result matrixBiomass")
    static final public String MATRIX_BIOMASS = n("matrixBiomass");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Group
     * Dimension 3 : Zone
     */
    @Doc(value = "do the doc of Result matrixBiomassBeginMonth")
    static final public String MATRIX_BIOMASS_BEGIN_MONTH = n("matrixBiomassBeginMonth");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixFishingTimePerMonthPerVessel")
    static final public String MATRIX_FISHING_TIME_PER_MONTH_PER_VESSEL = n("matrixFishingTimePerMonthPerVessel");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixFuelCostsOfTravelPerVessel")
    static final public String MATRIX_FUEL_COSTS_OF_TRAVEL_PER_VESSEL = n("matrixFuelCostsOfTravelPerVessel");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixCostsOfFishingPerVessel")
    static final public String MATRIX_COSTS_OF_FISHING_PER_VESSEL = n("matrixCostsOfFishingPerVessel");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixFuelCostsPerVessel")
    static final public String MATRIX_FUEL_COSTS_PER_VESSEL = n("matrixFuelCostsPerVessel");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixRepairAndMaintenanceGearCostsPerVessel")
    static final public String MATRIX_REPAIR_AND_MAINTENANCE_GEAR_COSTS_PER_VESSEL = n("matrixRepairAndMaintenanceGearCostsPerVessel");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixOtherRunningCostsPerVessel")
    static final public String MATRIX_OTHER_RUNNING_COSTS_PER_VESSEL = n("matrixOtherRunningCostsPerVessel");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixSharedNotFixedCostsPerVessel")
    static final public String MATRIX_SHARED_NOT_FIXED_COSTS_PER_VESSEL = n("matrixSharedNotFixedCostsPerVessel");

    /**
     * Matrix with four dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     * Dimension 4 : Population
     */
    @Doc(value = "do the doc of Result matrixGrossValueOfLandingsPerSpeciesPerStrategyMet")
    static final public String MATRIX_GROSS_VALUE_OF_LANDINGS_PER_SPECIES_PER_STRATEGY_MET = n("matrixGrossValueOfLandingsPerSpeciesPerStrategyMet");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixGrossValueOfLandingsPerStrategyMet")
    static final public String MATRIX_GROSS_VALUE_OF_LANDINGS_PER_STRATEGY_MET = n("matrixGrossValueOfLandingsPerStrategyMet");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     *
     * Matrix calculated in the non generic Rule : GraviteVPUE1LangEtGrossValueOtherSpeciesECOMOD
     */
    @Doc(value = "do the doc of Result matrixGrossValueOfLandingsOtherSpeciesPerStrategyMet")
    static final public String MATRIX_GROSS_VALUE_OF_LANDINGS_OTHER_SPECIES_PER_STRATEGY_MET = n("matrixGrossValueOfLandingsOtherSpeciesPerStrategyMet");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixGrossValueOfLandingsPerStrategyMetPerVessel")
    static final public String MATRIX_GROSS_VALUE_OF_LANDINGS_PER_STRATEGY_MET_PER_VESSEL = n("matrixGrossValueOfLandingsPerStrategyMetPerVessel");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixNetValueOfLandingsPerStrategyMet")
    static final public String MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET = n("matrixNetValueOfLandingsPerStrategyMet");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixNetValueOfLandingsPerStrategyMetPerVessel")
    static final public String MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET_PER_VESSEL = n("matrixNetValueOfLandingsPerStrategyMetPerVessel");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixNetRenevueToSharePerStrategyMetPerVessel")
    static final public String MATRIX_NET_RENEVUE_TO_SHARE_PER_STRATEGY_MET_PER_VESSEL = n("matrixNetRenevueToSharePerStrategyMetPerVessel");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixCrewSharePerStrategyPerVessel")
    static final public String MATRIX_CREW_SHARE_PER_STRATEGY_MET_PER_VESSEL = n("matrixCrewSharePerStrategyPerVessel");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixOwnerMarginOverVariableCostsPerStrategyMetPerVessel")
    static final public String MATRIX_OWNER_MARGIN_OVER_VARIABLE_COSTS_PER_STRATEGY_MET_PER_VESSEL = n("matrixOwnerMarginOverVariableCostsPerStrategyMetPerVessel");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixVesselMarginOverVariableCostsPerStrategyMetPerVessel")
    static final public String MATRIX_VESSEL_MARGIN_OVER_VARIABLE_COSTS_PER_STRATEGY_MET_PER_VESSEL = n("matrixVesselMarginOverVariableCostsPerStrategyMetPerVessel");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixOwnerMarginOverVariableCostsPerStrategyPerVessel")
    static final public String MATRIX_OWNER_MARGIN_OVER_VARIABLE_COSTS_PER_STRATEGY_PER_VESSEL = n("matrixOwnerMarginOverVariableCostsPerStrategyPerVessel");

    /**
     * Matrix with two dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     */
    @Doc(value = "do the doc of Result matrixOwnerMarginOverVariableCostsPerStrategy")
    static final public String MATRIX_OWNER_MARGIN_OVER_VARIABLE_COSTS_PER_STRATEGY = n("matrixOwnerMarginOverVariableCostsPerStrategy");

    /**
     * Matrix with two dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     */
    @Doc(value = "do the doc of Result matrixVesselMarginOverVariableCostsPerStrategyPerVessel")
    static final public String MATRIX_VESSEL_MARGIN_OVER_VARIABLE_COSTS_PER_STRATEGY_PER_VESSEL = n("matrixVesselMarginOverVariableCostsPerStrategyPerVessel");

    /**
     * Matrix with two dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     */
    @Doc(value = "do the doc of Result matrixVesselMarginOverVariableCostsPerStrategy")
    static final public String MATRIX_VESSEL_MARGIN_OVER_VARIABLE_COSTS_PER_STRATEGY = n("matrixVesselMarginOverVariableCostsPerStrategy");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Strategy
     * Dimension 3 : Metier
     */
    @Doc(value = "do the doc of Result matrixNoActivity")
    static final public String MATRIX_NO_ACTIVITY = n("matrixNoActivity");

    /**
     * Matrix with three dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Metier
     * Dimension 3 : Zone
     */
    @Doc(value = "do the doc of Result matrixMetierZone")
    static final public String MATRIX_METIER_ZONE = n("matrixMetierZone");

    /**
     * Matrix with two dimensions
     * Dimension 1 : TimeStep
     * Dimension 2 : Group
     */
    @Doc(value = "do the doc of Result matrixPrice")
    static final public String MATRIX_PRICE = n("matrixPrice");
}
