public string RimuoviVincoli(Componente componente)
        {
            string esito = "";

            Type myType = this.GetType();
            MethodInfo metodo = myType.GetMethod("RimuoviVincoli" + componente.GetType().Name, BindingFlags.NonPublic | BindingFlags.Instance);

            esito = (string)metodo.Invoke(this, new object[] { componente });

            return esito;
        }
예제 #2
0
        public static XmlElement ComponenteXml(XmlDocument document, Componente componente)
        {
            XmlElement elementoComponente = document.CreateElement(componente.GetType().ToString());
            PropertyInfo[] properties = componente.GetType().GetProperties();

            foreach (PropertyInfo property in properties)
            {
                ISalva salva = SalvaFactory.GetSalvataggio(property.Name);

                if (salva != null)
                {
                    elementoComponente.AppendChild(salva.Salva(document, property.GetValue(componente)));
                }
                else
                {
                    elementoComponente.AppendChild(ScriviProprieta(document, property, componente));
                }
            }
            return elementoComponente;
        }
        public string ControllaCompatibilitaEAggiunta(Componente componente)
        {
            /* Usato dai dall'assemblato quando deve aggiungere un componente
             * controlla che esso sia conforme ai vincoli
             * e che la sua aggiunta si compatibile con gli altri componenti inseriti
             * in ogni caso aggiorna i vincoli
             */


            string esito = "";

            Type myType = this.GetType();
            MethodInfo metodo = myType.GetMethod("Check" + componente.GetType().Name, BindingFlags.NonPublic | BindingFlags.Instance);

            esito = (string)metodo.Invoke(this, new object[] { componente });

            return esito;
        }
예제 #4
0
        private void AggiornaAttributi(Componente componente, bool aggiunta)
        {
            PropertyInfo[] properties = componente.GetType().GetProperties();

            int segno = (aggiunta) ? 1 : -1;

            foreach (PropertyInfo prop in properties)
            {
                if (prop.Name == "Potenza")
                    _potenzaTotale += segno * (int)prop.GetValue(componente, null);

                if (prop.Name == "Prezzo")
                    _costoTotale += segno * (double)prop.GetValue(componente, null);

                if (prop.Name == "Peso")
                    _pesoTotale += segno * (float)prop.GetValue(componente, null);                
            }


            if (componente.GetType().Name == "Case")
            {
                if (aggiunta)
                    _dissipazione.MappaPosizioneVentole = (Dictionary<PosizioneVentola, Ventola>)((Case)(componente)).MappaVentole;
                else
                    _dissipazione.MappaPosizioneVentole = null;
            }


        }
예제 #5
0
        public string SostituisciComponente(Componente componenteDaTogliere, Componente componenteDaMettere)
        {
            string esito = RimuoviComponente(componenteDaTogliere.GetType().Name);
            if (esito == "")
                esito = AggiungiComponente(componenteDaMettere);

            return esito;
        }
예제 #6
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> vincoli)
            {
                if (componente.GetType().Name != "Case")
                    return false;

                Case c = (Case) componente;

                if (vincoli.ContainsKey("FormatoSchedaMadre"))
                    if ((int)c.FormatoCase < (int)(vincoli["FormatoSchedaMadre"]))
                        return false;

                if (vincoli.ContainsKey("NumeroSoltPerifericaDa25Occupati"))
                    if (c.NumeroPerifericheDa25 < ((int)vincoli["NumeroSlotPerifericaDa25Occupati"]))
                        return false;

                if (vincoli.ContainsKey("NumeroSoltPerifericaDa35Occupati"))
                    if (c.NumeroPerifericheDa35 < ((int)vincoli["NumeroSlotPerifericaDa35Occupati"]))
                        return false;

                if (vincoli.ContainsKey("NumeroSoltPerifericaDa525Occupati"))
                    if (c.NumeroPerifericheDa525 < ((int)vincoli["NumeroSlotPerifericaDa525Occupati"]))
                        return false;

                if (vincoli.ContainsKey("FormatoAlimentatore"))
                    if(!(c.FormatoAlimentatore.Equals(vincoli["FormatoAlimentatore"])))
                        return false;

                if (vincoli.ContainsKey("LunghezzaSchedaVideo"))
                    if(c.LarghezzaMassimaSchedaVideo < ((int) vincoli["LunghezzaSchedaVideo"]))
                        return false;

                if (vincoli.ContainsKey("LarghezzaSchedaVideo"))
                    if(c.LarghezzaMassimaSchedaVideo < ((int) vincoli["LarghezzaSchedaVideo"]))
                        return false;
/*
                if (vincoli.ContainsKey("NumeroSoltCasePCIOccupati"))
                    if (c.NumeroSlotPCI < ((int)vincoli["NumeroSlotCasePCIOccupati"]))
                        return false;
*/
                if (vincoli.ContainsKey("NumeroSoltCasePCIEOccupati"))
                    if (c.NumeroSlotPCIE < ((int)vincoli["NumeroSlotCasePCIEOccupati"]))
                        return false;

                return true;
            }
예제 #7
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> campiRicerca)
            {
                if (componente.GetType().Name != "Extra")
                    return false;

                Extra e = (Extra)componente;

                if (campiRicerca.ContainsKey("Tipo"))
                    if (!e.TipoExtra.Equals(campiRicerca["Tipo"]))
                        return false;

                if (campiRicerca.ContainsKey("Potenza"))
                    if (e.Potenza < (double)(campiRicerca["Potenza"]))
                        return false;

                return true;
            }
예제 #8
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> campiRicerca)
            {
                if (componente.GetType().Name != "SistemaOperativo")
                    return false;

                SistemaOperativo os = (SistemaOperativo)componente;

                if (campiRicerca.ContainsKey("Versione"))
                    if (os.Versione != ((string)campiRicerca["Versione"]))
                        return false;

                if (campiRicerca.ContainsKey("Numero Bit"))
                    if (os.NumeroBit != ((int)campiRicerca["Numero Bit"]))
                        return false;

                return true;
            }
예제 #9
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> vincoli)
            {
                if (componente.GetType().Name != "Processore")
                    return false;

                Processore cpu = (Processore)componente;

                if (vincoli.ContainsKey("FormatoSocketCPU"))
                    if (!cpu.FormatoSocketCPU.Equals(vincoli["FormatoSocketCPU"]))
                        return false;

                if (vincoli.ContainsKey("CapacitaRAMInserita"))
                    if (!(cpu.MassimaRAM >= ((int) vincoli["CapacitaRAMInserita"])))
                        return false;

                if (vincoli.ContainsKey("Chipset"))
                {
                    //compatibili con haswell
                    if (vincoli["Chipset"].Equals(Chipset.h81) ||
                        vincoli["Chipset"].Equals(Chipset.b85) ||
                        vincoli["Chipset"].Equals(Chipset.q85) ||
                        vincoli["Chipset"].Equals(Chipset.q87) ||
                        vincoli["Chipset"].Equals(Chipset.h87) ||
                        vincoli["Chipset"].Equals(Chipset.z87) ||
                        vincoli["Chipset"].Equals(Chipset.h97) ||
                        vincoli["Chipset"].Equals(Chipset.z97))
                        if (!cpu.TecnologiaCPU.Equals(TecnologiaCPU.Haswell))
                            return false;

                    //compatibili con Sandy e Ivy
                    if (vincoli["Chipset"].Equals(Chipset.b65) ||
                        vincoli["Chipset"].Equals(Chipset.h61) ||
                        vincoli["Chipset"].Equals(Chipset.q67) ||
                        vincoli["Chipset"].Equals(Chipset.h67) ||
                        vincoli["Chipset"].Equals(Chipset.p67) ||
                        vincoli["Chipset"].Equals(Chipset.z68))
                        if (!(cpu.TecnologiaCPU.Equals(TecnologiaCPU.Sandy_Bridge) ||
                            cpu.TecnologiaCPU.Equals(TecnologiaCPU.Ivy_Bridge)))
                            return false;
                    // compatibili solo con ivy
                    if (vincoli["Chipset"].Equals(Chipset.b75) ||
                       vincoli["Chipset"].Equals(Chipset.q75) ||
                       vincoli["Chipset"].Equals(Chipset.q77) ||
                       vincoli["Chipset"].Equals(Chipset.h77) ||
                       vincoli["Chipset"].Equals(Chipset.z75) ||
                       vincoli["Chipset"].Equals(Chipset.z77))
                        if (!cpu.TecnologiaCPU.Equals(TecnologiaCPU.Ivy_Bridge))
                            return false;
                }

                return true;                        
            }
예제 #10
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> campiRicerca)
            {
                if (componente.GetType().Name != "MemoriaSecondaria")
                    return false;

                MemoriaSecondaria sata = (MemoriaSecondaria)componente;

                if (campiRicerca.ContainsKey("Formato"))
                    if (!sata.FormatoPeriferica.Equals(campiRicerca["Formato"]))
                        return false;

                if (campiRicerca.ContainsKey("Potenza"))
                    if (sata.Potenza < (double)(campiRicerca["Potenza"]))
                        return false;

                if (campiRicerca.ContainsKey("Velocità"))
                    if (sata.Velocita < (double)(campiRicerca["Velocità"]))
                        return false;

                if (campiRicerca.ContainsKey("Tipo"))
                    if (!sata.TipoMemoriaSecondaria.Equals(campiRicerca["Tipo"]))
                        return false;

                if (campiRicerca.ContainsKey("Capacità"))
                    if (sata.Capacita < (double)(campiRicerca["Capacità"]))
                        return false; 

                return true;
            }
        private void RimozioneConIntrospezione(Componente componente)
        {
            PropertyInfo[] properties = componente.GetType().GetProperties();

            foreach (PropertyInfo prop in properties)
            {
                object[] attributes = prop.GetCustomAttributes(typeof(AttributoVincolo), true);

                if (attributes.Length > 0)
                {
                    AttributoVincolo attribute = (AttributoVincolo)attributes[0];

                    if (_vincoli.ContainsKey(attribute.Name))
                        _vincoli.Remove(attribute.Name);
                }
            }
        }
예제 #12
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> vincoli)
            {
                if (componente.GetType().Name != "Extra")
                    return false;

                return true;
            }
예제 #13
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> vincoli)
            {
                if (componente.GetType().Name != "Alimentatore")
                    return false;

                Alimentatore alimentatore = (Alimentatore)componente;

                if (vincoli.ContainsKey("FormatoAlimentatore"))
                    if (!alimentatore.FormatoAlimentatore.Equals(vincoli["FormatoAlimentatore"]))
                        return false;
                  

                Dictionary<Connettore, int> connettori = alimentatore.Connettori;

                foreach (KeyValuePair<Connettore, int> connettore in connettori)
                {
                    if(vincoli.ContainsKey("Numero" + connettore.Key.ToString()+"Occupati"))
                        if (connettore.Value < ((int)vincoli["Numero" + connettore.Key.ToString()+"Occupati"]))
                            return false;
                }

                if (vincoli.ContainsKey("Potenza"))
                    if (alimentatore.PotenzaErogata < ((int)vincoli["Potenza"]))
                        return false;

                return true;                   
            }
예제 #14
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> vincoli)
            {
                if (componente.GetType().Name != "Ventola")
                    return false;

                Ventola v = (Ventola)componente;

                // controlla tutte le posizioni del case
                // se ne trova una del diametro corretto
                // che sia anche libera, restituisce true
                foreach (string pos in Enum.GetNames(typeof(Posizione)))
                {
                    if (vincoli.ContainsKey(pos))
                    {
                        string val = (string) vincoli[pos];

                        string[] tok = val.Split('_');
                        Diametro diametro = (Diametro) Enum.Parse(typeof(Diametro), tok[0]);
                        bool occupato = (bool)Boolean.Parse(tok[1]);

                        if (diametro.Equals(v.Diametro) && !occupato)
                            return true;
                    }
                }
                return false;      
            }
예제 #15
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> vincoli)
            {
                if (componente.GetType().Name != "SchedaVideo")
                    return false;

                SchedaVideo sv = (SchedaVideo)componente;

                if (vincoli.ContainsKey("LunghezzaMassimaSchedaVideo"))
                    if (sv.Lunghezza > ((int)vincoli["LunghezzaMassimaSchedaVideo"]))
                        return false;

                if (vincoli.ContainsKey("LarghezzaMassimaSchedaVideo"))
                    if (sv.Larghezza > ((int)vincoli["LarghezzaMassimaSchedaVideo"]))
                        return false;

                return true;
            }
예제 #16
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> vincoli)
            {
                if (componente.GetType().Name != "SchedaMadre")
                    return false;

                SchedaMadre sm = (SchedaMadre)componente;

                if (vincoli.ContainsKey("FormatoCase"))
                    if ((int)sm.FormatoSchedaMadre > (int)(vincoli["FormatoCase"]))
                        return false;

                if (vincoli.ContainsKey("FormatoSocketCPU"))
                    if (!sm.FormatoSocketCPU.Equals(vincoli["FormatoSocketCPU"]))
                        return false;

                if (vincoli.ContainsKey("TecnologiaCPU"))
                {
                    //compatibili con haswell
                    if (sm.Chipset.Equals(Chipset.h81) ||
                        sm.Chipset.Equals(Chipset.b85) ||
                        sm.Chipset.Equals(Chipset.q85) ||
                        sm.Chipset.Equals(Chipset.q87) ||
                        sm.Chipset.Equals(Chipset.h87) ||
                        sm.Chipset.Equals(Chipset.z87) ||
                        sm.Chipset.Equals(Chipset.h97) ||
                        sm.Chipset.Equals(Chipset.z97))
                        if (!vincoli["TecnologiaCPU"].Equals(TecnologiaCPU.Haswell))
                            return false;

                    //compatibili con Sandy e Ivy
                    if (sm.Chipset.Equals(Chipset.b65) ||
                        sm.Chipset.Equals(Chipset.h61) ||
                        sm.Chipset.Equals(Chipset.q67) ||
                        sm.Chipset.Equals(Chipset.h67) ||
                        sm.Chipset.Equals(Chipset.p67) ||
                        sm.Chipset.Equals(Chipset.z68))
                        if (!(vincoli["TecnologiaCPU"].Equals(TecnologiaCPU.Sandy_Bridge) ||
                            vincoli["TecnologiaCPU"].Equals(TecnologiaCPU.Ivy_Bridge)))
                            return false;

                    // compatibili solo con ivy
                    if (sm.Chipset.Equals(Chipset.b75) ||
                       sm.Chipset.Equals(Chipset.q75) ||
                       sm.Chipset.Equals(Chipset.q77) ||
                       sm.Chipset.Equals(Chipset.h77) ||
                       sm.Chipset.Equals(Chipset.z75) ||
                       sm.Chipset.Equals(Chipset.z77))
                        if (!vincoli["TecnologiaCPU"].Equals(TecnologiaCPU.Ivy_Bridge))
                            return false;
                }

                if (vincoli.ContainsKey("NumeroSlotPCIOccupati"))
                    if (sm.NumeroSlotPCI < ((int)vincoli["NumeroSlotPCIOccupati"]))
                        return false;

                if (vincoli.ContainsKey("NumeroSlotPCIEOccupati"))
                    if (sm.NumeroSlotPCIE < ((int)vincoli["NumeroSlotPCIEOccupati"]))
                        return false;

                if (vincoli.ContainsKey("NumeroPorteSATAOccupate"))
                    if (sm.NumeroPorteSata < ((int)vincoli["NumeroPorteSATAOccupate"]))
                        return false;

                if (vincoli.ContainsKey("TecnologiaRAM"))
                    if (!sm.TecnologiaRAM.Equals(vincoli["TecnologiaRAM"]))
                        return false;

                if (vincoli.ContainsKey("NumeroSlotRAMOccupati"))
                    if (sm.NumeroSlotRAM < ((int)vincoli["NumeroSlotRAMOccupati"]))
                        return false;

                return true;

            }
예제 #17
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> campiRicerca)
            {
                if (componente.GetType().Name != "MemoriaRAM")
                    return false;

                MemoriaRAM ram = (MemoriaRAM)componente;

                if (campiRicerca.ContainsKey("Tecnologia"))
                    if (!ram.TecnologiaRAM.Equals(campiRicerca["Tecnologia"]))
                        return false;

                if (campiRicerca.ContainsKey("Classe Latenza"))
                    if (!ram.ClasseLatenza.Equals(campiRicerca["Classe Latenza"]))
                        return false;

                if (campiRicerca.ContainsKey("Capacità"))
                    if (ram.Capacita < (double)(campiRicerca["Capacità"]))
                        return false;

                if (campiRicerca.ContainsKey("Velocità"))
                    if (ram.Velocita < (double)(campiRicerca["Velocità"]))
                        return false;


                
                return true;
            }
예제 #18
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> campiRicerca)
            {
                if (componente.GetType().Name != "Processore")
                    return false;

                Processore cpu = (Processore)componente;

                if (campiRicerca.ContainsKey("Socket"))
                    if (!cpu.FormatoSocketCPU.Equals(campiRicerca["Socket"]))
                        return false;

                if (campiRicerca.ContainsKey("Tecnologia"))
                    if (!cpu.TecnologiaCPU.Equals(campiRicerca["Tecnologia"]))
                        return false;

                if (campiRicerca.ContainsKey("Velocità"))
                    if (cpu.Velocita < ((double)campiRicerca["Velocità"]))
                        return false;

                if (campiRicerca.ContainsKey("Numero Core"))
                    if (cpu.NumeroCore < ((double)campiRicerca["Numero Core"]))
                        return false;

                if (campiRicerca.ContainsKey("Potenza"))
                    if (cpu.Potenza < ((double)campiRicerca["Potenza"]))
                        return false;

                if (campiRicerca.ContainsKey("Cache"))
                    if (cpu.DimensioneCache < ((double)campiRicerca["Cache"]))
                        return false;                

                return true;
            }
예제 #19
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> campiRicerca)
            {
                if (componente.GetType().Name != "Case")
                    return false;

                Case c = (Case)componente;

                if (campiRicerca.ContainsKey("Formato"))
                    if ((c.FormatoCase.CompareTo(campiRicerca["Formato"])) < 0)
                        return false;

                if (campiRicerca.ContainsKey("Altezza"))
                    if (c.Altezza < ((double)campiRicerca["Altezza"]))
                        return false;

                if (campiRicerca.ContainsKey("Larghezza"))
                    if (c.Lunghezza < ((double)campiRicerca["Larghezza"]))
                        return false;

                if (campiRicerca.ContainsKey("Spessore"))
                    if (c.Spessore < ((double)campiRicerca["Spessore"]))
                        return false;               

                if (campiRicerca.ContainsKey("Lunghezza Massima Scheda Video"))
                    if (c.LarghezzaMassimaSchedaVideo < ((double)campiRicerca["Lunghezza Massima Scheda Video"]))
                        return false;

                if (campiRicerca.ContainsKey("Larghezza Massima Scheda Video"))
                    if (c.LarghezzaMassimaSchedaVideo < ((double)campiRicerca["Larghezza Massima Scheda Video"]))
                        return false;
                
                if (campiRicerca.ContainsKey("Numero Porte USB"))
                    if (c.NumeroPorteUSB < ((double)campiRicerca["Numero Porte USB"]))
                        return false;

                return true;
            }
예제 #20
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> campiRicerca)
            {
                if (componente.GetType().Name != "SchedaPCI")
                    return false;

                SchedaPCI pci = (SchedaPCI)componente;
                
                if (campiRicerca.ContainsKey("Tipo"))
                    if (!pci.TipoSchedePCI.Equals(campiRicerca["Tipo"]))
                        return false;

                if (campiRicerca.ContainsKey("Potenza"))
                    if (pci.Potenza < (double)(campiRicerca["Potenza"]))
                        return false;

                return true;
            }
예제 #21
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> campiRicerca)
            {
                if (componente.GetType().Name != "LettoreSupportoOttico")
                    return false;

                LettoreSupportoOttico sata = (LettoreSupportoOttico) componente;

                if (campiRicerca.ContainsKey("Formato"))
                    if (!sata.FormatoPeriferica.Equals(campiRicerca["Formato"]))
                        return false;

                if (campiRicerca.ContainsKey("Potenza"))
                    if (sata.Potenza < (double)(campiRicerca["Potenza"]))
                        return false;

                if (campiRicerca.ContainsKey("Velocità"))
                    if (!sata.Velocita.Equals((campiRicerca["Velocità"])))
                        return false;

                if (campiRicerca.ContainsKey("Tipo"))
                    if (!sata.TipoLettoreSupportoOttico.Equals(campiRicerca["Tipo"]))
                        return false;

                return true;
            }
예제 #22
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> vincoli)
            {
                if (componente.GetType().Name != "LettoreSupportoOttico")
                    return false;

                return true;
            }
예제 #23
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> campiRicerca)
            {
                if (componente.GetType().Name != "SchedaMadre")
                    return false;

                SchedaMadre sm = (SchedaMadre)componente;

                if (campiRicerca.ContainsKey("Formato"))
                    if (sm.FormatoSchedaMadre.CompareTo(campiRicerca["Formato"]) > 0)
                        return false;

                if (campiRicerca.ContainsKey("Socket"))
                    if (!sm.FormatoSocketCPU.Equals(campiRicerca["Socket"]))
                        return false;

                if (campiRicerca.ContainsKey("Chipset"))
                    if (!sm.Chipset.Equals(campiRicerca["Chipset"]))
                        return false;
                
                if (campiRicerca.ContainsKey("Numero Slot PCI"))
                    if (sm.NumeroSlotPCI < ((double)campiRicerca["Numero Slot PCI"]))
                        return false;

                if (campiRicerca.ContainsKey("Numero Slot PCIE"))
                    if (sm.NumeroSlotPCIE < ((double)campiRicerca["Numero Slot PCIE"]))
                        return false;

                if (campiRicerca.ContainsKey("Numero Porte SATA"))
                    if (sm.NumeroPorteSata < ((double)campiRicerca["Numero Porte SATA"]))
                        return false;

                if (campiRicerca.ContainsKey("Tecnologia RAM"))
                    if (!sm.TecnologiaRAM.Equals(campiRicerca["Tecnologia RAM"]))
                        return false;

                if (campiRicerca.ContainsKey("Numero Slot RAM"))
                    if (sm.NumeroSlotRAM < ((double)campiRicerca["Numero Slot RAM"]))
                        return false;

                return true;

            }
        //sfrutta introspezione peraggiungere i vincoli che non ha bisogno di controllare
        private void AggiuntaConIntrospezione(Componente componente)
        {
            PropertyInfo[] properties = componente.GetType().GetProperties();

            foreach (PropertyInfo prop in properties)
            {
                object[] attributes = prop.GetCustomAttributes(typeof(AttributoVincolo), true);

                if (attributes.Length > 0)
                {
                    AttributoVincolo attribute = (AttributoVincolo)attributes[0];

                    if (!_vincoli.ContainsKey(attribute.Name))
                        _vincoli.Add(attribute.Name, prop.GetValue(componente, null));
                }
            }
        }
예제 #25
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> campiRicerca)
            {
                if (componente.GetType().Name != "SchedaVideo")
                    return false;

                SchedaVideo sv = (SchedaVideo)componente;

                if (campiRicerca.ContainsKey("Lunghezza"))
                    if (sv.Lunghezza < ((double)campiRicerca["Lunghezza"]))
                        return false;

                if (campiRicerca.ContainsKey("Larghezza"))
                    if (sv.Larghezza < ((double)campiRicerca["Larghezza"]))
                        return false;

                if (campiRicerca.ContainsKey("Spessore"))
                    if (sv.Spessore < ((double)campiRicerca["Spessore"]))
                        return false;

                if (campiRicerca.ContainsKey("Slot PCIE"))
                    if (sv.SlotSchedaMadreOccupati < ((double)campiRicerca["Slot PCIE"]))
                        return false;

                if (campiRicerca.ContainsKey("Slot Case"))
                    if (sv.SlotCaseOccupati < ((double)campiRicerca["Slot Case"]))
                        return false;

                if (campiRicerca.ContainsKey("Potenza"))
                    if (sv.Potenza < ((double)campiRicerca["Potenza"]))
                        return false;

                if (campiRicerca.ContainsKey("Capacità"))
                    if (sv.Capacita < ((double)campiRicerca["Capacità"]))
                        return false;

                if (campiRicerca.ContainsKey("Parallelismo"))
                    if (sv.Parallelismo != ((bool)campiRicerca["Parallelismo"]))
                        return false;

                if (campiRicerca.ContainsKey("Modder"))
                    if (sv.Modder != ((string)campiRicerca["Modder"]))
                        return false;

                return true;
            }
예제 #26
0
        public string AggiungiVentola(PosizioneVentola posizione, Componente componente)
        {
            if (componente.GetType().Name != "Ventola")
                return "Tipo errato";

            return _dissipazione.AggiungiVentola(posizione,(Ventola) componente);            
        }
예제 #27
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> campiRicerca)
            {
                if (componente.GetType().Name != "Ventola")
                    return false;

                Ventola v = (Ventola)componente;

                if (campiRicerca.ContainsKey("Diametro"))
                    if (v.Diametro.CompareTo(campiRicerca["Diametro"])<0)
                        return false;

                if (campiRicerca.ContainsKey("PWM"))
                    if (v.PWM != ((bool)campiRicerca["PWM"]))
                        return false;

                if (campiRicerca.ContainsKey("Velocità"))
                    if (v.Velocita < ((double)campiRicerca["Velocità"]))
                        return false;

                if (campiRicerca.ContainsKey("Potenza"))
                    if (v.Potenza < ((double)campiRicerca["Potenza"]))
                        return false;

                if (campiRicerca.ContainsKey("Rumore"))
                    if (v.RumoredB != ((double)campiRicerca["Rumore"]))
                        return false;

                return true;
            }
예제 #28
0
        public string AggiungiComponente(Componente componente)
        {
            string esito = "";
            esito = _controlloreVincoli.ControllaCompatibilitaEAggiunta(componente);

            if (esito == "")
            {
                _mappaComponenti[componente.GetType().Name].Add(componente);
                AggiornaAttributi(componente, true);
            }

            return esito;
        } 
예제 #29
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> campiRicerca)
            {
                if (componente.GetType().Name != "Alimentatore")
                    return false;

                Alimentatore alimentatore = (Alimentatore)componente;

                if (campiRicerca.ContainsKey("Formato"))
                    if (alimentatore.FormatoAlimentatore != (FormatoAlimentatore)campiRicerca["Formato"])
                        return false;

                if (campiRicerca.ContainsKey("Potenza Erogata"))
                    if (alimentatore.PotenzaErogata < (double) campiRicerca["Potenza Erogata"])
                        return false;
                   

                if (campiRicerca.ContainsKey("Rank"))
                    if (alimentatore.Rank.CompareTo(campiRicerca["Rank"]) < 0)
                        return false;
                    

                if (campiRicerca.ContainsKey("Modularità"))
                    if (!alimentatore.Modularita.Equals(campiRicerca["Modularità"]))
                        return false; 
                
                return true;
            }
예제 #30
0
            protected override bool CheckComponente(Componente componente, Dictionary<string, object> vincoli)
            {
                if (componente.GetType().Name != "MemoriaRAM")
                    return false;

                MemoriaRAM ram = (MemoriaRAM)componente;
                if (vincoli.ContainsKey("TecnologiaRAM"))
                    if (ram.TecnologiaRAM.Equals(vincoli["TecnologiaRAM"]))
                        return true;
                    else
                        return false;
                return true;
            }