/**Inserta un atribuoto, el entidad especificada*/ public void insAtributo(CNodoAtributo nuevo, CNodoEntidad ent) { CNodoAtributo aux, ant = null; aux = ent.getCabListAtri(); while (aux != null) { ant = aux; aux = aux.getSigAtri(); } if (aux == ent.getCabListAtri()) ent.setCabListAtri(nuevo); else ant.setSigAtri(nuevo); nuevo.setSigAtri(aux); }
private void asiganaTipoDato(int i, CNodoAtributo auxAtri) { string cad = null; switch (auxAtri.getTipo()) { case 1: cad = "char"; break; case 2: cad = "short"; break; case 3: cad = "int"; break; case 4: cad = "float"; break; case 5: cad = "long"; break; case 6: cad = "double"; break; case 7: cad = "string"; break; } TablaDeAtributos.Rows[i].Cells[3].Value = cad; }
private CNodoAtributo creaNuevoAtri(DCapturaAtributo dlgAtri) { CNodoAtributo nuevo = new CNodoAtributo(); int tam = 0, clave = 0; string ent; if (dlgAtri.clave.Checked == true) clave = 1; nuevo.setClavePrimaria(clave); nuevo.setNombre(dlgAtri.tbName.Text); nuevo.setTipo(dlgAtri.cbTipo.SelectedIndex + 1); switch (nuevo.getTipo()) { case 1://Char tam = 1; break; case 2://short tam = 2; break; case 3://int tam = 4; break; case 4://float tam = 4; break; case 5://long tam = 8; break; case 6://double tam = 8; break; case 7://string tam = Convert.ToInt32(dlgAtri.tbTamaño.Text); break; } nuevo.setTamaño(tam); ent = dlgAtri.cbListEnt.Text; CNodoEntidad aux; for (aux = archivo.getListaEntidad().getCabListEnt(); aux != null && aux.getNombre() != ent; aux = aux.getSigEnt()) ; if (aux != null) { nuevo.setEntRel(aux); nuevo.setApEntRel(aux.getDir()); } return (nuevo); }
/**\brief Carga las entidades a una lista*/ public void cargaListaEntidades() { /** * \details * Se inicializa una lista que almacenara todas las entidades existentes en el diccionario * de datos. */ long cabAux, dir, ptrAtri, dirReg, ptrSigAtri, ptrDirExt, ptrCabDatos; int clave, tipo, tam; string name; CNodoEntidad aux, aux2, entRela = null; CNodoAtributo nuevo; cabAux = br.ReadInt64(); //Cargar todas las entidades while (cabAux != -1) { br.BaseStream.Seek(cabAux, SeekOrigin.Begin); dir = br.ReadInt64(); name = br.ReadString(); ptrAtri = br.ReadInt64(); dirReg = br.ReadInt64(); ptrCabDatos = br.ReadInt64(); listaEntidades.insEntidad(new CNodoEntidad(dir, name, ptrAtri, dirReg, ptrCabDatos)); cabAux = dir; numEntidades++; } //Cargar las lista de atributos de cada entidad existente aux = listaEntidades.getCabListEnt(); while (aux != null) { cabAux = aux.getApCabListAtri(); while (cabAux != -1) { //Se leen los registros del atributo br.BaseStream.Seek(cabAux, SeekOrigin.Begin); ptrSigAtri = br.ReadInt64(); clave = br.ReadInt32(); name = br.ReadString(); tipo = br.ReadInt32(); tam = br.ReadInt32(); ptrDirExt = br.ReadInt64(); dir = br.ReadInt64(); //Se busca la entidad relacion con la direccion de esta misma entRela = null; if (ptrDirExt != 0) { aux2 = listaEntidades.getCabListEnt(); while (aux2 != null) { if (ptrDirExt == aux2.getDir()) { entRela = aux2; break; } else aux2 = aux2.getSigEnt(); } } nuevo = new CNodoAtributo(ptrSigAtri, clave, name, tipo, tam, ptrDirExt, entRela, dir); listaEntidades.insAtributo(nuevo, aux); cabAux = ptrSigAtri; } aux = aux.getSigEnt(); } }
/** Actualiza un atributo*/ public void modificaAtributo(string nameEnt, string nameAtri, CNodoAtributo nuevo) { CNodoEntidad nodoVert = null; CNodoAtributo nodoAtri; if (nameAtri.CompareTo(nuevo.getNombre()) != 0) { BajaAtributo(nameEnt, nameAtri); AltaAtributo(nuevo, nameEnt); } else { buscaEntidad(ref nodoVert, nameEnt); if (nodoVert != null) { AbrirArchivo(); nodoAtri = nodoVert.getCabListAtri(); while (nodoAtri != null && nodoAtri.getNombre().CompareTo(nameAtri) != 0) nodoAtri = nodoAtri.getSigAtri(); if (nodoAtri != null) { nodoAtri.setClavePrimaria(nuevo.getClave()); nodoAtri.setTipo(nuevo.getTipo()); nodoAtri.setNameTipo(nuevo.getNameTipo()); nodoAtri.setTamaño(nuevo.getTamaño()); nodoAtri.setEntRel(nuevo.getEntRel()); nodoAtri.setApEntRel(nuevo.getApEntRel()); nuevo.setDir(nodoAtri.getDir()); nuevo.setApSigAtri(nodoAtri.getApSigAtri()); escribeAtributo(nuevo, nuevo.getDir()); } CerrarArchivo(); } } }
/** Escribe un atributo en el archivo del diccionario*/ private void escribeAtributo(CNodoAtributo nuevo, long posA) { bw.BaseStream.Seek(posA, SeekOrigin.Begin); bw.Write(nuevo.getApSigAtri()); bw.Write(nuevo.getClave()); bw.Write(nuevo.getNombre()); bw.Write(nuevo.getTipo()); bw.Write(nuevo.getTamaño()); bw.Write(nuevo.getApEntRel()); bw.Write(nuevo.getDir()); }
/**\brief Inserta un atributo */ public void AltaAtributo(CNodoAtributo nuevo, string nameEnt) { /** * \details * \param nuevo Atributo a insertar * \param nameEnt Nombre de la entidad a la pertenece el atributo * */ CNodoEntidad nodoEnt = null; long ptrAux, ptrAnt = 0; CNodoAtributo aux, ant = null; bool band = false; AbrirArchivo(); buscaEntidad(ref nodoEnt, nameEnt); aux = nodoEnt.getCabListAtri(); ptrAux = nodoEnt.getApCabListAtri(); while (aux != null)//Busqueda dell atributo if (aux.getNombre().CompareTo(nuevo.getNombre()) < 0) { ant = aux; ptrAnt = ptrAux; ptrAux = aux.getApSigAtri(); aux = aux.getSigAtri(); } else { if (aux.getNombre().CompareTo(nuevo.getNombre()) == 0) band = true; break; } if (aux == nodoEnt.getCabListAtri()) { if (band == false) { nodoEnt.setApCabListAtri(fs.Length); nodoEnt.setCabListAtri(nuevo); escribeEntidad(nodoEnt, nodoEnt.getDir()); } } else if (band == false) { ant.setApSigAtri(fs.Length); ant.setSigAtri(nuevo); escribeAtributo(ant, ptrAnt); } if (band == false) { nuevo.setSigAtri(aux); nuevo.setApSigAtri(ptrAux); nuevo.setDir(fs.Length); escribeAtributo(nuevo, fs.Length); } CerrarArchivo(); }
/**Crea un nuevo archivo a partir de alguna organiacion de archivos *En el archivo destino, carga todo el diccionario de datos, sin datos*/ public void creaCopia(CArchivo aO, CArchivo aC) { CNodoAtributo auxAtri, nuevo = null; CNodoEntidad auxEnt, auxEntRel; auxEnt = aO.getListaEntidad().getCabListEnt(); //Copiar las entidades while (auxEnt != null) { aC.AltaEntidad(new CNodoEntidad(auxEnt.getNombre())); auxEnt = auxEnt.getSigEnt(); } //Copiar los atributos y sus relaciones de clave foranea auxEnt = aO.getListaEntidad().getCabListEnt(); while (auxEnt != null) { auxAtri = auxEnt.getCabListAtri(); while (auxAtri != null) { nuevo = new CNodoAtributo(); nuevo.setClavePrimaria(auxAtri.getClave()); nuevo.setNombre(auxAtri.getNombre()); nuevo.setTipo(auxAtri.getTipo()); nuevo.setTamaño(auxAtri.getTamaño()); nuevo.setEntRel(null); if (auxAtri.getEntRel() != null) { string entRel = auxAtri.getEntRel().getNombre(); auxEntRel = aC.getListaEntidad().getCabListEnt(); for (; auxEntRel != null; auxEntRel = auxEntRel.getSigEnt()) if (auxEntRel.getNombre().CompareTo(entRel) == 0) break; nuevo.setEntRel(auxEntRel); nuevo.setApEntRel(auxEntRel.getDir()); } aC.AltaAtributo(nuevo, auxEnt.getNombre()); auxAtri = auxAtri.getSigAtri(); } auxEnt = auxEnt.getSigEnt(); } }
public void getInfo(CNodoAtributo aux, ref int tamA, ref int des, ref int tipo, ref int tamB) { bool band = true; CNodoAtributo aux2; aux2 = aux.getEntRel().getCabListAtri(); while (aux2 != null) { if (band == true) if (aux2.getClave() != 1) des += aux2.getTamaño(); else { tipo = aux2.getTipo(); tamA = aux2.getTamaño(); band = false; } tamB += aux2.getTamaño(); aux2 = aux2.getSigAtri(); } tamB += 8; }
public DataGridViewComboBoxColumn creaComboBoxColum(CNodoAtributo aux) { DataGridViewComboBoxColumn cB = null; cB = new DataGridViewComboBoxColumn(); cB.Name = "CE"; cB.HeaderText = aux.getNombre(); cB.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox; tablaDatos.Columns.Add(cB); return (cB); }