niedziela, 28 czerwca 2009

Para buch, koła w ruch... czyli aplikacja CRUD z JBoss Seam w 5... no może 15 minut ;).

Stoi na stacji lokomotywa, ciężka ogromna, aż pot z niej spływa... że tak zacznę słowami poety.

Z końmi, grubasami i armatą, które rozmieszczone są w kolejnych wagonach ciągniętych przez pojazd się przy okazji dzisiejszego wpisu nie spotkamy, ale... z parą jak najbardziej.

Przedstawię jak najprościej wygenerować aplikację CRUD z wykorzystaniem szkieletu aplikacyjnego JBoss Seam. Posłużę się środowiskiem Eclipse 3.4.2 z zainstalowaną wtyczką JBoss Tools 3.0. Użyję też bazy MySql 5.0 oraz serwera aplikacji Java EE JBoss 5.0.1.GA. Niezbędna okaże się również instalacja Seama. Użyję wersji 2.1.1.GA.

Jeżeli potrzebujesz aplikacji webowej, aby zaliczyć projekt, świetnie trafiłeś. Wystarczy przerwa między zajęciami, ale ad rem...

Instaluję Eclipse, bazę MySQL, JBossa 5.0.1.GA oraz wtyczkę JBoss Tools oraz Pudelek Eclipse Plugin.

W Eclipsie, konfiguruje środowisko uruchomieniowe JBossa. W tym celu otwieram menu preferencji
Window -> Preferences
i znajduję tam zakładkę
Server / Runtime Environments
na której klikam przycisk
Add...

Odszukuję pozycję
JBoss 5.0 Runtime
która znajduje się w katalogu
JBoss Comunity


Klikam
Next
wskazuję katalog z zainstalowanym JBossem


i klikam
Finish

Pora stworzyć nowy projekt. Z menu
File -> New -> Project...
wybieram
Seam Web Project


Nadaję nazwę projektowi (radzę zacząć małą literą):
seamApplication

Z menu
Configuration
wybieram
Dynamic Web Project With Seam 2.1 (technology preview)


Klikam kilka razy
Next >
i zatrzymuję się na zakładce, na której muszę wskazać środowisko uruchomieniowe Seam
Seam Runtume.
W tej samej zakładce wybieram rodzaj aplikacji jako
ear.


Definiuję środowisko uruchomieniowe Seama, klikając

Add...


i wskazuję katalog, w którym zainstalowałem Seama 2.1.1.GA.

Na tej samej zakładce konfiguruję połączenie z bazą danych. Pobieram sterownik JDBC MySQL Connector.

W sekcji Database wybieram typ bazy danych jako
MySQL (InnoDB)
oraz tworze nowy profil połączenia z bazą. Jako
Profile Type
wybieram
MySQL


Klikam
Next >
i definiuję nowy sterownik


Na zakładce
Jar List
wskazuję plik jar który znajdował się w paczce z pobranym sterownikiem JDBC.


Podaję nazwę bazy danych oraz nazwę użytkownika i hasło do bazy


Od razu tworzę taką bazę wydając polecenie w konsoli mysql

create database test default character set utf8;

a w Eclipsie klikam
Finish.

Komputer chwilkę pomyśli, po czym stworzy 4 projekty:
seamApplication z aplikacją webową
seamApplication-ear z deskryptorem aplikacji EAR
seamApplication-ejb z aplikacją EJB
seamApplication-test z testami aplikacji

Startuję serwer aby sprawdzić, czy aplikacja się uruchamia.
Po wpisaniu w przeglądarkę adresu:
http://localhost:8080/seamApplication/
moim oczom ukazuje się aplikacja:


So far, so good...

Jako, że mamy do stworzenia aplikację CRUD, trzeba by stworzyć encję, którą będziemy mogli edytować. Tworzę więc klasę
pl.matt.model.Employee:


package pl.matt.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.validator.Email;
import org.hibernate.validator.Length;
import org.hibernate.validator.Max;
import org.hibernate.validator.Min;
import org.hibernate.validator.NotNull;

@Entity
@Table(name="employees")
public class Employee {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;

@Length(max=128)
@NotNull
private String name;

@Column(length=128)
@NotNull
private String surname;

@Email
@NotNull
@Column(length=128)
private String email;

@Min(0)
@Max(130)
@NotNull
private int age;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

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

public String getSurname() {
return surname;
}

public void setSurname(String surname) {
this.surname = surname;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

}


Następnie generuję do niej interfejs użytkownika. Klikam prawym przyciskiem myszy na projekcie, wybieram
New... -> Other
i
Seam Generate Entities


Zaznaczam opcję

Use existing entities

i klikam
Finish

Restartuję JBossa i aplikacja gotowa.

Pojawiła się lista pracowników, ich wyszukiwarka oraz strony umożliwiające ich dodawanie, kasowania oraz aktualizację.


Do tego działa logowanie użytkowników, ajaxowa walidacja adresu email, wieku i wymagalności pól.


Żyć nie umierać.
Kod źródłowy przykładu zamieszczam tutaj, tu, tu i tu.

niedziela, 14 czerwca 2009

Filmy się obrobiły

Stało się.

Wszystkie filmy z warszawskiego Eclipse Demo Campu pojawiły się na stronie:
http://javatv.pl/.

Muszę przyznać, że jakoś jest niezła, a i 15 minutowe nagrania ogląda się przyjemniej niż 2 godzinne.

Oto moje wystąpienie:

poniedziałek, 8 czerwca 2009

Garść wrażeń po warszawskim Eclipse DemoCamp Galileo 2009

W ubiegły wtorek, 2giego czerwca w Warszawie w budynku MIMUW przy ul. Banacha 2 odbyły się warsztaty poświęcone najnowszemu wydaniu Eclipse IDE (jeszcze w wersji RC) Eclipse DemoCamp Galileo 2009.

Warsztaty poprzedził poczęstunek z pizzy, co okazało się sprawką patrona Code-House.org.

Formuła imprezy była dość nietypowa, przynajmniej jak na warszawskie spotkania. Warsztaty składały się z 6ciu 15 minutowych wystąpień. Jednym z nich, było wystąpienie "Wtyczka do Eclipse w 5 ... no może 15 minut" autorstwa... mojego autorstwa.

Zaczęło się całkiem nietypowo, bo od kłopotów technicznych. Projektor odmówił współpracy z moim Ubuntu w rozdzielczości wyższej niż 800x600. A że prezentacja trwała 15 minut... to i skończyło się nietypowo, ponieważ tworząc wtyczkę nie mogłem zaznaczyć odpowiednich opcji konfiguracyjnych. Nie mieściły się one po prostu na ekranie. I tak zamiast odtwarzacza mp3jek Eclipse zamienił się tylko w prymitywny manager plików.

Jeżeli ktoś miałby ochotę zobaczyć co chciałem osiągnąć, a nie tylko to co mi się udało "programując przez dziurkę od klucza" jak to określił słuchacz w pierwszym rzędzie, kod wtyczki odtwarzającej pliki MP3 zamieszczam tutaj.

Niedługo możecie spodziewać się krótkiego poradnika, a ja nie mogę doczekać się nagrania z konferencji.