Blog do projektu Open Source JavaHotel

sobota, 29 października 2011

DB2 script launcher, Eclipse plugin (continue)

I added two small enhancements to DB2 script launcher.
Enhancement 1
Launch configuration dialog automatically for the first time when user right-clicked "Run as script launcher" and any configuration has been created so far (source).
Code snippet:
// Open launch configuration dialog for enter first configuration
  String name = manager.generateLaunchConfigurationName(NEW_CONFIGURATION);
  ILaunchConfigurationWorkingCopy wc = type.newInstance(null,name);
  configuration = wc.doSave();
  LaunchConfigurationManager lcm = DebugUIPlugin.getDefault().getLaunchConfigurationManager();
                                
  ILaunchGroup group = lcm.getLaunchGroup(type, ILaunchManager.RUN_MODE);
  DebugUITools.openLaunchConfigurationPropertiesDialog(getShell(), configuration, group.getIdentifier());

Enhancement 2
The second is related to the problem of invalidating launch configuration when user is changing something. It was achieved be means of updateLaunchConfigurationDialog() method. Code snippet (source):
ModifyListener listener = new ModifyListener() {

  @Override
  public void modifyText(ModifyEvent arg0) {
     updateLaunchConfigurationDialog();
  }
};
............
  db2Alias.addModifyListener(listener);

poniedziałek, 24 października 2011

Byliśmy na koncercie

23 października 2011 byliśmy na koncercie Warsaw Camerata w praskiej bazylice na Kawęczyńskiej, podobało nam się bardzo.
Orkiestra Warsaw Camerata, którą kieruje Paweł Kos-Nowicki, powstała w 2010 roku i jej celem jest prezentowanie muzyki znanych i trochę mniej znanych kompozytorów w bardzo dobrym wykonaniu, podobającej się widzom. I udało się to znakomicie.
Vivaldi napisał 39 koncertów na fagot i orkiestrę, tutaj usłyszeliśmy dwa, solistą był Leszek Wachnik. Wszyscy znamy doskonale 40 symfonię g-moll Mozarta, z przyjemnością wysłuchaliśmy jeszcze raz.
W ostatniej części koncertu orkiestra dała widzom możliwość wyboru jednego z trzech utworów. Do wysłuchania każdego z nich zachęcał jeden z muzyków orkiestry. Trochę żałowałem, że przez aklamację została wybrania "Orawa" Wojciecha Kilara, chętniej bym usłyszał "Lituanię" Romualda Twardowskiego, utwór premierowy, więc muzyka zupełnie nowa. Ale "Orawa", kompozycja rytmiczna i dynamiczna, też podobała się  bardzo.
Orkiestra dała też widzom możliwość wyboru repertuaru na następny koncert dnia 20 listopada. My wybraliśmy koncert skrzypcowy D-dur Beethovena oraz symfonię C-Dur Georgesa Bizeta (utwór mniej znany od pozostałych, ale na pewno wart poznania). Jesteśmy ciekawi, czy nasze gusta się pokryją z gustami pozostałych widzów.

niedziela, 16 października 2011

Byliśmy w teatrze

Byliśmy 6 października 2011 na spektaklu "Sprawa" w Teatrze Narodowym, podobało nam się bardzo.
"Samuel Zborowski" Słowackiego należy do tzw. "okresu genezyjskiego" w twórczości poety. Nie jest to oczywiście dramat z historii Polski ani głos w dyskusji, jakie właściwie motywy kierowały Zamojskim,  że doprowadził do ścięcia Zborowskiego. Temat ten budzi emocje także współcześnie, o czym świadczy znakomita książka Rymkiewicza "Samuel Zborowski" .
W dramacie Słowackiego nie sam Zborowski jest nawet głównym bohaterem, w inscenizacji w Teatrze Narodowym nazwa utworu została zamieniona na "Sprawa". Utwór nie ma wyraźnego zakończenia, sprawia wrażenie niekompletnego, jakby autor dopiero tworzył szkice dla późniejszej, bardziej spójnej, finalnej wersji. Dramat nie dzieje się w jakimś określonym czasie, czas jest tutaj rzeczą płynną. Nie dzieje się także w jakimś określonym miejscu, przestrzeni. Duchy i osoby pojawiają się i znikają, jedne zamieniają się w drugie, sam Lucyfer przyjmuje kilka imion i ról. Ale jest rzeczą niezwykłą, że to zdawać by się mogło niesceniczne dzieło, doczekało się już 13 realizacji.
Głównym bohaterem jest Lucyfer, ale nie jest to szatan, przeciwnik Boga. Bardziej przypomina Mefistofelesa z legendy o Fauście, ale Mefistofeles to przecież także szatan starający się wyrwać duszę Fausta Bogu. Lucyfer jest tutaj bardziej stworzeniem duchowym szukającym drogi do Boga, ale poza ramami jakiejkolwiek zorganizowanej religii czy oficjalnej teologii.
Dramat wyraża wiarę w istnienie Ducha przenikającego przez ludzkie dzieje i dążącego do osiągnięcia pełnego zrozumienia planów Boga.
W pierwszym akcie widzimy marzenie senne Eoliona wcielającego się w egipskiego faraona, łącznika między światem bogów i ludzi. W drugim akcie Eolion stawia się na wezwanie Walkirii i spotyka Dziewicę, córkę rybaka. Zaczynają wspólną wędrówkę, ale gdy są już o krok od ostatecznego poznania tajemnicy, Lucyfer wtrąca ich w przepaść, bo nie nadszedł jeszcze na to czas. W trzecim akcie Lucyfer pojawia się na dworze Amfitryty. Królestwo Amfitryty to nie tyle ocean, ale piekło, coś co powstało na samym początku i znajduje się w najniższym kręgu świata. Z tego świata kiedyś wyrwał się Lucyfer, przyoblekł się w ciało i rozpoczął mozolną i bolesną wędrówkę ku górze. W czwartym akcie przenosimy się do Zamku. Książę (ojciec Heliona) stracił zmysły, umiera i przybyli mnisi przygotowują się do wyprawienia pogrzebu. W piątym akcie Zamek zamienia się w sąd, gdzie stają dwaj protagoniści : Książę, w którego wcielił się duch kanclerza Zamojskiego i Samuel Zborowski. Końcową część utworu wypełnia ogromna przemowa Lucyfera-Adwokata. Ale celem nie jest ustalenie czyjejś winy w tym sporze. Tak jak przywoływany kilkakrotnie Jan (autor nowotestamentowej Apokalipsy) pokazuje niebo i wydarzenia na ziemi widziane z nieba, tak Adwokat ukazuje konflikt Zborowski-Zamojski widziany ze świata duchów. Duch objawił się w Samuelu Zborowskim. Miał się rozprzestrzenić na cały naród polski, wynieść go nad inne narody i z Lucyferem na czele wstąpić do niebiańskiego miasta. Ale Zamojski, kierowany suchym legalizmem kazał ściąć Zborowskiego i ten zamysł legł w gruzach.
Przedstawienie w Teatrze Narodowym było bardzo dobrą inscenizacją tego niejasnego i nie wszędzie spójnego dramatu. Autorzy nie starali się za wszelką cenę opowiedzieć jakiejś historii czy szukać współczesnych analogii, ale oddać jak najlepiej treść dramatu. Ale mam wątpliwość czy bez lektury samego tekstu jest możliwe ogarnięcie sensu. Zaś współczesne analogie się nasuwają - słynne słowa Papieża wypowiedziane 2 czerwca 1979 w Warszawie "Niech zstąpi Duch Twój i odnowi oblicze tej ziemi" (odniesienie do Ps 104) nasuwają skojarzenie do ducha, który poprzez Zborowskiego miał zmienić bieg historii. Jak wiemy - tym razem było to skuteczne.
Głównym bohaterem jest Lucyfer znakomicie zagrany przez Mariusza Bonaszewskiego. Lucyfer ma wiele wcieleń, raz wije się jak wąż, mówi głośno i cicho, dużo i mało, spokojnie i gwałtownie, jak przystało na Lucyfera wydrwiwa "urzędników" oficjalnej religii w czwartym akcie.  W finalnej scenie Lucyfer-Adwokat uderza w dramatycznie i poważne tony i również brzmi to znakomicie. Dominika Kluźniak doskonale odnalazła się w roli młodzieńczego Eoliona. Pozostałe postacie mają mniej do powiedzenia, ale z przyjemnością oglądaliśmy Jerzego Radziwiłłowicza w roli Księcia/kanclerza Zamojskiego.
W środku przedstawienia wstawiony jest przerywnik w postaci relacji z pogrzebu Słowackiego na Wawelu jaki miał miejsce w 1927 roku. Brzmi to trochę jak relacja nie z tego świata, gdyż współcześnie nie potrafimy sobie wyobrazić żeby państwo miało z takim rozmachem czcić pamięć jakiegokolwiek poety. Na końcu słyszymy - suflowane przez Lucyfera - słynne słowa: "bo królom był równy" i widzowie zadają sobie pytanie "czy był na pewno?". W drugim akcie Amfitryta w otoczeniu "oceanek" (przychodzi na pamięć Tytania z orszakiem elfów w "Śnie Nocy Letniej"), ubrane w stroje płetwonurków tańczą w rytmie hard-metalowej muzyki o natężeniu na progu wytrzymałości widzów. Gdy Lucyfer-Bukary przekonuje mnichów, że potrafi śpiewać dyszkantem, śpiew przechodzi w muzykę z finału "Czarodziejskiego Fletu" Mozarta.
Do końcowej przemowy Lucyfera (w dramacie zajmującej 1/3 całości) znakomicie została wykorzystana nowoczesna scena Teatru Narodowego. Dzięki temu przemowa, z trudnego dla widzów do wytrzymania monologu, zamieniła się w dynamiczne widowisko rozgrywające na kilku poziomach i scenach, nic nie gubiąc z samej treści.
Ponieważ sam dramat nie ma wyraźnego zakończenia, więc realizatorzy obudowali przestawienie na początku i końcu monologiem wygłoszonym przez młodego aktora wyrażający respekt wobec ogromu wszechświata. Ale bym skłamał, gdybym powiedział że treść tego przesłania utkwiła mi w pamięci.
Przedstawianie dramatów genezyjskich Słowackiego to na pewno ciężki kawałek chleba. Parafrazując znane powiedzenie, jeśli realizacja wierna, to ciężka i nużąca, jeśli ma być piękna, to trzeba odejść od samego dramatu. Ale można z całą pewnością powiedzieć, że  "Sprawa" w Teatrze Narodowym uniknęła tej pułapki, jest piękna i wierna.

piątek, 7 października 2011

DB2 script launcher, Eclipse plugin

Introduction

I created my first Eclipse plug-in. It is quite simple and allows running from Eclipse a script (sql) file against DB2 database.
It is based on CLP - Command Line Processor - and runs script which are valid in terms of this tool. It does not use JDBC connection.
In order to run  this plugin it is necessary to install DB2 client package. It is free and available from IBM web page. DB2 database (remote or local) should be cataloged and ready to use.

How it runs
Firstly we have to create DB2 script launcher.





















"Database alias name" is an alias (catalog name) to DB2 database.
After having launcher defined we can simply right-click on any file (with .db2 or .sql extension) and run this script using database access connection defined.























More then one database configuration can be defined to have an access to more than one database. In this case the selection dialog will be displayed allowing choosing the database (configuration).
It is also possible to run script launcher in editor. The current content of the editor is copied to temporary file and CLP is launched.
If no configuration has been defined yet than launcher dialog will displayed allowing defining the first one.

Source code
Source code and plugin.xml file file available here. It is my first plugin and probably not everything is perfect.
Several problems have been especially troublesome and required scanning through the documentation.

How to launch the configuration programmatically to allow entering the very first configuration (source).
if (configurations.length == 0) {
    // Open launch configuration dialog for enter first configuration
    String name = manager.generateLaunchConfigurationName(NEW_CONFIGURATION);
    ILaunchConfigurationWorkingCopy wc = type.newInstance(null,name);
    configuration = wc.doSave();
    LaunchConfigurationManager lcm = DebugUIPlugin.getDefault().getLaunchConfigurationManager();
                                
    ILaunchGroup group = lcm.getLaunchGroup(type, ILaunchManager.RUN_MODE);
    DebugUITools.openLaunchConfigurationPropertiesDialog(getShell(), configuration, group.getIdentifier());

How to extract file path name (necessary to launch CLP) from eclipse IPath (source)
@Override
 public void launch(ISelection arg0, String arg1) {
      ITreeSelection iSel = (ITreeSelection) arg0;
      TreePath[] t = iSel.getPaths();
      TreePath fPath = t[0];
      Object o = fPath.getLastSegment();
      File f = (File) o;
      URI locationURI = f.getLocationURI();
      URI u = locationURI;
      String fileName = u.getPath();
      runDB2(fileName, null);
}

How to extract content from the open editor (source)
@Override
public void launch(IEditorPart arg0, String arg1) {
  ITextEditor i = (ITextEditor) arg0;
  IDocumentProvider dProvider = i.getDocumentProvider();
  IDocument iDok = dProvider.getDocument(i.getEditorInput());
  String content = iDok.get();
  runDB2(null, content);
} 
Future
This launcher is very simple but can be the basis for future developing. For instance
  1. Enter the separator between different sql statements inside the file. Now ; is hardcoded.
  2. Keep the history of launching to match previous results.
  3. Catalog database (connection method) from plugin directly.
  4. etc.