Please enable JavaScript.
Coggle requires JavaScript to display documents.
tecnologia - Coggle Diagram
tecnologia
📁 5. VARIANTI COMUNI (da aggiungere in DBManager e ServerThread)
Ricerca per nome (parziale)
`sql SELECT * FROM comuni WHERE name LIKE ?` → preparare '%param%'
Solo capoluoghi di provincia
`sql SELECT * FROM comuni WHERE capoluogo_provincia = 1`
Inserimento nuovo comune
`sql INSERT INTO comuni (name, lat, ...) VALUES (?, ?, ...)`
Eliminazione per ID
`sql DELETE FROM comuni WHERE ID = ?`
📁 2. PACKAGE server
🧩 ServerMain.java – avvio multithread
```java
int PORT = 6789;
try (ServerSocket ss = new ServerSocket(PORT)) {
while (true) {
Socket clientSocket = ss.accept();
System.out.println("Client connesso");
new ServerThread(clientSocket).start();
} catch (Exception e) { e.printStackTrace(); }
```
🧩 ServerThread.java – gestione singolo client
public class ServerThread extends Thread {
private Socket socket;
private DBManager db = new DBManager();
public ServerThread(Socket s) { }
this.socket = s;
this.db= new DBManager();
public void run() {
try (ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream in = new ObjectInputStream(socket.getInputStream()))
String req = (String) in.readObject();
if ("MOSTRA_TUTTI".equalsIgnoreCase(req)){out.writeObject(db.getAllComuni());}
out.writeObject(db.getAllComuni());
out flush
} catch (Exception e) { e.printStackTrace(); }
socket.close(); finally
}
🧩 DBManager.java – operazioni sul database
Costanti DB
```nome db
private static final String URL = "jdbc:mysql://localhost:3306/Enti";
private static final String USER = "root";
private static final String PASSWORD = "mysql";
```
🔹 getAllComuni()
public List<Comune> getAllComuni() {
List<Comune> list = new ArrayList<>();
String sql = "SELECT * FROM comuni ORDER BY name ASC";
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery()) {
while (rs.next())
Comune comune = new Comune(
rs.getLong("ID"), rs.getString("name"),
rs.getDouble("lat"), rs.getDouble("lng"),
rs.getString("codice_provincia_istat"),
rs.getString("codice_comune_istat"),
rs.getString("codice_alfanumerico_istat"),
rs.getBoolean("capoluogo_provincia"),
rs.getBoolean("capoluogo_regione")));
list.add
} catch (SQLException e) { e.printStackTrace(); }
return list;
📁 1. PACKAGE client – ClientMain.java
🔹 main() – menu e loop
```java
Scanner scanner = new Scanner(System.in);
int scelta;
do {
System.out.println("1. Visualizza tutti i comuni\n0. Esci");
scelta = Integer.parseint();
usa lo switch;
else if (scelta != 0) System.out.println("Scelta non valida");
} while (scelta != 0);
scanner.close();
```
🔹 mostraTuttiIComuni() – connessione al server
try (Socket s = new Socket("localhost", 6789);
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
ObjectInputStream in = new ObjectInputStream(s.getInputStream())) {
out.writeObject("MOSTRA_TUTTI"); out.flush
List<Comune> comuni = (List<Comune>) in.readObject(); controlla se pieno
for (Comune c : comuni) System.out.println(c);
System.out.println("Totale: " + comuni.size());
} catch (Exception e) { e.printStackTrace(); }
📁 3. PACKAGE model – classe Comune ()
Attributi e metodi: id, name, lat, lng, codici ISTAT, capoluoghi (boolean), costruttore, getter/setter, toString()