/// <summary>
        /// metodo factory
        /// </summary>
        /// <param name="stampanteInstallata"></param>
        /// <param name="formatoCarta"></param>
        /// <returns></returns>
        public static StampanteAbbinata create(StampanteInstallata stampanteInstallata, FormatoCarta formatoCarta)
        {
            StampanteAbbinata stpAbbi = new StampanteAbbinata(stampanteInstallata, formatoCarta);

            stpAbbi.ratio = determinaRatio(stampanteInstallata.NomeStampante);
            return(stpAbbi);
        }
        public override bool Equals(object obj)
        {
            bool sonoUguali = false;

            if (obj is StampanteAbbinata)
            {
                StampanteAbbinata altra = (StampanteAbbinata)obj;

                if (this.FormatoCarta != null && altra.FormatoCarta != null)
                {
                    sonoUguali = this.FormatoCarta.Equals(altra.FormatoCarta);
                    if (sonoUguali)
                    {
                        if (this.StampanteInstallata != null && altra.StampanteInstallata != null)
                        {
                            sonoUguali = this.StampanteInstallata.Equals(altra.StampanteInstallata);
                        }
                        else
                        {
                            sonoUguali = false;
                        }
                    }
                }
            }

            return(sonoUguali);
        }
        private string ricavaStampante(FormatoCarta formatoCarta)
        {
            _giornale.Warn("Come mai non è definita la stampante? Va beh, la determino io");

            StampanteAbbinata sa            = stampantiAbbinate.FirstOrDefault <StampanteAbbinata>(s => s.FormatoCarta.Equals(formatoCarta));
            String            nomeStampante = null;

            if (sa != null)
            {
                nomeStampante = sa.StampanteInstallata.NomeStampante;
            }
            else
            {
                _giornale.Warn("Non riesco a stabilire la stampante di questa carta: " + formatoCarta.descrizione + "(id=" + formatoCarta.id + ")");
            }

            return(nomeStampante);
        }
        // Mi serve per ordinare i formati carta stampabili in base alla importanza (ordinamento) impostato
        public static int CompareByImportanza(StampanteAbbinata a, StampanteAbbinata b)
        {
            int?ord1 = null;
            int?ord2 = null;

            if (a != null && a.FormatoCarta != null)
            {
                ord1 = a.FormatoCarta.ordinamento;
            }

            if (b != null && b.FormatoCarta != null)
            {
                ord2 = b.FormatoCarta.ordinamento;
            }

            if (ord1 == null)
            {
                if (ord2 == null)
                {
                    return(0);
                }
                else
                {
                    return(-1);
                }
            }
            else
            {
                if (ord2 == null)
                {
                    return(1);
                }
                else
                {
                    return((int)ord1 - (int)ord2);
                }
            }
        }