Inventario sorgenti
Elenco completo di ogni file Java, JSP, XML del software Semiorto Report
Dimensioni
| Categoria | File | Righe (tot) |
| Controller Java | 9 | 1.599 |
| Service Java (impl) | 7 | 1.674 |
| DAO Java (impl) | 6 | 746 |
| Entità JPA (VO) | 14 | ~1.200 (stima) |
| View Objects (BO) | ~20 | ~600 |
| JSP pages | 23 | 3.328 |
| XML config | 4 | ~300 |
| Totale analizzato | | ~9.400 righe |
| JAR libs | 49 | — |
Copertura del deep-dive: 7.350 / 9.400 ≈ 85%. Non letti in dettaglio: analisi/update.jsp (739 righe, form ma struttura derivabile dal controller+BO), StampaSchedaControllo.java (classe di utility per PDF, da analizzare in fase 2 quando serve replicare).
Controllers (it.dss.controller)
| File | Righe | Ruolo |
AnalisiController.java | 564 | 🎯 Il cuore: 17 endpoint sul ciclo di vita analisi + avvisi JSON + stampe |
LottoController.java | 172 | Lista, nuovo, update, settaEsaurito, 2 JSON AJAX |
ProduttoreController.java | 108 | CRUD + endpoint AJAX crea inline |
SpecieController.java | 82 | CRUD |
VarietaController.java | 142 | CRUD + JSON varietà per specie |
UtenteController.java | 85 | Self-service (mieiDati, cambio pwd) |
AmministrazioneController.java | 104 | Admin (utenti, cancellate) |
DefaultController.java | 105 | Root, login, routing iniziale, menu dinamico |
DocxManipulator.java | 237 | Utility per template DOCX (sostituisce placeholder) |
stampa/schedaControllo/StampaSchedaControllo | ? | Genera PDF scheda di controllo (classe non letta in dettaglio) |
Services (it.dss.service.impl)
AnalisiServiceImpl.java | 626 | Cuore logica: generaConta, inCorso, daAnalizzare, cerca, update, cancella, nuova |
LottoServiceImpl.java | 222 | CRUD + generaLotto (dead code?) + lottoDisponibile |
SpecieServiceImpl.java | 273 | CRUD + gestione matrice calendario specie × mese × tipologia |
UtenteServiceImpl.java | 278 | Crea, azzera, cambia password + email via MailMail |
VarietaServiceImpl.java | 103 | CRUD + get by specie |
ProduttoreServiceImpl.java | 87 | CRUD + validazione duplicati |
MenuServiceImpl.java | 85 | Costruisce menu alberato da tabella per utente |
DAOs (it.dss.dao.impl)
AnalisiDaoImpl.java | 258 | Criteria queries + SQL grezzo per "Da Analizzare" |
LottoDaoImpl.java | 179 | find con filtri multipli, lottiNonAnalizzati |
SpecieDaoImpl.java | 102 | read, find, create, update |
VarietaDaoImpl.java | 91 | idem |
ProduttoreDaoImpl.java | 82 | idem |
MenuDaoImpl.java | 34 | Read menu tree |
model/dao/impl/UtenteDaoImpl.java | ? | Eccezione: collocato in model/dao, non in dao/ |
Entità JPA (it.dss.model.vo)
SemiortoAnalisi
SemiortoConte
SemiortoLotto
SemiortoSpecie
SemiortoVarieta
SemiortoProduttore
SemiortoTecnico
SemiortoTipologiaSeme
SemiortoAnalisiRipetizione (= mesi)
SemiortoMapSpecieAnalisiRipetizioneTipologiaSeme (tabella 3-way)
SemiortoErrori (log errori, non usato)
Utente
Permesso
Permessi (join table N:M utente-permesso)
Menu (alberato, self-referencing)
PermessoMenu (join table N:M permesso-menu)
Directory vo_generated: contiene VO generati automaticamente (probabilmente da tool come Hibernate Tools), non usati direttamente nel codice.
View Objects (BO) — it.dss.view
AnalisiBO (+ inner AnalisiEsternaBO)
ContaBO
LottoBO
SpecieBO
VarietaBO
ProduttoreBO
TecnicoBO
TipologiaSemeBO
AnalisiRipetizioneBO
AnalisiSemeBO (usata nella matrice calendario specie)
UtenteBO, PermessoBO
MenuBO
JsonBO (wrapper per risposte AJAX con obj+error+errors[])
AziendaBO (info azienda, usato in email)
MailMail (service mail — classe custom)
validator/MyValidator.java — regole validazione di default
JSP pages (/WEB-INF/pages)
| File | Righe | Contenuto |
accesso/login.jsp | 81 | Form login |
accesso/recupera.jsp | 105 | Form recupero password |
analisi/cerca.jsp | 355 | Form ricerca con filtri multipli + tabella risultati |
analisi/lista.jsp | 247 | Lista In Corso / Da Analizzare / Cancellate (JSP riciclata) |
analisi/nuova.jsp | 254 | Selezione lotto per nuova analisi |
analisi/update.jsp | 739 | 🎯 Form principale: dati prova + matrice conte + chiusura |
lotto/lista.jsp | 274 | Tabella lotti + ricerca + bulk settaEsaurito |
lotto/update.jsp | 209 | Form crea/modifica lotto + modal inline fornitore |
produttore/lista.jsp | 56 | Tabella semplice |
produttore/update.jsp | 69 | Form nome + codice |
specie/lista.jsp | 70 | Tabella |
specie/update.jsp | 145 | Form + matrice 12×9 mesi×tipologie (checkbox) |
varieta/lista.jsp | 76 | Tabella |
varieta/update.jsp | 81 | Form |
utente/list.jsp | 48 | Tabella admin |
utente/update.jsp | 171 | Form nome/email/permessi + reset password |
utente/mieiDati.jsp | 152 | Self-service profilo |
utente/cambioPassword.jsp | 44 | Form cambio pwd forzato |
template/head.jsp | 33 | <head> comune (CSS, JS) |
template/menu.jsp | 119 | Navbar Bootstrap dinamica da session |
errore.jsp, vuota.jsp, index.jsp | — | Pagine utility |
Config XML
WEB-INF/web.xml | Servlet mapping, Spring filter, welcome files |
WEB-INF/spring-security.xml | Security intercept-url + JDBC auth provider |
WEB-INF/spring-beans.xml | DataSource + Hibernate SessionFactory |
WEB-INF/mvc-dispatcher-servlet.xml | Controller beans + liste statiche iniettate |
WEB-INF/classes/hibernate.cfg.xml | Mapping VO → tabelle |
Librerie JAR (49 totali)
Elenco non esaustivo, le principali:
- Spring 4.1.x: spring-core, spring-context, spring-web, spring-webmvc, spring-security-core, spring-security-web, spring-security-config, spring-jdbc, spring-orm, spring-tx
- Hibernate 4.3.x: hibernate-core, hibernate-entitymanager, hibernate-validator
- Apache POI (Excel): poi, poi-ooxml, poi-ooxml-schemas, xmlbeans
- docx4j (Word)
- MySQL JDBC: mysql-connector-java-5.1.x
- Jackson: jackson-core, jackson-databind (per JSON)
- Logging: slf4j, log4j
- Apache Commons: commons-lang, commons-collections, commons-io
- JSTL: jstl, standard
- Javax: javax.mail (per invio email)
Dove sono i sorgenti
- Repository
C:\Users\user\Desktop\Webgo\Sanitua\template_html_tops\germinabilita\tomcat\webapps\ROOT\
- Java sources (.java)
WEB-INF/classes/it/dss/** (lasciati a fianco dei .class dal decompilatore)
- JSP
WEB-INF/pages/**
- Config
WEB-INF/*.xml
- Template DOCX
WEB-INF/TEMPLATES_DIRECTORY/ (vuoto nel nostro — da chiedere a Diego)
- Dump DB legacy
germinabilita/db_init/backup-semiorto-2020-10-30.sql (18 MB)
Note di qualità codice
- ✅ Separazione pulita Controller / Service / DAO (Layered Architecture classica Spring)
- ✅ Annotazioni JPA corrette, LAZY fetch ragionato
- ⚠ Molto codice duplicato tra
createBO methods (7 service ciascuno con la propria logica VO↔BO)
- ⚠ Query SQL grezze in
daAnalizzare() — hardcoded, difficile estendere
- ⚠ Denormalizzazione nel DB (campi come
tipologiaSeme ENUM + id_tipologia_seme FK — stessa info duplicata)
- ⚠ SHA-1 password hashing deprecato
- ⚠
intercept-url non usa hasRole — security via menu only
- ⚠
generaLotto dead code / funzione incompleta
- ⚠ Hardcoded
"0.0" per ALTRI_SEMI nel certificato (bug)
- ✅ I18n parziale (campi nome
[it/en/lat] per specie) — buona idea, ma non esteso a tutto