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 ITransicion Remove(ITransicion transicion) { ITransicion sol = null; if (_transiciones.Remove(XMLTransicion.Transformar(transicion))) { sol = transicion; } return(sol); }
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); } }
public bool EsValido(ITransicion transion) { return(_transiciones.Contains(XMLTransicion.Transformar(transion))); }