public virtual void Carica(params String[] pathPartite) { if (pathPartite.Length == 0) { throw new ArgumentException("Parametri errati"); } bool valid; foreach (String path in pathPartite) { ElementoTemplate root = CaricaTemplate(path); foreach (Scheda s in CaricaSchede(path)) { valid = true; //if (IsSchedaErrata(root, s)) throw new InvalidDataException("Scheda errata"); foreach (Scheda old in _schede.Keys) { if (old.IdScheda == s.IdScheda && ((Contenitore)_schede[old]).Id == ((Contenitore)root).Id) { valid = false; } //throw new InvalidDataException("Scheda già presente"); } if (!IsSchedaErrata(root, s) && valid) { _schede.Add(s, root); } } } InitValues(); }
protected Scheda GeneraScheda(ElementoTemplate e, String nome) { Scheda s = new Scheda(nome); GeneraSchedaRecursion(e, s); return(s); }
void IPersister.SaveTemplate(string path, ElementoTemplate root) { CreateFileInFolder(path); using (_writer = XmlWriter.Create(path, new XmlWriterSettings() { Indent = true, Encoding = Encoding.UTF8 })) { WriteTemplate(root); } }
//GESTIONE COMPUTAZIONALE #region Computazione public void Parsifica(String template, params String[] schede) { if (String.IsNullOrEmpty(template) || schede.Length == 0) { throw new ArgumentException("Parametri errati"); } ElementoTemplate t = ParsificaTemplate(template); foreach (Scheda s in ParsificaSchede(schede)) { _schede.Add(s, t); } }
private void GeneraSchedaRecursion(ElementoTemplate e, Scheda s) { if (e is Contenitore) { foreach (ElementoTemplate figlio in ((Contenitore)e).Children) { GeneraSchedaRecursion(figlio, s); } } else if (e is Contenuto) { s.SetValore(e.Id, ""); } }
String IPersister.FormatTemplate(ElementoTemplate root) { using (StringWriter stringWriter = new StringWriterWithEncoding(_encoding)) { using (_writer = XmlWriter.Create(stringWriter, new XmlWriterSettings() { Indent = true, Encoding = Encoding.UTF8 })) { WriteTemplate(root); } return(stringWriter.ToString()); } }
private void WriteTemplate(ElementoTemplate root) { _writer.WriteStartDocument(); _writer.WriteStartElement("Template"); if (root is Contenitore) { SaveContenitore((Contenitore)root); } else { throw new IOException(); } _writer.WriteEndElement(); _writer.WriteEndDocument(); }
private String Replace(ElementoTemplate e, String expression) { if (e is Contenitore) { foreach (ElementoTemplate figlio in ((Contenitore)e).Children) { expression = Replace(figlio, expression); } } else { String nomecontenuto = ((Contenuto)e).Id; String valore = _schedaCorrente.GetValore(nomecontenuto); expression = expression.Replace(nomecontenuto, valore); } return(expression); }
protected Contenuto GetContenutoById(ElementoTemplate root, string idCampo) { if (root.Id == idCampo && root is Contenuto) { return(root as Contenuto); } else if (root is Contenitore) { foreach (ElementoTemplate et in (root as Contenitore).Children) { Contenuto result = GetContenutoById(et, idCampo); if (result != null) { return(result); } } } return(null); }
private bool IsSchedaErrata(ElementoTemplate e, Scheda s) { bool result = false; if (e is Contenitore) { foreach (ElementoTemplate figlio in ((Contenitore)e).Children) { if (IsSchedaErrata(figlio, s)) { return(true); } } } else if (e is Contenuto && !s.GetIds().Contains <String>(e.Id)) { return(true); } return(result); }
protected void DisplaySchedaRecursion(Scheda scheda, TableLayoutPanel table, ElementoTemplate et, int level) { if (level < 0) { level = 0; } if (_schedaCorrente == null) { return; } String tabs = ""; for (int i = 0; i < level; i++) { tabs += " "; } if (et is Contenitore) { Label l = new Label(); l.AutoSize = true; l.Text = tabs + ((Contenitore)et).Id; table.Controls.Add(l); for (int i = 0; i < table.ColumnCount - 1; i++) { table.Controls.Add(new Label()); } foreach (ElementoTemplate el in ((Contenitore)et).Children) { DisplaySchedaRecursion(scheda, table, el, level + 1); } } else if (et is Contenuto) { Contenuto con = (Contenuto)et; DisplayContenuto(scheda, table, con, level); } }