/**Lectura de una objeto de la clase CEntrada para cargarlo en la hash dinamica*/ public CEntrada LeerEntrada(long dirEnt) { CEntrada entradaAux = null; if (dirEnt != -1) { entradaAux = new CEntrada(); br.BaseStream.Seek(dirEnt, SeekOrigin.Begin); entradaAux.setDir(br.ReadInt64()); entradaAux.setID(br.ReadInt32() ); entradaAux.setDirCubeta(br.ReadInt64()); entradaAux.setEspejo(br.ReadInt32()); entradaAux.setSigEntrada(br.ReadInt64()); } return (entradaAux); }
/**´Méetodo principal para llevar a cabo la inserción de algun bloque*/ public bool Alta_HashDinamica(CNodoEntidad e, CBloque b) { /** * \param e Entidad a la que pertrnece el bloque * \param b Bloque Nuevo bloque a insertar * \return Retorna Falso(Si tuvo exito), True(Si ya existe el bloque alguna cubeta) * */ CCubeta cubetaAux; CEntrada entradaAux; bool res = false; if (e.getApCabDatos() == -1) { tHashExt = new CTablaHashExt(); cubetaAux = new CCubeta(-1, TAM_CUBETA); entradaAux = new CEntrada(cubetaAux, -1); tHashExt.insEntrada(entradaAux); cubetaAux.setDir(getArchivo().ENDF()); getArchivo().EscribeCubeta(cubetaAux); entradaAux.setDirCubeta(cubetaAux.getDir()); entradaAux.setDir(getArchivo().ENDF()); getArchivo().EscribeEntrada(entradaAux); tHashExt.setCabEntradas(entradaAux.getDir()); tHashExt.setDir(getArchivo().ENDF()); getArchivo().EscribeTablaHashExt(tHashExt); e.setApCabDatos(tHashExt.getDir()); getArchivo().escribeEntidad(e, e.getDir()); } else tHashExt = getArchivo().LeerTablaHashExt(e.getApCabDatos()); b.setDir(getArchivo().ENDF()); if ((res = InsBloque(b)) == false) { tHashExt.incNumReg(); getArchivo().EscribeTablaHashExt(tHashExt); } return (res); }
/**Escribe un objeto de la clase CEntrada utilizado en la organizacion dinamica*/ public void EscribeEntrada(CEntrada e) { bw.BaseStream.Seek(e.getDir(), SeekOrigin.Begin); bw.Write(e.getDir()); bw.Write(e.getID()); bw.Write(e.getDirCubeta()); bw.Write(e.getEspejo()); bw.Write(e.getSigEntrada()); }
private CTablaHashExt creaTabla(CTablaHashExt tH) { CTablaHashExt nueva; CEntrada entAux; nueva = new CTablaHashExt(); nueva.setPrefAsociacion(tH.getPrefAsociacion()); nueva.setNumReg(tH.getNumReg()); foreach (CEntrada e in tH.getListEntradas()) { entAux = new CEntrada(); entAux.setID(e.getID()); entAux.setEspejo(e.getEspejo()); nueva.insEntrada(entAux); } return (nueva); }
public void DeleteEntrada(CEntrada e) { listaEntradas.Remove(e); }
public void insEntrada(CEntrada nuevaEntrada) { listaEntradas.Add(nuevaEntrada); }
/**Se incrementa la tabla de direccionesa 2(i)*/ public void Incrementate(CArchivo file) { CEntrada nueva, aux, aux2; int numEntradas, idAux; numEntradas = listaEntradas.Count; for (int i = 0; i < numEntradas; i++) { aux = getAtEntrada(i); idAux = aux.getID(); nueva = new CEntrada(aux.getCubeta(), getAtEntrada(getListEntradas().Count - 1).getID() + 1, file.ENDF()); insEntrada(nueva); file.EscribeEntrada(nueva); aux2 = getAtEntrada(getListEntradas().Count - 2); aux2.setSigEntrada(nueva.getDir()); file.EscribeEntrada(aux2); } EstableceEspejos(file);//Se actulizan los espejos file.EscribeTablaHashExt(this); }