import java.awt.*; // Le classi per il disegno
import java.applet.Applet; // La superclasse
import java.sql.*;
public class crea extends Applet {
Button crea; // Crea la tabella
Button elimina; // Elimina la tabella
Label messaggio; // Display dei risultati
// Stringhe di configurazione, lette dalla pagina HTML
String server; // URL del server
String database; // nome del database
String user; // utrnte con cui connettersi
String password; // password dell'utente (se presente)
String driver; // driver da caricare
public void init () { // Metodo chiamato all'avvio dell'applet
// Legge i paramentri dal tag <Applet> (per rendere flessibile l'applet)
server = getParameter("server");
database = getParameter("database");
user = getParameter("user");
password = getParameter("password");
driver = getParameter("driver");
// Gestisce il default dei parametri
if (server == null) {
server="localhst";
}
if (database == null) {
database="test";
}
if (user == null) {
user="www-data";
}
if (password == null) {
password="";
}
if (driver == null) {
driver="org.postgresql.Driver";
}
setBackground (new Color(0,0,128)); // Sfondo applet
setForeground (new Color(255,255,136)); // Scritte applet
setLayout (new BorderLayout ()); // Layout con le cinque posizioni
messaggio = new Label ("Ok"); // Messaggio
add ("South",messaggio); // Aggiungo il display a sud dell'applet
Panel np = new Panel (); // Un pannello per centrare il bottone
np.setLayout (new FlowLayout ()); // Che mette i compoinenti uno in fianco all'altro
crea = new Button ("Crea Tabella");
np.add (crea); // Aggiungo il bottone al pannello - avra' la sua dimensione naturale
elimina = new Button ("Elimina Tabella");
np.add (elimina); // Aggiungo il bottone al pannello - avra' la sua dimensione naturale
add ("North",np); // Metto il pannello con il bottone a sud dell'applet
}
// Piccolo metodo di utilita' per gestire gli errori:
// - stampa il messaggio m
// - stampa il codice di errore dell'Exception
void printException (String m, Exception e) {
messaggio.setText (m + e.toString ());
}
// Carica la driver da utilizzare (parametro 'driver') ed
// apre una connesione al database 'db', con l'utente 'user'
// e la password 'pwd'
// Ritorna la connessione creata
Connection Conn (String db, String user, String pwd, String driver) {
Connection c = null;
String dbUrl;
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
printException ("Non trovo la driver del database", e);
return null;
}
dbUrl = "jdbc:postgresql:" + db;
try {
c = DriverManager.getConnection(dbUrl, user, pwd);
} catch (SQLException e) {
printException ("Non riesco a connettermi con il database " + db,e);
return null;
}
messaggio.setText ("Connesso con il database " + db);
return c;
}
// Crea la tabella 'agenda' nel database, tramite la connessione 'conn'
void createTable (Connection conn) {
try {
Statement dbst = conn.createStatement(); // Crea uno 'statement' sulla connessione
// Usa 'executeUpdate' perche' la query non ritorna dati
dbst.executeUpdate("create table agenda (nome text, cellulare integer);");
dbst.close (); // Occorre sempre chiudere quando abbiamo finito
conn.close (); // chiude la connessione
} catch (SQLException e) {
printException ("Non riesco a creare la tabella 'agenda'",e);
return;
}
messaggio.setText ("Creata la tabella 'agenda'");
}
// Alla fine del lavoro, elimina la tabella
void dropTable (Connection conn) {
try {
Statement dbst = conn.createStatement();
dbst.executeUpdate("drop table agenda;");
dbst.close (); // Occorre sempre chiudere quando abbiamo finito
conn.close (); // chiude la connessione
} catch (SQLException e) {
printException ("Non riesco ad eliminare la tabella 'agenda'",e);
return;
}
messaggio.setText ("Eliminata la tabella 'agenda'");
}
// Crea la tabella
void creaTabella () {
Connection conn;
// Crea la connessione al nostro database
conn = Conn ("//" + server + "/" + database, user, password, driver);
if (conn != null) { // Se la connessione e' stata creata...
createTable (conn); // crea la tabella
}
}
// Elimina la tabella
void eliminaTabella () {
Connection conn;
// Crea la connessione al nostro database
conn = Conn ("//" + server + "/" + database, user, password, driver);
if (conn != null) { // Se la connessione e' stata creata...
dropTable (conn); // la elimina
}
}
// Gestione del bottone
public boolean action(Event event, Object arg) {
if (event.target == crea) {
creaTabella (); // Crea la tabella
}
if (event.target == elimina) {
eliminaTabella (); // Elimina la tabella
}
return true;
}
}