public void ReadXml(System.Xml.XmlReader reader) { reader.ReadToFollowing("origen"); if (reader.HasAttributes) { XMLOrigen = new XMLEstado() { Estado = Convert.ToInt32(reader.GetAttribute("ref")) }; } reader.ReadToFollowing("destino"); if (reader.HasAttributes) { XMLDestino = new XMLEstado() { Estado = Convert.ToInt32(reader.GetAttribute("ref")) }; } reader.ReadToFollowing("Descripcion"); Descripcion = reader.ReadElementString("Descripcion"); EsAutomatica = Convert.ToBoolean(reader.ReadElementString("EsAutomatica")); FechaTransicion = Convert.ToDateTime(reader.ReadElementString("FechaTransicion")); reader.ReadEndElement(); }
public static XMLFlujograma Transformar(IFlujograma flujograma) { XMLFlujograma sol = null; if (flujograma is XMLFlujograma) { sol = flujograma as XMLFlujograma; } else { sol = new XMLFlujograma(); sol.Entidad = flujograma.Entidad; XMLEstado[] estados = new XMLEstado[flujograma.Estados.Length]; for (int i = 0; i < estados.Length; i++) { estados[i] = XMLEstado.Tranformar(flujograma.Estados[i]); } sol.XMLEstados = estados; sol.IdEntidad = flujograma.IdEntidad; sol.Nombre = flujograma.Nombre; XMLTransicion[] transiciones = new XMLTransicion[flujograma.Transiciones.Length]; for (int i = 0; i < transiciones.Length; i++) { transiciones[i] = XMLTransicion.Transformar(flujograma.Transiciones[i]); } sol.XMLTransiciones = transiciones; } return(sol); }
public void ReadXml(System.Xml.XmlReader reader) { //Lista ordenada que nos ayudará a resolver las referencias de tipo id SortedList <int, XMLEstado> estados = new SortedList <int, XMLEstado>(); reader.ReadToFollowing("Nombre"); Nombre = reader.ReadElementString("Nombre"); IdEntidad = Convert.ToInt32(reader.ReadElementString("IdEntidad")); Entidad = reader.ReadElementString("Entidad"); if (reader.Name.Equals("XMLEstados")) { reader.Read(); do { XmlSerializer serializer = new XmlSerializer(xmlEstadoType); XMLEstado item = serializer.Deserialize(reader) as XMLEstado; item.Flujograma = this; estados.Add(item.Estado, item); } while (reader.Name.Equals(xmlEstadoType.Name)); XMLEstados = estados.Values.ToArray(); reader.Read(); } if (reader.Name.Equals("XMLTransiciones")) { List <XMLTransicion> est = new List <XMLTransicion>(); reader.Read(); do { XmlSerializer serializer = new XmlSerializer(xmlTransicionType); XMLTransicion trans = (XMLTransicion)serializer.Deserialize(reader); trans.Origen = estados[trans.Origen.Estado]; trans.Destino = estados[trans.Destino.Estado]; trans.Flujograma = this; est.Add(trans); } while (reader.Name.Equals(xmlTransicionType.Name)); XMLTransiciones = est.ToArray(); reader.Read(); } reader.ReadEndElement(); }
public void Add(IEstado estado) { foreach (var item in _estados) { if (item.Estado == estado.Estado) { throw new ClaveDuplicadaException(); } } _estados.Add(XMLEstado.Tranformar(estado)); }
public void Add(ITransicion transicion) { if (!transicion.Flujograma.Equals(this)) { throw new NoMismoFlujogramaException(); } if (!_estados.Contains(XMLEstado.Tranformar(transicion.Origen)) || !_estados.Contains(XMLEstado.Tranformar(transicion.Destino))) { throw new NoSuchElementException(); } XMLTransicion tr = XMLTransicion.Transformar(transicion); if (!_transiciones.Contains(tr)) { _transiciones.Add(tr); } }