/*
* Copyright (C) 2012 AXIA Studio (http://www.axiastudio.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.axiastudio.suite.demo;
import com.axiastudio.pypapi.Register;
import com.axiastudio.pypapi.db.Database;
import com.axiastudio.pypapi.db.IDatabase;
import com.axiastudio.suite.Suite;
import com.axiastudio.suite.SuiteUtil;
import com.axiastudio.suite.anagrafiche.entities.SessoSoggetto;
import com.axiastudio.suite.anagrafiche.entities.Soggetto;
import com.axiastudio.suite.anagrafiche.entities.TipoSoggetto;
import com.axiastudio.suite.base.entities.*;
import com.axiastudio.suite.deliberedetermine.entities.Determina;
import com.axiastudio.suite.deliberedetermine.entities.ServizioDetermina;
import com.axiastudio.suite.finanziaria.entities.Capitolo;
import com.axiastudio.suite.finanziaria.entities.Servizio;
import com.axiastudio.suite.pratiche.PraticaCallbacks;
import com.axiastudio.suite.pratiche.entities.Pratica;
import com.axiastudio.suite.pratiche.entities.TipoPratica;
import com.axiastudio.suite.procedimenti.entities.*;
import com.axiastudio.suite.protocollo.ProtocolloCallbacks;
import com.axiastudio.suite.protocollo.entities.*;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Tiziano Lattisi <tiziano at axiastudio.it>
*/
public class DemoData {
public static void main(String[] args) {
DemoData.initData();
}
public DemoData() {
}
public static void initSchema(){
// inizializza gli schemi
List<String> schema = new ArrayList();
schema.add("BASE");
schema.add("ANAGRAFICHE");
schema.add("PROTOCOLLO");
schema.add("PUBBLICAZIONI");
schema.add("PROCEDIMENTI");
schema.add("PRATICHE");
schema.add("SEDUTE");
schema.add("FINANZIARIA");
schema.add("DELIBEREDETERMINE");
schema.add("GENERALE");
schema.add("MODELLI");
for( String name: schema){
try {
Connection conn = DriverManager.getConnection("jdbc:h2:~/suite","","");
Statement st = conn.createStatement();
st.executeUpdate("DROP SCHEMA IF EXISTS " + name + ";");
st.executeUpdate("CREATE SCHEMA " + name + ";");
st.close();
conn.close();
} catch (SQLException ex) {
Logger.getLogger(Suite.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public static void initData(){
// inizializzo e apro la transazione
Database db = (Database) Register.queryUtility(IDatabase.class);
EntityManagerFactory emf = db.getEntityManagerFactory();
EntityManager em = emf.createEntityManager();
//em.getTransaction().begin();
/*
* AMMINISTRATORE
*/
Utente admin = new Utente();
admin.setLogin("admin");
admin.setNome("Amministratore");
admin.setPassword(SuiteUtil.digest("pypapi"));
admin.setAmministratore(Boolean.TRUE);
em.getTransaction().begin();
em.persist(admin);
em.getTransaction().commit();
/*
* TITOLI (soggetto-protocollo)
*/
Titolo proprietario = new Titolo();
proprietario.setDescrizione("PROPRIETARIO");
proprietario.setTipo(TipoTitolo.PERSONA_INTERESSATA);
Titolo progettista = new Titolo();
progettista.setDescrizione("PROGETTISTA");
progettista.setTipo(TipoTitolo.TECNICO);
em.getTransaction().begin();
em.persist(proprietario);
em.persist(progettista);
em.getTransaction().commit();
/*
* CARICHE
*/
Carica sindaco = new Carica();
sindaco.setDescrizione("Sindaco");
sindaco.setCodiceCarica(CodiceCarica.SINDACO);
Carica viceSindaco = new Carica();
viceSindaco.setDescrizione("Vice Sindaco");
viceSindaco.setCodiceCarica(CodiceCarica.VICE_SINDACO);
Carica segretario = new Carica();
segretario.setDescrizione("Segretario");
segretario.setCodiceCarica(CodiceCarica.SEGRETARIO);
Carica responsabile = new Carica();
responsabile.setDescrizione("Responsabile del servizio di bilancio");
responsabile.setCodiceCarica(CodiceCarica.RESPONSABILE_DI_SERVIZIO);
em.getTransaction().begin();
em.persist(sindaco);
em.persist(viceSindaco);
em.persist(segretario);
em.persist(responsabile);
em.getTransaction().commit();
/*
* GIUNTA CORRENTE
*/
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
Giunta giunta = new Giunta();
giunta.setNumero(1);
giunta.setDatanascita(today);
giunta.setNote("Giunta d'esempio");
em.getTransaction().begin();
em.persist(giunta);
em.getTransaction().commit();
/*
* SERVIZI
*/
Servizio servizioAffariGenerali = new Servizio();
servizioAffariGenerali.setDescrizione("Servizio affari generali");
Servizio servizioInformativoComunale = new Servizio();
servizioInformativoComunale.setDescrizione("Servizio informativo comunale");
em.getTransaction().begin();
em.persist(servizioAffariGenerali);
em.persist(servizioInformativoComunale);
em.getTransaction().commit();
/*
* UFFICI
*/
Ufficio uffInf = new Ufficio();
uffInf.setDescrizione("Ufficio informativo");
uffInf.setSportello(Boolean.TRUE);
uffInf.setMittenteodestinatario(Boolean.TRUE);
uffInf.setAttribuzione(Boolean.TRUE);
Ufficio uffPro = new Ufficio();
uffPro.setSportello(Boolean.TRUE);
uffPro.setMittenteodestinatario(Boolean.FALSE);
uffPro.setAttribuzione(Boolean.TRUE);
uffPro.setDescrizione("Ufficio protocollo");
Ufficio uffEdi = new Ufficio();
uffEdi.setDescrizione("Ufficio edilizia");
uffEdi.setSportello(Boolean.FALSE);
uffEdi.setMittenteodestinatario(Boolean.TRUE);
uffEdi.setAttribuzione(Boolean.TRUE);
Ufficio uffCom = new Ufficio();
uffCom.setSportello(Boolean.FALSE);
uffCom.setMittenteodestinatario(Boolean.TRUE);
uffCom.setAttribuzione(Boolean.TRUE);
uffCom.setDescrizione("Ufficio commercio");
em.getTransaction().begin();
em.persist(uffInf);
em.persist(uffPro);
em.persist(uffEdi);
em.persist(uffCom);
em.getTransaction().commit();
/*
* UTENTI (mario è l'utente autenticato)
*
* Luigi è segretario
* Mario è responsabile di servizio informativo
*
* Mario ha anche la delega come segretario da Luigi
*
*/
Utente luigi = new Utente();
luigi.setLogin("luigi");
luigi.setNome("Luigi Bros");
luigi.setSigla("L.B.");
luigi.setPassword(SuiteUtil.digest("bros"));
List<Delega> delegheLuigi = new ArrayList();
Delega titolareSegretario = new Delega();
titolareSegretario.setUtente(luigi);
titolareSegretario.setCarica(segretario);
titolareSegretario.setTitolare(Boolean.TRUE);
delegheLuigi.add(titolareSegretario);
luigi.setDelegaCollection(delegheLuigi);
em.getTransaction().begin();
em.persist(luigi);
em.getTransaction().commit();
Utente mario = new Utente();
mario.setLogin("mario");
mario.setNome("Mario Super");
mario.setSigla("M.S.");
mario.setPassword(SuiteUtil.digest("super"));
mario.setOperatoreprotocollo(Boolean.TRUE);
mario.setOperatoreanagrafiche(Boolean.TRUE);
mario.setOperatorepratiche(Boolean.TRUE);
Register.registerUtility(mario, IUtente.class);
List<UfficioUtente> ufficiUtente = new ArrayList();
UfficioUtente uu = new UfficioUtente();
uu.setUfficio(uffInf);
uu.setRicerca(Boolean.TRUE);
uu.setVisualizza(Boolean.TRUE);
ufficiUtente.add(uu);
UfficioUtente uu2 = new UfficioUtente();
uu2.setUfficio(uffPro);
uu2.setRicerca(Boolean.TRUE);
ufficiUtente.add(uu2);
mario.setUfficioUtenteCollection(ufficiUtente);
List<Delega> delegheMario = new ArrayList();
Delega titolareResponsabile = new Delega();
titolareResponsabile.setUtente(mario);
titolareResponsabile.setCarica(responsabile);
titolareResponsabile.setServizio(servizioInformativoComunale);
titolareResponsabile.setTitolare(Boolean.TRUE);
delegheMario.add(titolareResponsabile);
Delega delegaSegretario = new Delega();
delegaSegretario.setUtente(mario);
delegaSegretario.setDelegante(luigi);
delegaSegretario.setCarica(segretario);
delegaSegretario.setDelegato(Boolean.TRUE);
delegheMario.add(delegaSegretario);
mario.setDelegaCollection(delegheMario);
em.getTransaction().begin();
em.persist(mario);
em.getTransaction().commit();
/*
* SOGGETTI
*/
Soggetto tiziano = new Soggetto();
tiziano.setNome("Tiziano");
tiziano.setCognome("Lattisi");
tiziano.setSessosoggetto(SessoSoggetto.M);
tiziano.setTipo(TipoSoggetto.PERSONA);
em.getTransaction().begin();
em.persist(tiziano);
em.getTransaction().commit();
/*
* NORME
*/
Norma norma1 = new Norma();
norma1.setTipo(TipoNorma.COMUNALE);
norma1.setDescrizione("Esempio di norma comunale");
Norma norma2 = new Norma();
norma2.setTipo(TipoNorma.REGIONALE);
norma2.setDescrizione("Esempio di norma regionale");
em.getTransaction().begin();
em.persist(norma1);
em.persist(norma2);
em.getTransaction().commit();
/*
* TIPI DI PRATICA
*/
TipoPratica det = new TipoPratica();
det.setCodice("DET");
det.setDescrizione("Determina");
TipoPratica detrs = new TipoPratica();
detrs.setCodice("DETRS");
detrs.setDescrizione("Determina del responsabile");
detrs.setTipopadre(det);
detrs.setFormulacodifica("${s2}${anno}${n2,number,00000}");
detrs.setLunghezzaprogressivo(5);
em.getTransaction().begin();
em.persist(det);
em.persist(detrs);
em.getTransaction().commit();
/*
* PROCEDIMENTI
*/
Procedimento procedimento = new Procedimento();
procedimento.setDescrizione("Determina del responsabile del servizio");
procedimento.setMaxGiorniIstruttoria(30);
procedimento.setIniziativa(Iniziativa.DI_UFFICIO);
procedimento.setNormativa("Descrizione generica della normativa");
procedimento.setAttivo(Boolean.TRUE);
List<NormaProcedimento> norme = new ArrayList();
NormaProcedimento norma1Procedimento = new NormaProcedimento();
norma1Procedimento.setNorma(norma1);
norme.add(norma1Procedimento);
NormaProcedimento norma2Procedimento = new NormaProcedimento();
norma2Procedimento.setNorma(norma2);
norme.add(norma2Procedimento);
procedimento.setNormaProcedimentoCollection(norme);
List<TipoPraticaProcedimento> tipiPratica = new ArrayList();
TipoPraticaProcedimento detrsProcedimento = new TipoPraticaProcedimento();
detrsProcedimento.setTipopratica(detrs);
detrsProcedimento.setProcedimento(procedimento);
tipiPratica.add(detrsProcedimento);
procedimento.setTipopraticaProcedimentoCollection(tipiPratica);
em.getTransaction().begin();
em.persist(procedimento);
em.getTransaction().commit();
// pratiche
em.refresh(detrs);
//em.refresh(procedimento);
Pratica pratica = new Pratica();
pratica.setDescrizione("Pratica demo");
pratica.setTipo(detrs);
PraticaCallbacks.validaPratica(pratica);
em.getTransaction().begin();
em.persist(pratica);
em.getTransaction().commit();
// protocolli
Protocollo pro1 = new Protocollo();
pro1.setOggetto("Oggetto del protocollo");
pro1.setNote("Note del protocollo");
pro1.setTipo(TipoProtocollo.ENTRATA);
pro1.setSportello(uffInf);
pro1.setRichiederisposta(Boolean.TRUE);
UfficioProtocollo up = new UfficioProtocollo();
up.setUfficio(uffInf);
up.setProtocollo(pro1);
List<UfficioProtocollo> ufficiprotocollo = new ArrayList<UfficioProtocollo>();
ufficiprotocollo.add(up);
pro1.setUfficioProtocolloCollection(ufficiprotocollo);
List<Attribuzione> attribuzioni = new ArrayList<Attribuzione>();
Attribuzione a1 = new Attribuzione();
a1.setUfficio(uffInf);
a1.setProtocollo(pro1);
Attribuzione a2 = new Attribuzione();
a2.setUfficio(uffPro);
a2.setProtocollo(pro1);
attribuzioni.add(a1);
attribuzioni.add(a2);
pro1.setAttribuzioneCollection(attribuzioni);
SoggettoProtocollo sp = new SoggettoProtocollo();
sp.setSoggetto(tiziano);
sp.setTitolo(proprietario);
sp.setProtocollo(pro1);
List<SoggettoProtocollo> soggettiprotocollo = new ArrayList<SoggettoProtocollo>();
soggettiprotocollo.add(sp);
pro1.setSoggettoProtocolloCollection(soggettiprotocollo);
PraticaProtocollo pp = new PraticaProtocollo();
pp.setPratica(pratica);
pp.setProtocollo(pro1);
List<PraticaProtocollo> praticheprotocollo = new ArrayList<PraticaProtocollo>();
praticheprotocollo.add(pp);
pro1.setPraticaProtocolloCollection(praticheprotocollo);
Protocollo pro2 = new Protocollo();
pro2.setOggetto("Oggetto del protocollo2");
pro2.setNote("Note del protocollo2");
pro2.setSportello(uffPro);
pro2.setTipo(TipoProtocollo.USCITA);
SoggettoProtocollo sp2 = new SoggettoProtocollo();
sp2.setSoggetto(tiziano);
sp2.setTitolo(progettista);
sp2.setProtocollo(pro2);
List<SoggettoProtocollo> soggettiprotocollo2 = new ArrayList<SoggettoProtocollo>();
soggettiprotocollo2.add(sp2);
pro2.setSoggettoProtocolloCollection(soggettiprotocollo2);
ProtocolloCallbacks.beforeCommit(pro1);
em.getTransaction().begin();
em.persist(pro1);
em.getTransaction().commit();
ProtocolloCallbacks.beforeCommit(pro2);
em.getTransaction().begin();
em.persist(pro2);
em.getTransaction().commit();
// Capitoli
Capitolo c1 = new Capitolo();
c1.setDescrizione("Capitolo 1");
Capitolo c2 = new Capitolo();
c2.setDescrizione("Capitolo 2");
// Determina
Determina determina = new Determina();
determina.setOggetto("Determina di test");
List<ServizioDetermina> servizioDeterminaCollection = new ArrayList();
ServizioDetermina servizioDetermina = new ServizioDetermina();
servizioDetermina.setServizio(servizioAffariGenerali);
servizioDeterminaCollection.add(servizioDetermina);
determina.setServizioDeterminaCollection(servizioDeterminaCollection);
//determina.setPratica(pratica);
determina.setCodiceinterno("DETRS201300001");
em.getTransaction().begin();
em.persist(servizioAffariGenerali);
em.persist(servizioInformativoComunale);
em.persist(c1);
em.persist(c2);
em.persist(determina);
em.getTransaction().commit();
}
}