source: branches/irods-mockup/doc/qcg-icon.txt @ 142

Revision 142, 8.4 KB checked in by jkonczak, 12 years ago (diff)

qcg-icon description

Line 
1==========
2 QCG-Icon
3==========
4
5Adres svn: https://apps.man.poznan.pl/svn/qcg-icon
6
7Na SVN-ie jest projekt dla NetBeans; uÅŒywałem NB 7.0.1, w 7.1 działa i zaznacza kilka nowych warningów typu kolejność importów.
8Większość GUI jest zrobiona przy uÅŒyciu wbudownaego w NetBeans edytora formatek.
9
10Opis działania
11==============
12
13UÅŒytkownik instaluje program:
14Do katalogu trafiają:
15- QCG-Icon.jar
16- lib\
17- resources\                         - zasoby; w tej chwili tylko ikony
18- certs\                             - certyfikaty; w tej chwili CA PL-Gridu
19- ( qcg-icon.exe | qcg_icon.sh | ? ) - launcher do QCG-Icon.jar (win|lin|mac)
20- config.properties                  - w tej chwili dwa ustawienia 1) jakim poleceniem uruchomić główne okno 2) jak duÅŒymi fragmentami pobierać pliki wyjściowe
21- urls.properties                    - opis zasobów (patrz przykład na SVN'ie)
22- logging.properties                 - reguły logowania
23- ( uninst.exe | - | ? )             - deinsalator
24(Windows) Do rejestru trafiają:
25- HKCR\< obsługiwane rozszerzenia, eg .gjf >\shell\submit\command   - dodaje akcję do menu kontekstowego dla rozszerzenia
26- HKCU\Software\Microsoft\Windows\CurrentVersion\Run\QCG-Icon       - włącza autostart (jeśli uÅŒytkownik wybrał)
27(Windows) Do menu trafia:
28- Wszystkie programy\qcg-icon.lnk                                   - skrót do Icon
29
30
31UÅŒytkownik uruchamia program pierwszy raz:
32- odpalana jest klasa Main
33- sprawdzane są argumenty, patrz nested klasa Main.Args
34- (zakładam brak argumentów)
35- stwierdzono brak plików %HOME%/.qcg-icon/user(cert|key).pem
36- uruchamia się okno CertificateFromP12ToPem
37- uÅŒytkownik podaje certyfikat i hasło, certyfikat jest konwertowany
38- uruchamia się głowne okno (klasa MainFrame)
39
40UÅŒytkownik zleca zadane:
41- odpalana jest klasa Main
42- odpalana jest klasa NewTask
43- odczytywany jest urls.properties i .qcg-appcache (klasa ResourceList)
44- odczytywany jest plik .qcg-icon-prefs, pola są usupełniane odczytanymi wartościami
45- uÅŒytkownik wypełnia pola
46- klika 'sprawdź dostępność':
47 - podaje hasło do certyfikatu
48 - ściągany jest nowszy plik urls.properties z http://grass1.man.poznan.pl/qcg-icon/urls.properties
49 - kaÅŒdy zasób jest pytany o FactoryAttributeDocuments
50 - wyniki są zapisywane w %HOME%/.qcg-icon/.qcg-appcache
51 - uaktualnienie GUI
52- uÅŒytkownik klika 'skrypty':
53 - nowe okno
54 - wpisuje poprawne ścieÅŒki lub wybiera przyciskiem przeglądaj
55- klika zleć zadanie
56- zapisywany jest plik .qcg-icon-prefs
57- IPC: submit próbuje się skontaktować z głównym procesem
58 - z java preferences odczytywany jest port na którym ostatnio było główne okno (lub -1)
59 - otwierane jest połącznie localhost:port
60 - odczytywany jest magiczny numer (ÅŒeby sprawdzić co jest po drugiej stronie)
61 - przesyłany jest opis zadania - klasa TaskDescription
62 - koniec programu
63- jeśli nie ma komunikacji z głównym procesem, jest on na nowo spawnowany
64
65Zlecenie zadania od strony MainFrame, zaczynając od uruchomienia:
66- uruchamia się Main
67- IPC: okno głowne sprawdza czy nie ma innego okna
68 - z java preferences odczytywany jest port na którym ostatnio było główne okno (lub -1)
69 - otwierane jest połącznie localhost:port
70 - odczytywany jest magiczny numer (ÅŒeby sprawdzić co jest po drugiej stronie)
71 - okno juÅŒ działa, koniec procesu.
72- (proces jest jedynym Iconem)
73- tworrzony jest obiekt MainFrame
74- konstruktor tworzy nowy wątek, otwiera server socket
75- zapisuje do preferencji port na którym słucha
76- wczytywane są zadania z pliku %HOME%/.qcg-icon/.qcg-icon-tasks
77- przychodzi połączenie
78- odbierany jest opis zadania (TaskDescription)
79- tworzone jest okno SubmitTask
80 - okno zleca zadanie tworząc obiekt Task
81 - wywoływany jest callback na główne okno
82- zadanie jest dodane do listy
83- zadanie jest dodane do TaskPolling
84- TaskPolling okresowo wywołuje checkState
85- checkState wykrywa zmianę stanu -> zmienia GUI
86- checkState wykrywa zakończenie -> woła taskFinished
87- jeśli wyniki są Å›ciągane automatycznie, uruchamiane jest fetchResults
88
89Dostęp do stubów QCG:
90- klasa Main tworzy QcgStubsKeeper i przekazuje dalej
91- odwołanie do getFactory / getStaging klasy QcgStubsKeeper
92- jeśli nie ma obiekty gsiAuthentication, lub jeśli wymuszono pytanie:
93 - uÅŒytkownk jest pytany o hasło
94 - tworzony jest obiekt gsiAuthentication
95- jeśli nie ma, przygotowywany jest stub factory / staging
96- zwracany jest stub factory / staging
97
98Instalatory
99===========
100Windows:
101- ant jar (albo clean&buld w NetBeans)
102- launch4j tworzy z pliku launch4j_qcg-icon.xml plik exe sprawdzający wersję Javy i uruchamiający QCG-Icon.jar z odpowiednimi parametrami
103- NSIS tworzy z installer.nsi instalator (uwaga na ścieÅŒkę do instalatora, prawdopodobnie C:\)
104
105Linux:
106- uruchomić makeLinuxDist.sh
107
108Mac:
109?
110
111Opis klas
112=========
113
114TaskDescription
115~~~~~~~~~~~~~~~
116Opis zadania, tworzony w momencie kiedy uÅŒytkownik zleca zadanie.
117Zawiera to co uÅŒytkownik wybrał w oknie zlecania zadania.
118Nie jest zmieniany w trakcie działania.
119
120Task
121~~~~
122Reprezentuje zlecone zadanie. Zawiera obiekt klasy TaskDescription i pola opisujące zadanie w usłudze QCG i stan zadania.
123Pola uzupełniane / zmieniane w trakcie działania.
124Zawiera metodę pobierającą czas następnego sprawdzenia stanu.
125
126TaskDatabase
127~~~~~~~~~~~~
128Trzyma informacje o zadaniach. W bieŌącej chwili na dysku, uÅŒywając serializacji Javy.
129
130ResourceList
131~~~~~~~~~~~~
132Wczytuje plik urls.properties opisujący zasoby i aplikacje.
133Zawiera statyczne klasy ResourceList.Resource i ResourceList.Application opisujące przeczytane z konfiguracji zasoby i aplikacje.
134Klasa uÅŒywana do pamiętania jakie aplikacje są dostępne na konkretnych zasobach (appCache).
135
136Utils
137~~~~~
138Grupa metod statycznych do róŌnych zadań, m. inn.:
139- obsługa autostartu
140- look and feel, centrowanie okna
141- tworzenie plików zip
142- usuwanie zdalnego katalogu, kopiowanie zdalnego katalog lokalnie, ściąganie plików
143- otwarcie edytora tekstowego i managera plików
144- opakowanie Runnable w okno z paskiem postępu, konwersja rozmiaru pliku na tekst
145- ...
146
147TaskPolling
148~~~~~~~~~~~
149Zarządza autmatycznym sprawdzaniem stanu zadań
150
151QcgStubsKeeper
152~~~~~~~~~~~~~~
153Trzyma wszystkie obiekty związane z QCG Comp SDK, autmoatycznie je tworzy jeśli nie istnieją i umoÅŒliwia wymuszone odświeÅŒenie stubów.
154Przechowuje dane uwierzytelniające (obiekt z klasy GSIAuthentication)
155
156CertificateFromP12ToPem
157~~~~~~~~~~~~~~~~~~~~~~~
158Konwertuje .p12 do .pem
159
160GenerateGsiProxy
161~~~~~~~~~~~~~~~~
162Tworzy certyfikat proxy
163
164Main
165~~~~
166Punkt wejścia do programu.
167Ustawia ścieÅŒki, zmienne środowiskowe, wczytuje argumenty i uruchamia NewTask lub MainFrame.
168Jeśli ma uruchmić MainFrame, sprawdza czy główne okno juÅŒ działa, jeśli tak - pokazuje je.
169
170NewTask
171~~~~~~~~~~~~
172Okno zlecenia nowego zadania.
173MoÅŒe być otwarte z:
174- klasy Main (jako osobna aplikacja)
175- klasy MainFrame
176
177Metody związane z ładowaniem danych do / z GUI:
178- NewTask_common (wołane przez konstruktor) uzupełnia GUI domyślnymi danymi
179- restoreSettingsFromProps ustawia dane w oknie na podstawie obiektu Properties
180- regeneratePropsFromTaskDescr ustawia dane w obiekcie Properties na podstawie ustawień w oknie (pośrednio przez TaskDescr)
181- validateByHand sprawdza czy ustawienia w oknie są poprawne, np. walltime nie jest równy 0
182
183SubmitTaskDialog
184~~~~~~~~~~~~~~~~
185Zleca zadanie na zasób. Pokazuje okno postępu.
186
187ResubmitTaskDialog
188~~~~~~~~~~~~~~~~~~
189Ponawia zlecenie wybranych przez uÅŒytkownika zadań. Część logiki powtórzona z SubmitTaskDialog, jednak ze zmienionymi szczegółami.
190
191MainFrame
192~~~~~~~~~~~~
193Główne okno.
194
195WaÅŒniejsze niepozorne zmienne i klasy:
196- externalSettings - wczytany plik config.properties
197- prefs - preferencje uÅŒytkownika, zapisane jako JavaPreferences
198- taskListActionListener - reaguje na akcje z popup menu przy jednym zadaniu
199- MultiTaskPopupActions - reaguje na akcje z popup menu przy wielu zadaniach
200- model - model listy zadań
201
202Proponuję na początek zwinąć cały kod (ppm w edytorze tekstowym / code folds / collapse all java code) i przeczytać komentarze przed zmiennymi i metodami.
203
204OutputPreview
205~~~~~~~~~~~~~~
206Podgląd stdout i stderr.
207
208ConfigurationDialog
209~~~~~~~~~~~~~~~~~~~~
210Okno z ustawieniami
211
212AboutDialog
213~~~~~~~~~~~
214Okno about
215
216SynchronousTaskMonitor
217~~~~~~~~~~~~~~~~~~~~~~
218Klasa na potrzeby Piotra, uruchamiana jeśli przy zlecaniu zadania poda się przełącznik -s.
219Wtedy proces systemowy zostanie zamknięty po zakończeniu zadania, a nie zleceniu zadania.
220Od zlecenia do zakończenia pokazwane jest okno SynchronousTaskMonitor.
Note: See TracBrowser for help on using the repository browser.