示例#1
0
        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();
        }
示例#2
0
        protected Scheda GeneraScheda(ElementoTemplate e, String nome)
        {
            Scheda s = new Scheda(nome);

            GeneraSchedaRecursion(e, s);
            return(s);
        }
示例#3
0
 void IPersister.SaveTemplate(string path, ElementoTemplate root)
 {
     CreateFileInFolder(path);
     using (_writer = XmlWriter.Create(path, new XmlWriterSettings()
     {
         Indent = true, Encoding = Encoding.UTF8
     }))
     {
         WriteTemplate(root);
     }
 }
示例#4
0
        //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);
            }
        }
示例#5
0
 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, "");
     }
 }
示例#6
0
 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());
     }
 }
示例#7
0
 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();
 }
示例#8
0
 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);
 }
示例#9
0
 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);
 }
示例#10
0
        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);
        }
示例#11
0
        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);
            }
        }