public static EnlaceDijkstra Clone(this EnlaceDijkstra enlace) { EnlaceDijkstra newModel = new EnlaceDijkstra(); newModel.idEnlace = enlace.idEnlace; newModel.idProyecto = enlace.idProyecto; newModel.cNombre = enlace.cNombre; newModel.idAfinidad = enlace.idAfinidad; newModel.idRouterA = enlace.idRouterA; newModel.idRouterB = enlace.idRouterB; newModel.nBandwidth = enlace.nBandwidth; newModel.nBandwidthDisponible = enlace.nBandwidthDisponible; newModel.nPesoAdministrativo = enlace.nPesoAdministrativo; newModel.targetA = enlace.targetA; newModel.targetB = enlace.targetB; return newModel; }
/// <summary> /// Genera una lista de Enlaces en base a la lista de Nodos Dijkstra /// </summary> /// <param name="nodeList"></param> /// <returns></returns> public static List<EnlaceDijkstra> ToEnlaces(this List<NodoDijkstra> nodePathList, List<EnlaceDijkstra> linkPathList) { //Proyecto tempModel = new Proyecto(idProyecto); List<EnlaceDijkstra> listaEnlacesLSP = new List<EnlaceDijkstra>(); //Genera una lista de Enlaces en base a la lista de Nodos Dijkstra for (int cont = 0; cont < nodePathList.Count; ++cont) { int curr_n = cont; int next_n = cont + 1; if (next_n < nodePathList.Count) { int curr_routerid = nodePathList[curr_n].idRouter; int next_routerid = nodePathList[next_n].idRouter; EnlaceDijkstra temp = new EnlaceDijkstra(); temp = linkPathList.Find( x => (x.idRouterA == curr_routerid && x.idRouterB == next_routerid) || (x.idRouterB == curr_routerid && x.idRouterA == next_routerid)); if (temp != null) { EnlaceDijkstra justforBW = nodePathList[curr_n].listaEnlacesDijkstra.Find( x => (x.idRouterA == curr_routerid && x.idRouterB == next_routerid) || (x.idRouterB == curr_routerid && x.idRouterA == next_routerid)); temp.nBandwidthDisponible = justforBW.nBandwidthDisponible; listaEnlacesLSP.Add(temp); //EnlaceDijkstra new_temp = new EnlaceDijkstra(); //new_temp = nodePathList[cont].listaEnlacesDijkstra.Find(x => x.idEnlace == temp.idEnlace); //if (new_temp != null) // listaEnlacesLSP.Add(new_temp); } } } return listaEnlacesLSP; }
public static List<EnlaceDijkstra> SelectListaEnlacesRouter(int idProyecto, int idRouter) { List<EnlaceDijkstra> listaEnlaces = new List<EnlaceDijkstra>(); Data.dsEnrutamientoTableAdapters.EnlacesRouterTableAdapter Adapter = new Data.dsEnrutamientoTableAdapters.EnlacesRouterTableAdapter(); Data.dsEnrutamiento.EnlacesRouterDataTable dt = Adapter.SelectEnlacesRouter(idProyecto, idRouter); foreach (var dr in dt) { EnlaceDijkstra temp = new EnlaceDijkstra(); temp.idEnlace = dr.idEnlace; temp.idProyecto = dr.idProyecto; if (!dr.IscNombreNull()) temp.cNombre = dr.cNombre.Trim(); if (!dr.IsidRouterANull()) temp.idRouterA = dr.idRouterA; if (!dr.IsidRouterBNull()) temp.idRouterB = dr.idRouterB; if (!dr.IsnBandwidthNull()) temp.nBandwidth = dr.nBandwidth; if (!dr.IsnPesoAdministrativoNull()) temp.nPesoAdministrativo = dr.nPesoAdministrativo; if (!dr.IsidAfinidadNull()) temp.idAfinidad = dr.idAfinidad; temp.nBandwidthDisponible = dr.nBandwidth; //Solo para uso del algoritmo de Dijkstra temp.target = new NodoDijkstra(); if (temp.idRouterA != idRouter) temp.target = new NodoDijkstra(temp.idRouterA, idProyecto); else if (temp.idRouterB != idRouter) temp.target = new NodoDijkstra(temp.idRouterB, idProyecto); listaEnlaces.Add(temp); } return listaEnlaces; }
public static List<EnlaceDijkstra> SelectListaEnlacesDijkstra(int idProyecto) { List<EnlaceDijkstra> listaEnlaces = new List<EnlaceDijkstra>(); Data.dsTopologiaTableAdapters.EnlacesTableAdapter Adapter = new Data.dsTopologiaTableAdapters.EnlacesTableAdapter(); Data.dsTopologia.EnlacesDataTable dt = Adapter.SelectEnlacesProyecto(idProyecto); foreach (var dr in dt) { EnlaceDijkstra temp = new EnlaceDijkstra(); temp.idEnlace = dr.idEnlace; temp.idProyecto = dr.idProyecto; if (!dr.IscNombreNull()) temp.cNombre = dr.cNombre.Trim(); if (!dr.IsidRouterANull()) temp.idRouterA = dr.idRouterA; if (!dr.IsidRouterBNull()) temp.idRouterB = dr.idRouterB; if (!dr.IsnBandwidthNull()) temp.nBandwidth = dr.nBandwidth; if (!dr.IsnPesoAdministrativoNull()) temp.nPesoAdministrativo = dr.nPesoAdministrativo; if (!dr.IscAfinidadNull()) temp.idAfinidad = dr.idAfinidad; if (!dr.IsnBandwidthReservadoNull()) temp.nBandwidthDisponible = temp.nBandwidth - dr.nBandwidthReservado; listaEnlaces.Add(temp); } return listaEnlaces; }