468x60

giovedì 30 aprile 2009

SwingX - utilissimi componenti Java

Avendo necessità di sviluppare applicazioni Java Swing, ed in particolare un calendario dal look graficamente ben curato, ho scoperto SwingX.
SwingX è una libreria open source di componenti Java, molto utile, che mette a disposizione degli sviluppatori la possibilità di utilizzare una versione "estesa" dei componenti Swing, sviluppata dal laboratorio Open Source SwingLabs per permettere uno sviluppo di applicazioni Swing più veloce, performante e con un look accattivante.

Netbeans - come aggiungere Componenti alla Palette

Probabilmente vi sarà capitato di voler installare nuovi componenti sulla Palette di Netbeans, ma siccome la cosa non è molto intuitiva la illustro passo-passo qui di seguito:

Per creare una palette di componenti in NetBeans 6.5:

  • Creare una libreria per i componenti:
    • selezionare "Tools | Library | New Library" dal menu
    • settare il nome della libreria (es. 'MyLibrary') e click OK
    • quando la nuova libreria è selezionata, click 'Add Jar/Folder'
    • selezionare i files jar della libreria e click 'Add jar/folder'
    • chiudere il library manager.
  • Installare i componenti di MyLibrary:
    • selezionare 'Tools | Palette | Swing/AWT Components' dal menu per aprire il Palette manager
    • creare una nuova categoria col bottone 'New Category'
    • selezionare la categoria creata e click su 'Add From Library'
    • selezionare la libreria 'MyLibrary' e click Next
    • selezionare tutti i components disponibili e click Next
    • selezionare la categoria 'MyLibrary', click su Finish e chiudi il palette manager.
  • Aggiungere la libreria ad un progetto. (Right-click sul nodo Libraries e selezionare 'Add Library').

mercoledì 29 aprile 2009

Message dialogs in Java

Programmando in Java sono facilmente implementabili i message dialogs. Vediamo come...

Illustriamo di seguito alcuni esempi:

showMessageDialog
Esempio in cui viene creato un message dialog contenente un pulsante OK, una icona, il messaggio e l'intestazione del messaggio. Ecco alcuni esempi di utilizzo di showMessageDialog:

Informational dialog with default title and icon
//default title and icon
JOptionPane.showMessageDialog(frame,
"Eggs are not supposed to be green.",
"Message");
Informational dialog with custom title, warning icon
//custom title, warning icon
JOptionPane.showMessageDialog(frame,
"Eggs are not supposed to be green.",
"Inane warning",
JOptionPane.WARNING_MESSAGE);
Informational dialog with custom title, error icon
//custom title, error icon
JOptionPane.showMessageDialog(frame,
"Eggs are not supposed to be green.",
"Inane error",
JOptionPane.ERROR_MESSAGE);
Informational dialog with custom title, no icon
//custom title, no icon
JOptionPane.showMessageDialog(frame,
"Eggs are not supposed to be green.",
"A plain message",
JOptionPane.PLAIN_MESSAGE);
Informational dialog with custom title, custom icon
//custom title, custom icon
JOptionPane.showMessageDialog(frame,
"Eggs are not supposed to be green.",
"Inane custom dialog",
JOptionPane.INFORMATION_MESSAGE,
icon);

showOptionDialog
Esempio in cui viene creato un modal dialog specificandone buttoni, icone, messaggio, titolo. Con questo metodo è possibile cambiare il testo che appare sui bottoni standard dei dialogs. Puoi anche effettuare molte altre personalizzazioni.

Yes/No/Cancel (in different words); showOptionDialog
//Custom button text
Object[] options = {"Yes, please",
"No, thanks",
"No eggs, no ham!"};
int n = JOptionPane.showOptionDialog(frame,
"Would you like some green eggs to go "
+ "with that ham?",
"A Silly Question",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options,
options[2]);

JPA - esempi di utilizzo

Alcuni esempi di utilizzo di Java Persistence API (JPA)...

- Storing di un oggetto
private void saveButtonActionPerformed(ActionEvent evt) {
Address address = new Address();
address.setCustomerNo( customerNoText.getText() );
address.setLastname( lastnameText.getText() );
address.setFirstname( firstnameText.getText() );
address.setStreet( streetText.getText() );
address.setPostcode( postcodeText.getText() );
address.setCity( cityText.getText() );

EntityManagerFactory emf = Persistence.createEntityManagerFactory(
"JPATutorialPU" );
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();

try {
em.persist( address );
em.getTransaction().commit();
} catch (Exception e) {
System.out.println( e.getMessage() );
em.getTransaction().rollback();
} finally {
em.close();
}
}

- Lettura di un oggetto
private void loadButtonActionPerformed(java.awt.event.ActionEvent evt) {                                        

EntityManagerFactory emf = Persistence.createEntityManagerFactory(
"JPATutorialPU" );
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();

String customerNo = JOptionPane.showInputDialog(
null,
"Enter customer number",
"Input",
JOptionPane.QUESTION_MESSAGE);

try {
Query query = em.createQuery(
"SELECT a FROM Address a WHERE a.customerNo = :customerNo");
query.setParameter(
"customerNo",
customerNo);

Address address = (Address) query.getSingleResult();

customerNoText.setText( address.getCustomerNo() );
lastnameText.setText( address.getLastname() );
firstnameText.setText( address.getFirstname() );
streetText.setText( address.getStreet() );
postcodeText.setText( address.getPostcode() );
cityText.setText( address.getCity() );

} catch (Exception e) {
System.out.println( e.getMessage() );
em.getTransaction().rollback();
} finally {
em.close();
}
}

martedì 28 aprile 2009

Java Persistence Query Language (JPQL) - Query Language ad oggetti

Il Java Persistence Query Language (JPQL) è un query language utilizzato per effettuare query su entità memorizzate su database relazionali. La sintassi è simile a quella di SQL, ma opera su oggetti entità piuttosto che direttamente sulle tabelle del database. JPQL permette di scrivere query portabili, indipendentemente dal sottostante data store.

Sintassi completa: JPQL BNF

Esempi

- SELECT
SELECT employee FROM Employee employee JOIN employee.address address WHERE address.city = :city AND employee.firstName LIKE :name ORDER BY employee.firstName
- FROM
FROM Employee employee JOIN FETCH employee.address LEFT OUTER JOIN FETCH employee.phones JOIN employee.manager manager, Employee ceo
- WHERE
WHERE employee.firstName = :name AND employee.address.city LIKE 'Ott%' ESCAPE '/' OR employee.id IN (1, 2, 3) AND (employee.salary * 2) > 40000
- GROUP BY
GROUP BY employee.address.country, employee.address.city HAVING COUNT(employee.id) > 500
- ORDER BY
ORDER BY employee.address.country, employee.address.city DESC
- Subquery
WHERE employee.salary = (SELECT MAX(wellPaid.salary) FROM Employee wellPaid)
- UPDATE
UPDATE Employee SET salary = salary * 2 WHERE address.city = :city
- DELETE
DELETE FROM Employee WHERE address.city = :city

Esempio in Java

Query query = entityManager.createQuery("SELECT a FROM Address a WHERE a.customerNo = :customerNo");
query.setParameter("customerNo",customerNo);
con operatore:
Query query = entityManager.createQuery("SELECT a FROM Address a WHERE a.customerNo = ?1 OR a.customerNo = ?2");
query.setParameter(1,customerNo1).setParameter(2,customerNo2);

Java Persistence API

Java Persistence API (JPA) è un framework per il linguaggio di programmazione Java, il quale permette a gli sviluppatori di gestire dati relazionali in applicazioni Java. Persistence consiste di tre aree:
  1. le API, definite nel package javax.persistence
  2. il Java Persistence Query Language (JPQL)
  3. metadati oggetto/relazione
- Entity
Una Persistence Entity è una classe Java che tipicamente rappresenta una tabella in un database relazionale. Le istanze della Entity corrispondono a righe individuali sulla tabella. Le Entities hanno tipicamente relazioni con altre Entities, e queste relazioni sono espresse attraverso metadati oggetto/relazione. Questi metadati possono essere specificati direttamente nella classe della Entity utilizzando le annotations, oppure in un descrittore XML distribuito con l'applicazione.

- Java Persistence Query Language
Il Java Persistence Query Language (JPQL) è utilizzato per effettuare interrogazioni (query) su delle Entities memorizzate in un database relazionale. Le query hanno una sintassi simile ad SQL, ma operano su oggetti entità piuttosto che con tabelle di un database. Vedi Wikibooks:Java persistence:JPQL

- Motivazioni della Java Persistence API
Molti sviluppatori Java hanno utilizzato oggetti persistenti forniti da frameworks open source invece degli entity beans perchè gli entity beans e gli enterprise beans erano considerati troppo pesanti e complicati, e potevano essere utilizzati solo con application servers Java EE. Molte caratteristiche dei framework sono state incorporate in Java Persistence API, e progetti come Hibernate e TopLink Essentials Open-Source sono ora implementazioni delle Java Persistence API.

venerdì 24 aprile 2009

Guadagnare e Risparmiare Online col tuo Centro Commerciale



Inizia a GUADAGNARE ONLINE aprendo GRATUITAMENTE un tuo Centro Commerciale...

Potrai trovare migliaia di prodotti delle migliori marche, messi a disposizione da Partner selezionati direttamente da GIGACENTER, per portare al visitatore il meglio, in termini di affidabilità e di prezzo.

Puoi farlo semplicemente cliccando sul banner qui sotto:




Come Aumentare il segnale radio WiFi a costo zero


Qualsiasi sia il router WiFi o Access point che utilizzi, avrai già scoperto che la trasmissione del segnale radio é molto condizionata dagli elementi architettonici presenti nell'ambiente, e questo influenza la diffusione del segnale irradiato, creando spesso zone d'ombra dove la connessione internet risulta difficile se non impossibile.

Il segnale WiFi viene irradiato dall'antenna standard a 360°, quando invece nella maggioranza dei casi sarebbe preferibile poter direzionare a piacere il segnale in una determinata direzione, con un doppio beneficio: si aumenta il segnale in quella direzione e contemporaneamente lo si scherma in quella opposta, utile per circoscrivere l'invio del segnale in direzioni indesiderate come ad esempio verso l'appartamento del vicino di condominio...

La soluzione piú semplice e contemporaneamente molto efficace nonostante le apparenze, é quella di migliorare il sistema di antenna, utilizzando uno o due "riflettori a parabola" autocostruiti, da posizionare sulle stesse antenne del router WiFi.

In questo modo concentri e dirigi in una sola direzione il segnale ricevuto e irradiato, con il risultato di avere connessioni stabili anche in presenza di segnali radio molto deboli.

Passando alla fase pratica, guarda il video nell'immagine sopra per capire meglio come si realizza l'antenna, poi scarica e stampa da qui il cartamodello, incolla su cartoncino, ricopri la sola parabola di alluminio, ritaglia, componi e installa !

Se stampi il cartamodello cosi come é nell'immagine otterrai un guadagno di circa 9 dBi, se invece raddoppi l'immagine prima della stampa il guadagno salirà a circa 12 dBi, ovviamente l'uso di due riflettori aumenterà ulteriormente il guadagno.

Per controllare e regolare l'orientamento ottimale dei riflettori puoi utilizzare NetStumbler, osservando sul monitor la variazione di intensità del segnale ricevuto con diversi orientamenti.

giovedì 23 aprile 2009

MySql Trigger - una importante funzionalità avanzata

I Trigger sono una funzionalità avanzata molto utile introdotta con MySql 5.0. Brevemente i trigger, permettono di applicare un controllo sull'integrità dei dati inseriti, di verificarne la correttezza ed eventualmente di modificarli. Prima di essere utilizzati i trigger devono essere dichiarati mediante apposita query. Vedremo anche degli esempi concreti, ma prima di tutto scopriamone la sintassi.

- Sintassi
La dichiarazione di un trigger si presenta in questo modo:
CREATE TRIGGER nome_del_trigger
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON nome_della_tabella
FOR EACH ROW
codice_SQL_da_applicare_con_il_trigger
  1. La prima linea indica il nome del trigger
  2. La seconda linea determina il tempo di esecuzione del trigger
  3. La terza linea introduce il tipo di query SQL che genererà l'esecuzione del trigger. La query può essere solo di tipo esecutivo quindi INSERT, UPDATE, DELETE ma non SELECT. In base al tipo di query ci troveremo a poter intervenire sul record già presente nel database (nel caso ad esempio di una query UPDATE o DELETE) oppure sul record nuovo che andremo ad inserire o a sostituire (query UPDATE o INSERT). Da notare che INSERT non rappresenta soltanto le query di tipo INSERT, bensì tutte le query che inseriscono dati ex-novo come LOAD DATA o REPLACE in caso di un record nuovo. Allo stesso modo vanno interpretati UPDATE e DELETE
  4. La quarta linea specifica la tabella da monitorare per attivare il trigger
  5. La quinta linea illustra l'individualità del trigger che infatti si applica ad ogni riga singolarmente e non a tutta la tabella nel suo insieme
  6. La sesta linea infine rappresenta il codice SQL da eseguire all'attivazione dell'evento
- Il codice da eseguire
Il codice SQL da eseguire all'attivazione del trigger devono essere istruzioni seguite ognuna da punto e virgola.

- Esempio di utilizzo
Nel seguente esempio creiamo un trigger chiamato `nome_trigger` che, ad ogni inserimento nella tabella `nome_db`.`nome_tabella`, esegue il codice SQL contenuto tra le istruzioni "BEGIN" ed "END".

DELIMITER $$

DROP TRIGGER `nome_db`.`nome_trigger`$$

CREATE
TRIGGER `nome_trigger` BEFORE INSERT ON `nome_tabella`
FOR EACH ROW BEGIN

DECLARE cod INTEGER;
SELECT MAX(nome_campo)
INTO cod
FROM nome_tabella
WHERE [condizioni];

IF cod IS NULL THEN SET cod=0;
END IF;

SET NEW.nome_campo=cod+1;

END;$$

DELIMITER;

mercoledì 22 aprile 2009

Oracle acquisisce SUN

Arriva a sorpresa l’annuncio dell’acquisizione di SUN da parte di Oracle. La notizia fa scalpore, anche il New York Times non esita a dedicargli un articolo, in cui alla fine parla anche di MySQL, il prodotto che, a circa un anno e mezzo dal suo acquisto, potrebbe risentirne di più dell'operazione. Bisognerà ora vedere quale sarà il suo futuro, con l’operazione Oracle ha adesso il più popolare database del Web e quello più popolare in ambito Enterprise. Ma quale sarà ora la politica di Oracle? Manterrà MySQL Open Source e terrà il Database Oracle a sorgenti chiusi? Aprirà anche il proprio database? Chiuderà anche i sorgenti di MySQL?
Sun dispone di molti prodotti, che se la politica di Oracle sarà quella di mantenerli Open Source potrebbero dargli ottimi risultati, tra cui un sistema operativo come Solaris, un’Application Server come Glassfish e tanti altri prodotti per ogni settore. Da non dimenticare infine il supporto della comunità di cui gode oggi Sun.
Per quanto riguarda gli uffici Sun porta in dote OpenOffice che negli ultimi anni è cresciuto esponenzialmente come numero di utenze.
Sul lato dello sviluppo, Sun è proprietaria di Java che nonostante sia anche esso aperto resta comunque la punta di diamante della società e ad esso accompagna l’ottimo IDE NetBeans.
Quindi quale sarà il futuro di Sun con Oracle? Continuerà sulla propria strada Open Source e quindi avrà sempre affianco la comunità, oppure richiuderà piano piano tutti i propri prodotti e vedremo nascerà decine di fork degli attuali prodotti?

venerdì 10 aprile 2009

Java Web Start - avviare applicazioni da web senza installazione

- Cos'è Java Web Start?

Il software Java Web Start permette di scaricare ed eseguire le applicazioni Java dal web. Vediamone le caratteristiche:
  • Permette una facile attivazione delle applicazioni mediante un clic
  • Garantisce che venga sempre eseguita l'ultima versione dell'applicazione
  • Elimina le complicate procedure d'installazione e di aggiornamento


- Come procurarsi il software Java Web Start

Java Web Start è incluso in JRE (Java Runtime Environment) come parte della versione 5.0. Java Web Start viene, pertanto, installato automaticamente durante l'installazione di JRE.


Il software Java Web Start si avvia automaticamente quando viene scaricata per la prima volta un'applicazione Java che utilizza la tecnologia Java Web Start. Il software Java Web Start memorizza localmente (cache) l'intera applicazione sul vostro computer. Perciò ogni ulteriore avvio avviene in modo pressoché immediato, dal momento che tutte le risorse necessarie sono disponibili localmente.

Ogni volta che si avvia l'applicazione, il software Java Web Start controlla il sito Web dell'applicazione per verificare se è disponibile una nuova versione e, in tal caso, la scarica e l'avvia automaticamente.

- Avviare un'applicazione utilizzando il software Java Web Start

  • Da un browser: fate clic su un collegamento da una pagina Web.
  • Dall'icona del desktop: se utilizzate un'applicazione di frequente, potete creare un collegamento sul desktop o nel menu Start. Java Web Start potrebbe chiedervi se desiderate creare un collegamento o una voce nel menu Start. Rispondendo in modo affermativo alla domanda visualizzata sullo schermo, in futuro potrete avviare l'applicazione senza utilizzare un browser.
  • Dal visualizzatore cache dell'applicazione Java: Java Web Start fornisce anche un visualizzatore cache dell'applicazione che potete avviare dal Pannello di controllo Java. Il visualizzatore cache vi consente di avviare direttamente le applicazioni scaricate.

    Istruzioni per l'avvio dal visualizzatore cache dell'applicazione
    1. Da Start > Impostazioni > Pannello di controllo, fate doppio clic sull'icona Java. Viene avviato il Pannello di controllo Java.
    2. Fate clic sulla scheda Generale.
    3. Fate clic sul pulsante Impostazioni nella sezione File temporanei Internet.
    4. Fate clic sul pulsante Visualizza applicazioni.
    5. Fate doppio clic sull'applicazione che desiderate avviare nell'elenco.


Pannello di controllo Java - Visualizza applicazioni nella cache
  • Dal prompt dei comandi: potete avviare un'applicazione anche dal prompt dei comandi digitando javaws jnlp_url dove jnlp_url rappresenta l'URL del file jnlp dell'applicazione.

    1. Da Start > Esegui, digitate "command". Viene visualizzata la finestra del prompt dei comandi.
    2. Digitate "javaws url_of_jnlp".


Per ulteriori informazioni tecniche:
Documentazione Java Web Start per sviluppatori

venerdì 3 aprile 2009

MySql Stored Procedure - ottimo tutorial

Ottimo tutorial sulle Stored Procedure di MySql su http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx

giovedì 2 aprile 2009

Toplink.jdbc - connessione a server remoto dietro proxy

Sviluppando un'applicazione in Java ho avuto necessità di farle effettuare connessioni ad un database remoto, utilizzando toplink.jdbc. L'applicazione non funzionava se non col database server in locale. Poi ho trovato il problema e la soluzione... :-)
Siccome ero dietro un proxy, il problema era dovuto proprio ad esso. Ho risolto aggiungendo un'eccezione per l'indirizzo del db server sui settaggi del proxy in Windows XP.
468x60

Cerca su Google

Cerca nel Blog con Google