예제 #1
0
        /// <summary>
        /// Da de alta un atributo de una entidad
        /// </summary>
        /// <param name="nomEnt">Entidad en la que se va a crear el atributo</param>
        /// <param name="nombreAtr">nombre del atributo</param>
        /// <param name="tipo">tipo del atributo</param>
        /// <returns></returns>
        public bool altaAtributo(Entidad ent, Atributo atr, bool orden)
        {
            bool band = false;

            //            if (this.activeUser.permisos[1] == true)
            //            {
            if (this.buscaAtributo(ent, atr.nombre) == null)
            {
                if (orden)
                {
                    band = this.insertaAtrPrincipio(ent, atr);
                }
                else
                {
                    band = this.insertaAtrFinal(ent, atr);
                }
            }
            else
            {
                System.Windows.Forms.MessageBox.Show("Ya existe un atributo con el mismo nombre");
            }
            /*            }
                                    else
                                    {
                                        System.Windows.Forms.MessageBox.Show("No tienes permiso para altas");
                                    }
            */

            return band;
        }
예제 #2
0
        public override bool altaAtributo(string nomEnt, Atributo atr, bool orden)
        {
            bool band = false;
            Entidad aEnt;

            aEnt = this.buscaEntidad(nomEnt);
            this.altaAtributo(aEnt, atr, orden);

            return band;
        }
예제 #3
0
        private void cbEnt_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.selectedEnt = this.f.org.buscaEntidad(this.cbEnt.SelectedItem.ToString());

            selectedEnt.agregaAtributos(this.f.org.listaAtributos(selectedEnt.nombre));
            selectedAtr = selectedEnt.listAtr.Find(a => a.llave.Equals(Atributo.KP));

            dgvConsulta.Rows.Clear();
            dgvConsulta.Columns.Clear();
            cbRel.Items.Clear();
            foreach (Relacion rel in selectedAtr.listRel)
            {
                cbRel.Items.Add(rel.nomEnt);
            }
            if (cbRel.Items.Count > 0)
            {
                cbRel.SelectedIndex = 0;
            }
        }
예제 #4
0
 public virtual bool reescribeAtributo(Atributo atr, long pos, string path)
 {
     return false;
 }
예제 #5
0
 public virtual long insertaAtributo(Atributo atr)
 {
     return -1;
 }
예제 #6
0
 public void agregaAtributo(Atributo atr)
 {
     this.listAtr.Add(atr);
 }
예제 #7
0
        private bool validaDato(Atributo atr,string dato)
        {
            bool band = true;
            int entero;
            float flotante;
            char car;

            switch (atr.tipo)
            {
                case Atributo.entero:
                    band = int.TryParse(dato, out entero);
                    break;
                case Atributo.flotante:
                    band = float.TryParse(dato, out flotante);
                    break;
                case Atributo.caracter:
                    band = char.TryParse(dato, out car);
                    if (band)
                    {
                        car = car.ToString().ToUpper()[0];
                    }
                    break;
                default:
                    band = true;
                    break;
            }

            return band;
        }
예제 #8
0
        private bool buscaRelacion(Atributo atr,string datoComp)
        {
            Entidad entAux;
            bool band = false;

            foreach (Relacion rel in atr.listRel)
            {
                entAux = this.f.org.buscaEntidad(rel.nomEnt);
                entAux.agregaAtributos(this.f.org.listaAtributos(entAux.nombre, Archivo.path + '\\' + this.f.org.tipo + '\\' + rel.bd));
                if (this.f.org.buscaBloque(entAux, entAux.listAtr, atr.nombre, datoComp) != null)
                {
                    band = true;
                    break;
                }
            }

            return band;
        }
예제 #9
0
        public override long insertaAtributo(Atributo atr)
        {
            long pos = 0;

            try
            {
                using (FileStream fs = new FileStream(base.ruta, FileMode.Append))
                {
                    pos = fs.Position;
                    using (BinaryWriter bw = new BinaryWriter(fs))
                    {
                        bw.Write(atr.llave);
                        bw.Write(atr.nombre);
                        bw.Write(atr.tipo);
                        bw.Write(atr.campo);
                        bw.Write(atr.comentarioCompleto);
                        bw.Write(atr.sigAtr);
                        bw.Write(atr.sigRel);
                    }
                }
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
                pos = 0;
            }

            return pos;
        }
예제 #10
0
        /// <summary>
        /// Inserta al principio y liga el atributo
        /// </summary>
        /// <param name="ent"> Entidad que va a tener el atributo</param>
        /// <param name="atr"> atributo a insertar</param>
        /// <param name="atr"> Ruta del archivo</param>
        /// <returns>true si se insertó correctamente</returns>
        private bool insertaAtrPrincipio(Entidad ent, Atributo atr)
        {
            bool band = false;
            long posAtr, posEnt;

            atr.sigAtr = (ent as EntSecuencial).apAtr;
            posAtr = this.insertaAtributo(atr);
            (ent as EntSecuencial).apAtr = posAtr;
            posEnt = base.buscaPosEntidad(ent.nombre);
            if (posEnt != -1)
            {
                band = this.reescribeEntidad(ent, posEnt);
            }

            return band;
        }
예제 #11
0
        /// <summary>
        /// Inserta al final y liga el atributo
        /// </summary>
        /// <param name="ent">Entidad que va a tener el atributo</param>
        /// <param name="atr"> atributo a insertar</param>
        /// <param name="atr"> Ruta del archivo</param>
        /// <returns>true si se insertó correctamente</returns>
        private bool insertaAtrFinal(Entidad ent, Atributo atr)
        {
            bool band = false;
            long posAtr, posIt, posEnt;
            Atributo aAtr;

            posAtr = this.insertaAtributo(atr);
            if (posAtr != 0)
            {
                band = true;
            }
            if ((ent as EntSecuencial).apAtr == -1)
            {
                (ent as EntSecuencial).apAtr = posAtr;
                posEnt = this.buscaPosEntidad(ent.nombre);
                if (posEnt != -1)
                {
                    band = this.reescribeEntidad(ent, posEnt);
                }
            }
            else
            {
                posIt = (ent as EntSecuencial).apAtr;
                do
                {
                    aAtr = this.leeAtributo(posIt);
                    if (aAtr.sigAtr != -1)
                    {
                        posIt = aAtr.sigAtr;
                    }
                } while (aAtr.sigAtr != -1);
                aAtr.sigAtr = posAtr;
                band = this.reescribeAtributo(aAtr, posIt);
            }

            return band;
        }
예제 #12
0
        public override bool reescribeAtributo(Atributo atr, long pos,string path)
        {
            bool band = true;

            try
            {
                using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Write))
                {
                    fs.Seek(pos, SeekOrigin.Begin);
                    using (BinaryWriter bw = new BinaryWriter(fs))
                    {
                        bw.Write(atr.llave);
                        bw.Write(atr.nombre);
                        bw.Write(atr.tipo);
                        bw.Write(atr.campo);
                        bw.Write(atr.comentarioCompleto);
                        bw.Write(atr.sigAtr);
                        bw.Write(atr.sigRel);
                    }
                }
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
                band = false;
            }

            return band;
        }
예제 #13
0
        public void recuperaRelaciones(Atributo atr)
        {
            long apRel = atr.sigRel;
            Relacion rel;

            while (apRel != -1)
            {
                rel = this.leeRelacion(apRel);
                atr.agregaRelacion(rel);
                apRel = rel.apSigRef;
            }
        }
예제 #14
0
        public override Atributo leeAtributo(long pos,string path)
        {
            Atributo aAtr = new Atributo();

            try
            {
                using (FileStream fs = new FileStream(path, FileMode.Open))
                {
                    fs.Seek(pos, SeekOrigin.Begin);
                    using (BinaryReader br = new BinaryReader(fs))
                    {
                        aAtr.llave = br.ReadChar();
                        aAtr.nombre = br.ReadString();
                        aAtr.tipo = br.ReadString();
                        aAtr.campo = br.ReadString();
                        aAtr.comentario = br.ReadString();
                        aAtr.sigAtr = br.ReadInt64();
                        aAtr.sigRel = br.ReadInt64();
                    }
                }
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
            this.recuperaRelaciones(aAtr);

            return aAtr;
        }
예제 #15
0
 public virtual bool altaAtributo(string nomEnt, Atributo atr, bool orden)
 {
     return false;
 }
예제 #16
0
            public List<Atributo> atributos()
            {
                List<Atributo> listAtr = new List<Atributo>();
                Atributo aAtr;

                try
                {
                    foreach (DataGridViewRow row in ((DataGridView)base.controlPrincipal).Rows)
                    {
                        if (row.Cells["ColumnName"].Value != null)
                        {

                            aAtr = new Atributo();
                            aAtr.llave = row.Cells[0].Value.ToString()=="KP"? Atributo.KP :Atributo.None;
                            aAtr.nombre = row.Cells[1].Value.ToString();
                            aAtr.tipo = row.Cells[2].Value.ToString();
                            aAtr.campo = row.Cells[3].Value.ToString();
                            if (row.Cells["ColumnComment"].Value != null)
                            {
                                aAtr.comentario = row.Cells[4].Value.ToString();
                            }
                            else
                            {
                                aAtr.comentario = "";
                            }
                            listAtr.Add(aAtr);
                        }
                    }
                }
                catch(NullReferenceException x)
                {
                    MessageBox.Show(x.Message);
                }

                return listAtr;
            }
예제 #17
0
 public virtual bool altaRelacionEnKF(string nomEnt, Atributo atr, Relacion rel)
 {
     return false;
 }
예제 #18
0
        /// <summary>
        /// guarda una relacion para un atributo que es KP
        /// </summary>
        /// <param name="nomEnt"></param>
        /// <param name="atr">atributo  que es KP</param>
        /// <param name="rel">relacion a guardar</param>
        /// <returns>true si se guardo false si hubo error</returns>
        public override bool altaRelacionEnKP(string nomEnt,Atributo atr,Relacion rel)
        {
            bool band = false;
            long pos, posAtr;

            //            if (this.activeUser.permisos[1] == true)
            //            {
            rel.apSigRef = atr.sigRel;
            pos = this.insertaRelacion(rel);
            if (pos != 0)
            {
                atr.sigRel = pos;
                posAtr = this.buscaPosAtributo(nomEnt, atr.nombre, Archivo.path +'\\'+ base.tipo + '\\' + rel.bd );
                band = this.reescribeAtributo(atr, posAtr,Archivo.path +'\\'+ base.tipo + '\\' + rel.bd);
            }
            else
            {
                System.Windows.Forms.MessageBox.Show("Error al guardar relacion");
            }

            /*            }
                                    else
                                    {
                                        System.Windows.Forms.MessageBox.Show("No tienes permiso para altas");
                                    }
            */

            return band;
        }