/*
* 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.protocollo.forms;
import com.axiastudio.menjazo.AlfrescoHelper;
import com.axiastudio.pypapi.Register;
import com.axiastudio.pypapi.db.*;
import com.axiastudio.pypapi.plugins.IPlugin;
import com.axiastudio.pypapi.ui.*;
import com.axiastudio.pypapi.ui.widgets.PyPaPiComboBox;
import com.axiastudio.pypapi.ui.widgets.PyPaPiTableView;
import com.axiastudio.suite.SuiteUiUtil;
import com.axiastudio.suite.SuiteUtil;
import com.axiastudio.suite.base.entities.IUtente;
import com.axiastudio.suite.base.entities.Ufficio;
import com.axiastudio.suite.base.entities.UfficioUtente;
import com.axiastudio.suite.base.entities.Utente;
import com.axiastudio.suite.generale.forms.DialogStampaEtichetta;
import com.axiastudio.suite.interoperabilita.entities.Segnatura;
import com.axiastudio.suite.interoperabilita.utilities.JAXBHelper;
import com.axiastudio.suite.plugins.cmis.CmisPlugin;
import com.axiastudio.suite.procedimenti.GestoreDeleghe;
import com.axiastudio.suite.procedimenti.entities.Carica;
import com.axiastudio.suite.procedimenti.entities.CodiceCarica;
import com.axiastudio.suite.procedimenti.entities.Delega;
import com.axiastudio.suite.protocollo.ProfiloUtenteProtocollo;
import com.axiastudio.suite.protocollo.entities.*;
import com.axiastudio.suite.pubblicazioni.PubblicazioneUtil;
import com.axiastudio.suite.pubblicazioni.entities.Pubblicazione;
import com.trolltech.qt.core.QModelIndex;
import com.trolltech.qt.gui.*;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Tiziano Lattisi <tiziano at axiastudio.it>
*/
public class FormProtocollo extends Window {
/**
*
*/
public ProtocolloMenuBar protocolloMenuBar;
private QTabWidget tabWidget;
public FormProtocollo(FormProtocollo form){
super(form.uiFile, form.entityClass, form.title);
this.protocolloMenuBar = null;
}
public FormProtocollo(String uiFile, Class entityClass, String title){
super(uiFile, entityClass, title);
this.protocolloMenuBar = new ProtocolloMenuBar("Protocollo", this);
this.addToolBar(protocolloMenuBar);
QLabel labelSpedito = (QLabel) this.findChild(QLabel.class, "labelSpedito");
labelSpedito.setPixmap(new QPixmap("classpath:com/axiastudio/suite/resources/email_go.png"));
QLabel labelConvalidaProtocollo = (QLabel) this.findChild(QLabel.class, "labelConvalidaProtocollo");
labelConvalidaProtocollo.setPixmap(new QPixmap("classpath:com/axiastudio/suite/resources/lock_mail.png"));
QLabel labelConvalidaAttribuzioni = (QLabel) this.findChild(QLabel.class, "labelConvalidaAttribuzioni");
labelConvalidaAttribuzioni.setPixmap(new QPixmap("classpath:com/axiastudio/suite/resources/lock_group.png"));
QLabel labelConsolidaDocumenti = (QLabel) this.findChild(QLabel.class, "labelConsolidaDocumenti");
labelConsolidaDocumenti.setPixmap(new QPixmap("classpath:com/axiastudio/suite/resources/lock_folder.png"));
try {
Method storeFactory = this.getClass().getMethod("storeSportello");
Register.registerUtility(storeFactory, IStoreFactory.class, "Sportello");
} catch (NoSuchMethodException ex) {
Logger.getLogger(FormProtocollo.class.getName()).log(Level.SEVERE, null, ex);
} catch (SecurityException ex) {
Logger.getLogger(FormProtocollo.class.getName()).log(Level.SEVERE, null, ex);
}
((QComboBox) this.findChild(QComboBox.class, "comboBox_tipo")).currentIndexChanged.connect(this, "aggiornaLabelSoggetti()");
/* fascicolazione */
QToolButton toolButtonTitolario = (QToolButton) this.findChild(QToolButton.class, "toolButtonTitolario");
toolButtonTitolario.setIcon(new QIcon("classpath:com/axiastudio/suite/resources/email_go.png"));
toolButtonTitolario.clicked.connect(this, "apriTitolario()");
/* I riferimenti successivi sono sempre in sola lettura */
PyPaPiTableView tableViewRiferimentiSuccessivi = (PyPaPiTableView) this.findChild(PyPaPiTableView.class, "tableView_riferimentisuccessivi");
Util.setWidgetReadOnly(tableViewRiferimentiSuccessivi, true);
/* Gestione attribuzione principale e pratica in originale */
PyPaPiTableView tableViewAttribuzioni = (PyPaPiTableView) this.findChild(PyPaPiTableView.class, "tableView_attribuzioni");
tableViewAttribuzioni.entityInserted.connect(this, "attribuzioneInserita(Object)");
tableViewAttribuzioni.entityRemoved.connect(this, "attribuzioneRimossa(Object)");
PyPaPiTableView tableViewPratica = (PyPaPiTableView) this.findChild(PyPaPiTableView.class, "tableView_pratiche");
tableViewPratica.entityInserted.connect(this, "praticaInserita(Object)");
tableViewPratica.entityRemoved.connect(this, "praticaRimossa(Object)");
/* Gestione annullamenti protocollo */
PyPaPiTableView tableViewAnnullamento = (PyPaPiTableView) this.findChild(PyPaPiTableView.class, "tableView_annullamenti");
tableViewAnnullamento.entityRemoved.connect(this, "annullamentoRimosso(Object)");
}
/*
* La prima attribuzione diventa in via principale, e non può più essere rimossa
*/
private void attribuzioneInserita(Object obj){
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
Attribuzione inserita = (Attribuzione) obj;
if( protocollo.getAttribuzioneCollection().size() == 1 ){
inserita.setPrincipale(Boolean.TRUE);
}
}
private void attribuzioneRimossa(Object obj){
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
Attribuzione rimossa = (Attribuzione) obj;
if( rimossa.getPrincipale() ){
QMessageBox.warning(this, "Attenzione", "L'attribuzione principale non può venir rimossa.");
PyPaPiTableView tableViewAttribuzione = (PyPaPiTableView) this.findChild(PyPaPiTableView.class, "tableView_attribuzioni");
((ITableModel) tableViewAttribuzione.model()).getContextHandle().insertElement(rimossa);
}
}
/*
* Solo il richiedente può annullare la sua richiesta di annullamento
*/
private void annullamentoRimosso(Object obj){
Utente autenticato = (Utente) Register.queryUtility(IUtente.class);
AnnullamentoProtocollo annullamento = (AnnullamentoProtocollo) obj;
if( !autenticato.getLogin().equals(annullamento.getEsecutorerichiesta()) ){
QMessageBox.warning(this, "Attenzione", "Solo il richiedente può annullare la sua richiesta di annullamento.");
PyPaPiTableView tableViewAttribuzione = (PyPaPiTableView) this.findChild(PyPaPiTableView.class, "tableView_attribuzioni");
((ITableModel) tableViewAttribuzione.model()).getContextHandle().insertElement(annullamento);
}
}
/*
* La prima pratica contiene il protocollo in originale e non può essere rimossa
*/
private void praticaInserita(Object obj){
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
PraticaProtocollo praticaProtocollo = (PraticaProtocollo) obj;
if( protocollo.getPraticaProtocolloCollection().size() == 1 ){
praticaProtocollo.setOriginale(Boolean.TRUE);
}
}
private void praticaRimossa(Object obj){
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
PraticaProtocollo rimossa = (PraticaProtocollo) obj;
if( protocollo.getPraticaProtocolloCollection().size() == 0 || rimossa.getOriginale()){
QMessageBox.warning(this, "Attenzione", "Il protocollo non può essere rimosso dalla pratica che lo contiene in originale.");
PyPaPiTableView tableViewPratica = (PyPaPiTableView) this.findChild(PyPaPiTableView.class, "tableView_pratiche");
rimossa.setOriginale(Boolean.TRUE);
((ITableModel) tableViewPratica.model()).getContextHandle().insertElement(rimossa);
}
}
/*
* Uno store contenente solo gli uffici dell'utente
*/
public Store storeSportello(){
Utente autenticato = (Utente) Register.queryUtility(IUtente.class);
List<Ufficio> uffici = new ArrayList();
for(UfficioUtente uu: autenticato.getUfficioUtenteCollection()){
if( uu.getUfficio().getSportello() ){
uffici.add(uu.getUfficio());
}
}
return new Store(uffici);
}
private void convalidaAttribuzioni() {
Database db = (Database) Register.queryUtility(IDatabase.class);
EntityManagerFactory emf = db.getEntityManagerFactory();
EntityManager em = emf.createEntityManager();
Carica carica = GestoreDeleghe.findCarica(CodiceCarica.RESPONSABILE_ATTRIBUZIONI);
List<Delega> deleghe = em.createNamedQuery("trovaIncaricatiODelegati", Delega.class)
.setParameter("carica", carica)
.getResultList();
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
protocollo.setConvalidaattribuzioni(Boolean.TRUE);
List<String> items = new ArrayList();
items.add("nessuno");
for( Delega delega: deleghe ){
items.add(delega.getUtente().getNome());
}
Utente autenticato = (Utente) Register.queryUtility(IUtente.class);
Integer def;
if( items.size()>1 && autenticato.getAttributoreprotocollo() ){
def = 1;
} else {
def = 0;
}
String choice = QInputDialog.getItem(this,
"Verificatore delle attribuzioni",
"Dichiara il verificatore delle attribuzioni",
items,
def,
false);
Integer idx = items.lastIndexOf(choice);
if( idx > 0 ){
Delega verificatore = deleghe.get(idx-1);
protocollo.setControlloreposta(verificatore.getUtente().getLogin());
}
this.getContext().getDirty();
}
private void convalidaProtocollo() {
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
protocollo.setConvalidaattribuzioni(Boolean.TRUE);
protocollo.setConvalidaprotocollo(Boolean.TRUE);
this.getContext().getDirty();
}
private void consolidaDocumenti() {
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
protocollo.setConsolidadocumenti(Boolean.TRUE);
this.getContext().getDirty();
}
private void apriTitolario() {
FormTitolario titolario = new FormTitolario();
int exec = titolario.exec();
if( exec == 1 ){
Fascicolo selection = titolario.getSelection();
PyPaPiComboBox comboBoxTitolario = (PyPaPiComboBox) this.findChild(PyPaPiComboBox.class, "comboBoxTitolario");
comboBoxTitolario.select(selection);
this.getContext().getDirty();
}
}
private void impostaAttribuzionePrincipale(){
PyPaPiTableView tv = (PyPaPiTableView) this.findChild(PyPaPiTableView.class, "tableView_attribuzioni");
List<QModelIndex> rows = tv.selectionModel().selectedRows();
if( rows.isEmpty()){
return;
}
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
for( Attribuzione attribuzione: protocollo.getAttribuzioneCollection() ){
attribuzione.setPrincipale(Boolean.FALSE);
}
for (QModelIndex idx: rows){
Attribuzione attribuzione = (Attribuzione) ((ITableModel) tv.model()).getEntityByRow(idx.row());
attribuzione.setPrincipale(Boolean.TRUE);
}
this.getContext().getDirty();
}
@Override
protected void indexChanged(int row) {
super.indexChanged(row);
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
Utente autenticato = (Utente) Register.queryUtility(IUtente.class);
ProfiloUtenteProtocollo profilo = new ProfiloUtenteProtocollo(protocollo, autenticato);
Boolean nuovoInserimento = protocollo.getId() == null;
Boolean convAttribuzioni = protocollo.getConvalidaattribuzioni();
Boolean convProtocollo = protocollo.getConvalidaprotocollo();
Boolean consDocumenti = protocollo.getConsolidadocumenti();
// abilitazione azioni: convalida, consolida e spedizione
this.protocolloMenuBar.actionByName("convalidaAttribuzioni").setEnabled(!convAttribuzioni);
this.protocolloMenuBar.actionByName("convalidaProtocollo").setEnabled(!convProtocollo);
this.protocolloMenuBar.actionByName("consolidaDocumenti").setEnabled(!consDocumenti && profilo.inAttribuzionePrincipaleC());
Util.setWidgetReadOnly((QWidget) this.findChild(QCheckBox.class, "spedito"), protocollo.getSpedito());
this.protocolloMenuBar.actionByName("pubblicaProtocollo").setEnabled(autenticato.getPubblicaalbo());
// convalida attribuzioni
PyPaPiTableView tableViewAttribuzioni = (PyPaPiTableView) this.findChild(PyPaPiTableView.class, "tableView_attribuzioni");
Boolean modificaAttribuzioni = nuovoInserimento || autenticato.getAttributoreprotocollo() || (!protocollo.getConvalidaattribuzioni() && profilo.inSportelloOAttribuzionePrincipale());
Util.setWidgetReadOnly(tableViewAttribuzioni, !modificaAttribuzioni);
// sempre read-only
Util.setWidgetReadOnly((QWidget) this.findChild(QDateEdit.class, "dateEdit_data"), true);
Util.setWidgetReadOnly((QWidget) this.findChild(QLineEdit.class, "lineEdit_iddocumento"), true);
Util.setWidgetReadOnly((QWidget) this.findChild(QCheckBox.class, "annullato"), true);
Util.setWidgetReadOnly((QWidget) this.findChild(QCheckBox.class, "annullamentorichiesto"), true);
// solo primo inserimento
Util.setWidgetReadOnly((QWidget) this.findChild(QComboBox.class, "comboBox_sportello"), !nuovoInserimento);
Util.setWidgetReadOnly((QWidget) this.findChild(QComboBox.class, "comboBox_tipo"), !nuovoInserimento);
aggiornaLabelSoggetti(protocollo);
// sportello
QComboBox comboBox_sportello = (QComboBox) this.findChild(QComboBox.class, "comboBox_sportello");
QLineEdit lineEdit_sportello = (QLineEdit) this.findChild(QLineEdit.class, "lineEdit_sportello");
if( protocollo.getId() == null ){
lineEdit_sportello.setText("");
lineEdit_sportello.hide();
comboBox_sportello.show();
} else {
lineEdit_sportello.setText(protocollo.getSportello().toString());
comboBox_sportello.hide();
lineEdit_sportello.show();
}
// etichette convalida e spedizione
QLabel labelSpedizione = (QLabel) this.findChild(QLabel.class, "label_spedizione");
if( protocollo.getSpedito() && protocollo.getDataspedizione()!=null){
labelSpedizione.setText(SuiteUtil.DATETIME_FORMAT.format(protocollo.getDataspedizione()) + " " + protocollo.getEsecutorespedizione());
} else {
labelSpedizione.setText("-");
}
QLabel labelConvalidau = (QLabel) this.findChild(QLabel.class, "label_convalidau");
if( protocollo.getConvalidaattribuzioni() && protocollo.getDataconvalidaattribuzioni()!=null){
labelConvalidau.setText(SuiteUtil.DATETIME_FORMAT.format(protocollo.getDataconvalidaattribuzioni()) + " " + protocollo.getEsecutoreconvalidaattribuzioni());
} else {
labelConvalidau.setText("-");
}
QLabel labelConvalida = (QLabel) this.findChild(QLabel.class, "label_convalida");
if( protocollo.getConvalidaprotocollo() && protocollo.getDataconvalidaprotocollo()!=null){
labelConvalida.setText(SuiteUtil.DATETIME_FORMAT.format(protocollo.getDataconvalidaprotocollo()) + " " + protocollo.getEsecutoreconvalidaprotocollo());
} else {
labelConvalida.setText("-");
}
QLabel labelConsolida = (QLabel) this.findChild(QLabel.class, "label_consolida");
if( protocollo.getConsolidadocumenti() && protocollo.getDataconsolidadocumenti()!=null){
labelConsolida.setText(SuiteUtil.DATETIME_FORMAT.format(protocollo.getDataconsolidadocumenti()) + " " + protocollo.getEsecutoreconsolidadocumenti());
} else {
labelConsolida.setText("-");
}
// evidenza protocollo annullato
if( protocollo.getAnnullato() ){
this.setStyleSheet("color: red;");
} else {
this.setStyleSheet("");
}
// protocollo convalidato: disabilitazione di tutto tranne oggetto e pratiche
String[] roWidgets = {"textEdit_oggetto", "tableView_soggettiprotocollo",
"tableView_soggettiriservatiprotocollo", "tableView_ufficiprotocollo",
"comboBoxTitolario", "comboBox_tiporiferimentomittente", "lineEdit_nrriferimentomittente",
"dateEdit_datariferimentomittente", "richiederisposta", "riservato",
"corrispostoostornato"};
for( String widgetName: roWidgets ){
Util.setWidgetReadOnly((QWidget) this.findChild(QWidget.class, widgetName), protocollo.getConvalidaprotocollo());
}
((QToolButton) this.findChild(QToolButton.class, "toolButtonTitolario")).setEnabled(!protocollo.getConvalidaprotocollo());
// protocollo annullato: non possibile inserire o eliminare richieste di annullamento
Util.setWidgetReadOnly((QWidget) this.findChild(QWidget.class, "tableView_annullamenti"), protocollo.getAnnullato());
// Visibilità dei soggetti riservati
PyPaPiTableView tvSoggettiRiservati = (PyPaPiTableView) this.findChild(PyPaPiTableView.class, "tableView_soggettiriservatiprotocollo");
if( !(nuovoInserimento || profilo.inSportelloOAttribuzioneR() || autenticato.getSupervisoreprotocollo()) ){
tvSoggettiRiservati.hide();
} else {
tvSoggettiRiservati.show();
}
}
private void aggiornaLabelSoggetti() {
aggiornaLabelSoggetti((Protocollo) this.getContext().getCurrentEntity());
}
private void aggiornaLabelSoggetti(Protocollo protocollo) {
// alternanza mittenti-destinatari
String labelSinistra;
String labelDestra;
int nrRiservati = 0;
TipoProtocollo tipoProtocollo = TipoProtocollo.ENTRATA;
if ( protocollo == null || protocollo.getId() == null ) {
QComboBox cmbTipo = ((QComboBox) this.findChild(QComboBox.class, "comboBox_tipo"));
tipoProtocollo = TipoProtocollo.values()[cmbTipo.currentIndex()];
} else {
nrRiservati = protocollo.getSoggettoRiservatoProtocolloCollection().size();
tipoProtocollo = protocollo.getTipo();
}
if( tipoProtocollo.equals(TipoProtocollo.USCITA) ){
labelDestra = "Mittenti";
labelSinistra = "Destinatari";
} else {
labelSinistra = "Mittenti";
labelDestra = "Destinatari";
}
((QLabel) this.findChild(QLabel.class, "label_destra")).setText(labelDestra);
QTabWidget tabWidgetSoggettiProtocollo = (QTabWidget) this.findChild(QTabWidget.class, "tabWidget_sinistra");
tabWidgetSoggettiProtocollo.setTabText(0, labelSinistra);
tabWidgetSoggettiProtocollo.setTabText(1, labelSinistra+" riservati (" + nrRiservati +")");
}
private void information() {
String extra = "";
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
String controllorePosta = protocollo.getControlloreposta();
if( controllorePosta != null ){
extra += "<br/><br/>Verificatore attribuzioni: " + protocollo.getControlloreposta();
}
SuiteUiUtil.showInfo(this, extra);
}
// XXX: codice simile a FormScrivania
private void apriDocumenti(){
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
if( protocollo == null || protocollo.getId() == null ){
return;
}
Utente autenticato = (Utente) Register.queryUtility(IUtente.class);
ProfiloUtenteProtocollo pup = new ProfiloUtenteProtocollo(protocollo, autenticato);
List<IPlugin> plugins = (List) Register.queryPlugins(this.getClass());
for(IPlugin plugin: plugins){
if( "CMIS".equals(plugin.getName()) ){
Boolean view = false;
Boolean delete = false;
Boolean download = false;
Boolean parent = false;
Boolean upload = false;
Boolean version = false;
if( protocollo.getRiservato() ){
view = pup.inSportelloOAttribuzioneV() && pup.inSportelloOAttribuzioneR();
download = view;
} else {
view = autenticato.getSupervisoreprotocollo() || pup.inSportelloOAttribuzioneV();
download = view;
}
if( protocollo.getConsolidadocumenti() ){
delete = false;
version = pup.inAttribuzionePrincipaleC();
upload = version;
} else {
upload = pup.inSportelloOAttribuzionePrincipale();
delete = upload;
version = upload;
}
if( view ){
((CmisPlugin) plugin).showForm(protocollo, delete, download, parent, upload, version);
} else {
QMessageBox.warning(this, "Attenzione", "Non disponi dei permessi per visualizzare i documenti");
return;
}
}
}
}
private void cercaDaEtichetta() {
String barcode = QInputDialog.getText(this, "Ricerca da etichetta", "Etichetta");
if( barcode == null ){
return;
}
if( barcode.length() < 5 ){
QMessageBox.warning(this, "Attenzione", "Numero di protocollo troppo breve");
return;
}
Controller controller = this.getContext().getController();
Map map = new HashMap();
Column column = new Column("iddocumento", "iddocumento", "iddocumento");
column.setEditorType(CellEditorType.STRING);
String year = barcode.substring(0, 4);
Integer n = Integer.parseInt(barcode.substring(4));
barcode = year + String.format("%08d", n);
map.put(column, barcode);
Store store = controller.createCriteriaStore(map);
if( store.size() == 1 ){
this.getContext().getModel().replaceRows(store);
this.getContext().firstElement();
} else {
QMessageBox.warning(this, "Attenzione", "Protocollo" + barcode + " non trovato");
}
}
private void stampaEtichetta() {
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
Map<String, Object> map = new HashMap();
map.put("iddocumento", protocollo.getIddocumento());
map.put("dataprotocollo", protocollo.getDataprotocollo());
map.put("hash", "1234567890");
DialogStampaEtichetta dialog = new DialogStampaEtichetta(this, map);
int exec = dialog.exec();
if( exec == 1 ){
System.out.println("Print!");
}
}
private void pubblicaProtocollo() {
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
Pubblicazione pubblicazione = PubblicazioneUtil.pubblicaProtocollo(protocollo);
IForm form = Util.formFromEntity(pubblicazione);
QMdiArea workspace = Util.findParentMdiArea(this);
if( workspace != null ){
workspace.addSubWindow((QMainWindow) form);
}
form.show();
}
private void segnaturaXml() {
Protocollo protocollo = (Protocollo) this.getContext().getCurrentEntity();
if( protocollo.getId() == null ){
QMessageBox.warning(this, "Attenzione", "E' necessario registrare il protocollo per poter generare la segntura.");
return;
}
if( !protocollo.getTipo().equals(TipoProtocollo.USCITA) ){
QMessageBox.warning(this, "Attenzione", "E' possibile generare la segnatura solo per i protocolli in uscita.");
return;
}
CmisPlugin plugin = (CmisPlugin) Register.queryPlugin(protocollo.getClass(), "CMIS");
AlfrescoHelper helper = plugin.createAlfrescoHelper(protocollo);
if( helper.children().size() == 0 ){
QMessageBox.warning(this, "Attenzione", "Deve essere presente almeno un documento.");
return;
}
Segnatura segnatura = JAXBHelper.segnaturaDaProtocollo(protocollo);
String xml = JAXBHelper.scriviSegnatura(segnatura);
helper.createDocument("", "Segnatura.xml", xml.getBytes());
}
}