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; }
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; }
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; } }
public string SostituisciComponente(Componente componenteDaTogliere, Componente componenteDaMettere) { string esito = RimuoviComponente(componenteDaTogliere.GetType().Name); if (esito == "") esito = AggiungiComponente(componenteDaMettere); return esito; }
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; }
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; }
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; }
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; }
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); } } }
protected override bool CheckComponente(Componente componente, Dictionary<string, object> vincoli) { if (componente.GetType().Name != "Extra") return false; return true; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
protected override bool CheckComponente(Componente componente, Dictionary<string, object> vincoli) { if (componente.GetType().Name != "LettoreSupportoOttico") return false; return true; }
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)); } } }
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; }
public string AggiungiVentola(PosizioneVentola posizione, Componente componente) { if (componente.GetType().Name != "Ventola") return "Tipo errato"; return _dissipazione.AggiungiVentola(posizione,(Ventola) componente); }
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; }
public string AggiungiComponente(Componente componente) { string esito = ""; esito = _controlloreVincoli.ControllaCompatibilitaEAggiunta(componente); if (esito == "") { _mappaComponenti[componente.GetType().Name].Add(componente); AggiornaAttributi(componente, true); } return esito; }
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; }
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; }