SunSPOT i inne prezentacje :)

Już w najbliższą środę o godzinie 18:30 w sali numer 3 na Politechnice Krakowskiej będę miał okazję przedstawić część możliwości SunSPOT`a, spotkanie to ma też zapoczątkować cykl spotkań dotyczących inżynierii oprogramowania które były pomysłem moim i Tomka Treli :)
Chciałem również nawiązać do komentarza Radka Kozaka i wspomnieć o innych moich prezentacjach. Otóż zostałem zaproszony do Szczecina na konferencję java4people organizowaną przez Szczecin JUG, tematem mojej prelekcji będzie… JavaFX, mało tego - zostałem już zapisany na wizytę 8mego maja w… Gdańsku gdzie odbędzie się spotkanie JUG Trójmiasto !!!. Tak, tak - mamy już sporo JUG`ów w Polsce :D Najlepsze to to, że wszystkie (no może oprócz poznańskiego) ostro ostatnio działają. Jeśli już piszę o działalności to chciałem zwrócić uwagę na to co dzieje się we Wrocławiu - tamtejszy JUG bije wszystko inne co możemy uświadczyć w kraju. Wystarczy, że zobaczycie na częstotliwość spotkań które są tam organizowane (czasami to wydaje mi się, że aż zbyt często :P). Nie wiem jak to robi Paweł Szulc ale w pojedynkę rozkręca to na maxa - brawo Paweł !!! Mam nadzieję, że będziemy mieli okazję spotkać się ponownie w Warszawie na JAVArsovi którą organizuje Warszawa JUG i która podobno (wg. szimano) ma za 2 lata przebić SFI.

February 25, 2008 | 2 Comments 

Studencki Festiwal Informatyczny 2008

W dniach 6-8 marca 2008 odbędzie się kolejna, czwarta edycja Studenckiego Festiwalu Informatycznego, bezpłatnej i największej imprezy informatycznej w naszym kraju.
Jak i w poprzednich latach, tak i w tym roku będziemy mieli kolejnych znakomitych gości, wymienię Wam tylko trzech z nich : Joe Armstrong, Gilad Bracha, Chad Fowler myślę, że ich nazwiska w zupełności wystarczą do tego aby zachęcić Was do zaglądnięcia na stronę festiwalu i zarejestrowania się.
Jak już wcześniej pisałem, udział w festiwalu jest darmowy i w dodatku nie dotyczy tylko studentów, a co za tym idzie macie możliwość wzięcia udziału w najlepszej imprezie IT w jakiej możecie uczestniczyć w Polsce i to w dodatku za darmo!!!
Niemożliwie? A jednak!:D
I Wy możecie się przyczynić do promowania tej imprezy, wystarczy, że umieścicie na swoim blogu/stronie baner naszego festiwalu wklejając następujący kod :


Umieścicie w ten sposób taki oto baner :

Gdy już to zrobicie, to dajcie mi proszę koniecznie o tym znać na adres radek[małpka]holewa[kropeczka]org .

Jeśli chcecie umieścić inny baner to znajdziecie tutaj więcej informacji na ten temat.

February 17, 2008 | 1 Comment 

Spring WebFlow

Po pewnej przerwie spowodowanej chorobą i sesją powracam :D
Jako, że ostatnimi czasy miałem okazję zajmować się Spring WebFlow, dlatego też dziś będziecie mieli “przyjemność” poczytać coś na ten temat :D

A więc zaczynamy !!!

Na początek pytanie : Czy wiesz co to jest Spring WebFlow ?
Bardzo krótka odpowiedź : Framework który pozwala definiować flow (czyli przepływ) przez Waszą aplikację i w łatwy sposób nim zarządzać :D

Pewnie niejednokrotnie mieliście problemy z zarządzaniem zdefiniowanym przez Was przepływem, w szczególności toczyliście boje z obsługą różnych przejść, powrotów, wszelkiego rodzaju powiązań i przekazywania danych między akcjami itd. itp. :D
A więc Spring WebFlow ma za zadanie Wam to ułatwić, czy tak naprawdę ułatwia ? No cóż - ja mam mieszane uczucia :(
W dzisiejszej części przedstawię prostą konfigurację Spring WebFlow z użyciem Spring MVC.

W pierwszym kroku musimy stworzyć projekt webowy którego deployment descriptor (web.xml) powinien wyglądać następująco :




org.springframework.web.context.ContextLoaderListener
  

  
    sampleservlet
    org.springframework.web.servlet.DispatcherServlet
    1
    
contextConfigLocation

        /WEB-INF/sample-servlet.xml
        /WEB-INF/sample-flow.xml
      
    
  

  
    sampleservlet
    *.htm
  

  
    index.jsp
  

W powyższym pliku podaliśmy ścieżki do dwóch plików (/WEB-INF/sample-servlet.xml oraz /WEB-INF/sample-flow.xml), które to przechowują ogólną konfigurację naszej aplikacji, taką jak viewResolver służący do tworzenia widoku (w naszym przypadku będzie odpowiednio mapował widok zdefiniowany w konfiguracji flow na odpowiednią stronę JSP) czy też flowController dzięki któremu będziemy mieli możliwość wywoływania zdefiniowanego przez nas flow o podanym identyfikatorze (przykładowy sposób wywołania flow w dalszej części tego wpisu).

Kolejny krok to stworzenie plików sample-servlet.xml i sample-flow.xml.
Na pierwszy rzut pójdzie sample-servlet.xml :




  

  

  


  

  

Powyżej były widoczne wspomniane wcześniej viewResolver i flowController.

Oczywiście teraz zdefiniujemy główny plik konfiguracyjny flow (sample-flow.xml) :




  

  
    
  


FlowExecutor to główny element obsługi flow w Spring WebFlow, to on jest wykorzystywany przez flowController do obsługi przepływu naszej aplikacji.

Nasz kontroler zdefiniowaliśmy jako springowy bean w pliku applicationContext.xml :




  


Zwróci nam on listę obiektów, które będą zawierały namiary na blogi :)

Oto definicja naszego pierwszego (i w tym wpisie jedynego) flow - plik first-flow.xml




  

  
    
      
        
      
    
  


Jak łatwo zauważyć w powyższym kodzie, nasz flow przekieruje nas do widoku listForm co dzięki konfiguracji viewResolver`a w pliku sample-flow.xml sprawi, iż zostaniemy przekierowani do strony listForm.jsp znajdującej się w katalogu /WEB-INF/jsp/.
Zwróćmy też uwagę na tag gdyż definiuje on “punkt wejściowy” naszego przepływu, to właśnie od stanu zdefiniowanego za pomocą tego znacznika zacznie się nasz przepływ.
W chwili obecnej mamy w naszym przepływie tylko jeden stan o nazwie list, gdy osiągniemy ten stan zostanie wygenerowany widok, jego do jego stworzenia zostanie użyty nasz kontroler na którym zostanie wywołana metoda loadData (zwracająca kolekcję obiektów), kolekcja którą otrzymamy w wyniku jej wykonania będzie widoczna dla nas pod nazwą result (zgodnie z tym co zostało podane w znaczniku ).

Oto strona (listForm.jsp) na której zostanie pokazana zawartość kolekcji zwróconej przez wywołanie metody na kontrolerze :

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>







Tak jak już wspomniałem, nasz kontroler (SampleController) będzie w tym przypadku zwracał jedynie przykładową listę zawierającą informacje o trzech blogach :

package org.holewa.webflow.controller;

import org.holewa.webflow.vo.SampleVO;

import java.util.List;
import java.util.ArrayList;

public class SampleController {

  public List loadData() {
    List list =  new ArrayList();
    list.add(new SampleVO("http://jaceklaskowski.pl/", "Blog Jacka Laskowskiego"));
    list.add(new SampleVO("http://blog.mocna-kawa.com/", "Blog Wiktora"));
    list.add(new SampleVO("http://holewa.org/", "Mój blog"));
    return list;
  }

}

Value object (SampleVO) który użyliśmy w tym przykładzie ma następującą implementację :

package org.holewa.webflow.vo;

public class SampleVO {

  private String link;
  private String name;

  public SampleVO(String link, String name) {
    this.link = link;
    this.name = name;
  }

  public String getLink() {
    return link;
  }

  public String getName() {
    return name;
  }

  public void setLink(String link) {
    this.link = link;
  }

  public void setName(String name) {
    this.name = name;
  }
}

Teraz pasuje przygotować stronę powitalną, po kliknięciu na link przekieruje ona użytkownika do naszego flow.
Strona index.jsp jest następującej postaci :

<%@ page contentType="text/html;charset=UTF-8" language="java" %>



 Uruchom flow


Wywołanie /flowController.htm?_flowId=first-flow sprawi, że zostaniemy przekierowani do przepływu o identyfikatorze first-flow.
To w zasadzie tyle na początek przygody z Spring WebFlow, kod aplikacji (bez bibliotek) możecie pobrać tutaj. Kolejna część wkrótce (wytłumaczę w niej dlaczego mam mieszane uczucia w stosunku do tego frameworku) :D

February 16, 2008 | 3 Comments