JS - Strom - a implementacia symlinkov rubrika: Programování: JavaScript
7
xxar3s
položil/-a 6.7.2018
upravil/-a 6.7.2018
Mam strom ktory obsahuje viacero typov nodov:
- folder (moze obsahovat zaznamy, data, alebo prilohy)
- zaznam (moze obsahovat data alebo prilohy)
- priloha (obrazky videa alebo hociaky iny obsah)
- (su tam aj ine typy nodov ale tie su teraz nepodstatne)
- Strom je fyzicky ulozeny v SQL server databaze (kazdy TreeNode je reprezentovany jednym riadkom v tabulke Nodes) Nody mozu obsahovat okrem textovych dat aj blob s binarnymi datami.
- kazda polozka ma ParentId (okrem korenovej ta ma ParentId null)
- api vracia polozky klientovi ako pole nodov... stromova struktura sa vytvori az na klientovi podla ParentId
- tento strom sa vykresluje v komponente Tree http://blueprintjs.com/docs/v2/#core/components/tree (trosku upravenej pre moje potreby)
no a teraz by som tam chcel pridat symlinky (fungovat by to malo rovnako ako klasicke symlinky vo Windowse ci Linuxe) ako to implementovat co najednoduchsie?
Symlink by bol dalsi typ nodu. Tento Node by mal v sebe TargetId (a v nom by bola relacia na Node.Id na ktory odkazuje). Potialto je to jednoduche.
A teraz problemy:
- ako zabezpecim aby boli nody (original node + jeho potomkovia vs odkaz) na dvoch miestach stromu zosynchronizvane? Predstavujem si to riesit nejako cez referencie ale nemam jasnu predstavu ako.
- ako zabranim zacykleniu? ked sa budu nody referencovat medzi sebou alebo potomkami? ako taketo nieco detekujem? ako tomu zabranim?
odkaz
7
harrison314
odpověděl/-a 7.7.2018
Zacykleniu zabranis detkciou ckylov v grafe, je na to pomerne dost algoritmov, alebo hlupim prehladavanim pred pridanim symlinku (prehladas jeho podstrom, ci nenrazis na seba sameho), alebo kazdy uzol si bude drzat zoznam symlinkov, ktore obsahuje strom pod nim.
Pro zobrazení všech 3 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře