Design: 2 jcomboboxes, lista box 2 zależy od wyboru z pola 1, danych z XML
Jestem przytłoczony próbą zaprojektowania rozwiązania tego problemu - jest to produkt uboczny braku doświadczenia.
Moim celem jest odczytanie pliku wejściowego XML, zapisanie informacji z XML i zapełnienie dwóch pól kombi danymi z XML. Zawartość drugiego pola kombi zmieni się w zależności od wyboru w pierwszym.
Biorąc pod uwagę tę strukturę XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Category xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Node>
<ID>Unique string</ID>
<Name>Unique string</Name>
<Code>Generic string<Code>
<Kind>Generic string</Kind>
<Frame>Generic string</Frame>
...
</Node>
...
</Category>
Pierwsze pole kombi: musi zawierać tylko unikalne wartości znalezione w sekcji Rodzaj.
Drugie pole kombi: Zawiera WSZYSTKIE wpisy nazw z każdego węzła, którego rodzaj jest równy rodzajowi wybranemu w pierwszym polu kombi.
Odnośnie źródła XML: Jest utrzymywane i generowane zewnętrznie. Wartości w sekcji ID zawsze będą unikalne. Wartości w sekcji Nazwa zawsze będą unikalne. Schemat nigdy się nie zmieni. Nowe unikalne wartości mogą pojawić się w sekcji Rodzaj w przyszłości.
Moje proponowane rozwiązanie: Utwórz klasę XMLNode, aby reprezentować węzeł ze źródła XML. Członkowie klasy XMLNode odpowiadają znacznikom w każdym węźle. Zapętl wszystkie węzły i utwórz kod XMLNode dla każdego z nich. Podczas pętli przez węzły: Dodaj obiekty XMLNode w mapie mieszającej, z Keys = XMLNode.ID i vals = XMLNode. Utwórz tablicę unikalnych rodzajów.
Wypełnij pole kombi jednym z tablicy wpisów Kind. Wypełnij pole kombi dwa z danych Nazwa dla każdego.
Czy jest to właściwe podejście, czy przeoczyłem lepsze / łatwiejsze / bardziej eleganckie rozwiązanie? Jeśli jestem na dobrej drodze, czy są jakieś oczywiste wady proponowanego rozwiązania?