/*
* Copyright (C) 2013 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 Afffero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.axiastudio.suite;
import com.axiastudio.pypapi.Application;
import com.axiastudio.pypapi.IStreamProvider;
import com.axiastudio.pypapi.Register;
import com.axiastudio.pypapi.Resolver;
import com.axiastudio.pypapi.db.Database;
import com.axiastudio.pypapi.ui.Dialog;
import com.axiastudio.pypapi.ui.IQuickInsertDialog;
import com.axiastudio.pypapi.ui.Window;
import com.axiastudio.suite.anagrafiche.AnagraficheAdapters;
import com.axiastudio.suite.anagrafiche.entities.*;
import com.axiastudio.suite.anagrafiche.forms.FormIndirizzo;
import com.axiastudio.suite.anagrafiche.forms.FormQuickInsertSoggetto;
import com.axiastudio.suite.anagrafiche.forms.FormRelazioneSoggetto;
import com.axiastudio.suite.anagrafiche.forms.FormSoggetto;
import com.axiastudio.suite.base.entities.Giunta;
import com.axiastudio.suite.base.entities.Ufficio;
import com.axiastudio.suite.base.entities.Utente;
import com.axiastudio.suite.deliberedetermine.DeterminaCallbacks;
import com.axiastudio.suite.deliberedetermine.entities.Determina;
import com.axiastudio.suite.deliberedetermine.entities.MovimentoDetermina;
import com.axiastudio.suite.deliberedetermine.entities.SpesaImpegnoEsistente;
import com.axiastudio.suite.deliberedetermine.forms.FormDetermina;
import com.axiastudio.suite.finanziaria.entities.Capitolo;
import com.axiastudio.suite.finanziaria.entities.Servizio;
import com.axiastudio.suite.generale.entities.Costante;
import com.axiastudio.suite.generale.entities.Etichetta;
import com.axiastudio.suite.modelli.entities.Modello;
import com.axiastudio.suite.modelli.entities.Segnalibro;
import com.axiastudio.suite.modelli.forms.FormModello;
import com.axiastudio.suite.plugins.cmis.CmisPlugin;
import com.axiastudio.suite.plugins.cmis.CmisStreamProvider;
import com.axiastudio.suite.plugins.ooops.FileStreamProvider;
import com.axiastudio.suite.plugins.ooops.OoopsPlugin;
import com.axiastudio.suite.plugins.ooops.RuleSet;
import com.axiastudio.suite.plugins.ooops.Template;
import com.axiastudio.suite.pratiche.PraticaAdapters;
import com.axiastudio.suite.pratiche.PraticaCallbacks;
import com.axiastudio.suite.pratiche.PraticaPrivate;
import com.axiastudio.suite.pratiche.entities.*;
import com.axiastudio.suite.pratiche.forms.FormDipendenzaPratica;
import com.axiastudio.suite.pratiche.forms.FormPratica;
import com.axiastudio.suite.procedimenti.GestoreDeleghe;
import com.axiastudio.suite.procedimenti.IGestoreDeleghe;
import com.axiastudio.suite.procedimenti.entities.*;
import com.axiastudio.suite.procedimenti.forms.FormDelega;
import com.axiastudio.suite.procedimenti.forms.FormFaseProcedimento;
import com.axiastudio.suite.protocollo.ProtocolloAdapters;
import com.axiastudio.suite.protocollo.ProtocolloCallbacks;
import com.axiastudio.suite.protocollo.ProtocolloPrivate;
import com.axiastudio.suite.protocollo.entities.*;
import com.axiastudio.suite.protocollo.forms.*;
import com.axiastudio.suite.pubblicazioni.entities.Pubblicazione;
import com.axiastudio.suite.pubblicazioni.entities.TipoAttoPubblicazione;
import com.axiastudio.suite.pubblicazioni.forms.FormPubblicazione;
import com.axiastudio.suite.richieste.RichiestaCallbacks;
import com.axiastudio.suite.richieste.entities.DestinatarioUfficio;
import com.axiastudio.suite.richieste.entities.Richiesta;
import com.axiastudio.suite.richieste.forms.FormRichiesta;
import com.axiastudio.suite.sedute.entities.CaricaCommissione;
import com.axiastudio.suite.sedute.entities.Commissione;
import com.axiastudio.suite.sedute.entities.Seduta;
import com.axiastudio.suite.sedute.entities.TipoSeduta;
import com.axiastudio.suite.sedute.forms.FormTipoSeduta;
import java.util.HashMap;
import java.util.List;
import java.util.Properties;
/**
*
* @author AXIA Studio (http://www.axiastudio.com)
*/
public class Configure {
public static void configure(Database db, Properties properties){
adapters();
callbacks();
privates();
forms(db);
plugins(properties);
templates(properties);
// gestore deleghe
GestoreDeleghe gestoreDeleghe = new GestoreDeleghe();
Register.registerUtility(gestoreDeleghe, IGestoreDeleghe.class);
}
private static void adapters() {
Register.registerAdapters(Resolver.adaptersFromClass(AnagraficheAdapters.class));
Register.registerAdapters(Resolver.adaptersFromClass(ProtocolloAdapters.class));
Register.registerAdapters(Resolver.adaptersFromClass(PraticaAdapters.class));
}
private static void callbacks() {
Register.registerCallbacks(Resolver.callbacksFromClass(ProtocolloCallbacks.class));
Register.registerCallbacks(Resolver.callbacksFromClass(PraticaCallbacks.class));
Register.registerCallbacks(Resolver.callbacksFromClass(DeterminaCallbacks.class));
Register.registerCallbacks(Resolver.callbacksFromClass(RichiestaCallbacks.class));
}
private static void privates() {
Register.registerPrivates(Resolver.privatesFromClass(PraticaPrivate.class));
Register.registerPrivates(Resolver.privatesFromClass(ProtocolloPrivate.class));
}
private static void plugins(Properties properties) {
/* CMIS */
String cmisUrl = properties.getProperty("cmis.url");
String cmisUser = properties.getProperty("cmis.user");
String cmisPassword = properties.getProperty("cmis.password");
Application app = Application.getApplicationInstance();
String alfrescoPathProtocollo = (String) app.getConfigItem("alfrescopath.protocollo");
String alfrescoPathPratica = (String) app.getConfigItem("alfrescopath.pratica");
String alfrescoPathRichiesta = (String) app.getConfigItem("alfrescopath.richiesta");
String alfrescoPathPubblicazione = (String) app.getConfigItem("alfrescopath.pubblicazione");
String ooopsConnString = (String) app.getConfigItem("ooops.connection");
CmisPlugin cmisPlugin = new CmisPlugin();
String templateCmisProtocollo = alfrescoPathProtocollo + "/${dataprotocollo,date,yyyy}/${dataprotocollo,date,MM}/${dataprotocollo,date,dd}/${iddocumento}/";
cmisPlugin.setup(cmisUrl, cmisUser, cmisPassword,
templateCmisProtocollo,
Boolean.FALSE);
Register.registerPlugin(cmisPlugin, FormProtocollo.class);
Register.registerPlugin(cmisPlugin, Protocollo.class);
Register.registerPlugin(cmisPlugin, FormScrivania.class);
CmisPlugin cmisPluginPubblicazioni = new CmisPlugin();
cmisPluginPubblicazioni.setup(cmisUrl, cmisUser, cmisPassword,
alfrescoPathPubblicazione + "/${dataatto,date,yyyy}/${dataatto,date,MM}/${dataatto,date,dd}/${id}/");
Register.registerPlugin(cmisPluginPubblicazioni, FormPubblicazione.class);
Register.registerPlugin(cmisPluginPubblicazioni, Pubblicazione.class);
CmisPlugin cmisPluginPratica = new CmisPlugin();
cmisPluginPratica.setup(cmisUrl, cmisUser, cmisPassword,
alfrescoPathPratica + "/${datapratica,date,yyyy}/${datapratica,date,MM}/${idpratica}/",
Boolean.FALSE);
Register.registerPlugin(cmisPluginPratica, FormPratica.class);
Register.registerPlugin(cmisPluginPratica, FormDetermina.class);
CmisPlugin cmisPluginRichiesta = new CmisPlugin();
cmisPluginRichiesta.setup(cmisUrl, cmisUser, cmisPassword,
alfrescoPathRichiesta + "/${data,date,yyyy}/${data,date,MM}/${id}/");
Register.registerPlugin(cmisPluginRichiesta, FormRichiesta.class);
/* OOOPS (OpenOffice) */
OoopsPlugin ooopsPlugin = new OoopsPlugin();
ooopsPlugin.setup(ooopsConnString);
Register.registerPlugin(ooopsPlugin, FormPratica.class);
Register.registerPlugin(ooopsPlugin, FormDetermina.class);
}
private static void templates(Properties properties) {
/* CMIS */
String cmisUrl = properties.getProperty("cmis.url");
String cmisUser = properties.getProperty("cmis.user");
String cmisPassword = properties.getProperty("cmis.password");
OoopsPlugin ooopsPlugin = (OoopsPlugin) Register.queryPlugin(FormPratica.class, "Ooops");
List<Modello> modelli = SuiteUtil.elencoModelli();
for( Modello modello: modelli ){
HashMap<String,String> map = new HashMap<String, String>();
Modello modellopadre = modello.getModellopadre();
if( modellopadre != null ){
for( Segnalibro segnalibro: modellopadre.getSegnalibroCollection() ){
map.put(segnalibro.getSegnalibro(), segnalibro.getCodice());
}
}
for( Segnalibro segnalibro: modello.getSegnalibroCollection() ){
map.put(segnalibro.getSegnalibro(), segnalibro.getCodice());
}
RuleSet ruleSet = new RuleSet(map);
IStreamProvider streamProvider = null;
if( modello.getUri() != null && modello.getUri().startsWith("workspace:") ){
streamProvider = new CmisStreamProvider(cmisUrl, cmisUser, cmisPassword, modello.getUri());
} else {
streamProvider = new FileStreamProvider(modello.getUri());
}
Template template = new Template(streamProvider, modello.getTitolo(), modello.getDescrizione(), null, ruleSet);
// Uso UserData per indicare se un modello รจ protocollabile
template.setUserData(modello.getProtocollabile());
ooopsPlugin.addTemplate(template);
}
}
private static void forms(Database db) {
Register.registerForm(db.getEntityManagerFactory(),
null,
Costante.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
Etichetta.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/base/forms/giunta.ui",
Giunta.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/base/forms/ufficio.ui",
Ufficio.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/base/forms/utente.ui",
Utente.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
AlboProfessionale.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
TitoloSoggetto.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
Titolo.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
Oggetto.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
Stato.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/anagrafiche/forms/gruppo.ui",
Gruppo.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/anagrafiche/forms/relazione.ui",
Relazione.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/anagrafiche/forms/soggetto.ui",
Soggetto.class,
FormSoggetto.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/anagrafiche/forms/relazionesoggetto.ui",
RelazioneSoggetto.class,
FormRelazioneSoggetto.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/anagrafiche/forms/grupposoggetto.ui",
GruppoSoggetto.class,
Dialog.class);
Register.registerUtility(FormQuickInsertSoggetto.class, IQuickInsertDialog.class, Soggetto.class.getName());
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/anagrafiche/forms/indirizzo.ui",
Indirizzo.class,
FormIndirizzo.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/anagrafiche/forms/riferimento.ui",
Riferimento.class,
Dialog.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/pratiche/forms/pratica.ui",
Pratica.class,
FormPratica.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/pratiche/forms/tipopratica.ui",
TipoPratica.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
Dipendenza.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/protocollo/forms/motivazioneannullamento.ui",
MotivazioneAnnullamento.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/protocollo/forms/annullamentoprotocollo.ui",
AnnullamentoProtocollo.class,
FormAnnullamentoProtocollo.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/pratiche/forms/dipendenzapratica.ui",
DipendenzaPratica.class,
FormDipendenzaPratica.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/protocollo/forms/soggettoprotocollo.ui",
SoggettoProtocollo.class,
FormSoggettoProtocollo.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/protocollo/forms/soggettoprotocollo.ui",
SoggettoRiservatoProtocollo.class,
FormSoggettoProtocollo.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/protocollo/forms/praticaprotocollo.ui",
PraticaProtocollo.class,
FormPraticaProtocollo.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/protocollo/forms/protocollo.ui",
Protocollo.class,
FormProtocollo.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
Fascicolo.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/pubblicazioni/forms/pubblicazione.ui",
Pubblicazione.class,
FormPubblicazione.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
TipoAttoPubblicazione.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
Carica.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
Commissione.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/sedute/forms/caricacommissione.ui",
CaricaCommissione.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/sedute/forms/tiposeduta.ui",
TipoSeduta.class,
FormTipoSeduta.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/sedute/forms/seduta.ui",
Seduta.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/finanziaria/forms/servizio.ui",
Servizio.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
Capitolo.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/deliberedetermine/forms/determina.ui",
Determina.class,
FormDetermina.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/deliberedetermine/forms/movimentodetermina.ui",
MovimentoDetermina.class,
Dialog.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/deliberedetermine/forms/spesaimpegnoesistente.ui",
SpesaImpegnoEsistente.class,
Dialog.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/procedimenti/forms/norma.ui",
Norma.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/procedimenti/forms/procedimento.ui",
Procedimento.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/procedimenti/forms/faseprocedimento.ui",
FaseProcedimento.class,
FormFaseProcedimento.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/procedimenti/forms/delega.ui",
Delega.class,
FormDelega.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
Fase.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/anagrafiche/forms/titolostudio.ui",
TitoloStudio.class,
Window.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/anagrafiche/forms/titolostudiosoggetto.ui",
TitoloStudioSoggetto.class,
Dialog.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/modelli/forms/modello.ui",
Modello.class,
FormModello.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/modelli/forms/segnalibro.ui",
Segnalibro.class,
Dialog.class);
Register.registerForm(db.getEntityManagerFactory(),
"classpath:com/axiastudio/suite/richieste/forms/richiesta.ui",
Richiesta.class,
FormRichiesta.class);
Register.registerForm(db.getEntityManagerFactory(),
null,
DestinatarioUfficio.class,
Window.class);
}
}