Bases de Dades
2.3.2 CF: Utilització des de Java
Exemple
Practicarem tot el que ve a continuació sobre un programa gràfic.
Aquest és el seu esquelet:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import com.google.api.core.ApiFuture;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.firestore.DocumentChange;
import com.google.cloud.firestore.DocumentReference;
import com.google.cloud.firestore.DocumentSnapshot;
import com.google.cloud.firestore.EventListener;
import com.google.cloud.firestore.Firestore;
import com.google.cloud.firestore.FirestoreException;
import com.google.cloud.firestore.QuerySnapshot;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.cloud.FirestoreClient;
import com.google.firebase.database.annotations.Nullable;
public class Pantalla_CrearXatCloud extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
JLabel etUsuari = new JLabel("Nom Usuari:");
JTextField usuari = new JTextField(25);
JLabel etUltimMissatge = new JLabel("Últim missatge: ");
JLabel ultimMissatge = new JLabel();
JLabel etiqueta = new JLabel("Missatges:");
JTextArea area = new JTextArea();
JLabel etIntroduccioMissatge = new JLabel("Introdueix missatge:");
JButton enviar = new JButton("Enviar");
JTextField missatge = new JTextField(15);
// en iniciar posem un contenidor per als elements anteriors
public void iniciar() throws IOException, InterruptedException, ExecutionException {
this.setBounds(100, 100, 450, 300);
this.setLayout(new BorderLayout());
// contenidor per als elements
// Hi haurà títol. Panell de dalt: últim missatge. Panell de baix: per a
// introduir missatge. Panell central: tot el xat
JPanel panell11 = new JPanel(new FlowLayout());
panell11.add(etUsuari);
panell11.add(usuari);
JPanel panell12 = new JPanel(new FlowLayout());
panell12.add(etUltimMissatge);
panell12.add(ultimMissatge);
JPanel panell1 = new JPanel(new GridLayout(3, 1));
panell1.add(panell11);
panell1.add(panell12);
getContentPane().add(panell1, BorderLayout.NORTH);
JPanel panell2 = new JPanel(new BorderLayout());
panell2.add(etiqueta, BorderLayout.NORTH);
area.setForeground(Color.blue);
JScrollPane scroll = new JScrollPane(area);
panell2.add(scroll, BorderLayout.CENTER);
getContentPane().add(panell2, BorderLayout.CENTER);
JPanel panell3 = new JPanel(new FlowLayout());
panell3.add(etIntroduccioMissatge);
panell3.add(missatge);
panell3.add(enviar);
getContentPane().add(panell3, BorderLayout.SOUTH);
setVisible(true);
enviar.addActionListener(this);
FileInputStream serviceAccount = new FileInputStream(
"acces-a-dades-6e5a6-firebase-adminsdk-ei7uc-8f5d926921.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setDatabaseUrl("https://acces-a-dades-6e5a6.firebaseio.com").build();
FirebaseApp.initializeApp(options);
// Exemple de lectura única: senzillament sobre un ApiFuture i sobre ell get()
// Per a posar el títol. Sobre /Xats/XatProva/nomXat
// Exemple de listener de lectura contínua addSnapshotListener()
// Per a posar l'últim missatge registrat. Sobre /Xats/XatProva/ultimUsuari i /Xats/XatProva/ultimMissatge
// Exemple de listener de lectura contínua addSnapshotListener() sobre una col·lecció
// Per a posar tota la llista de missatges. Sobre /Xats/XatProva/missatges
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == enviar) {
// Exemple de guardar dades en Cloud Firestore
// Per a guardar dades. Sobre /Xats/XatProva i després sobre /Xats/Xat1
}
}
}
I aquest és el programa principal que crida l'anterior:
import java.io.IOException;
public class CrearXatCloud {
public static void main(String[] args) throws IOException {
final Pantalla_CrearXatCloud finestra = new Pantalla_CrearXatCloud();
finestra.iniciar();
}
}