Ejemplo n.º 1
0
        private void NavigateXmlForUpdate(XmlNode rootNode)
        {
            DocsPaUtils.LogsManagement.ProgressLogger pl = DocsPaUtils.LogsManagement.ProgressLogger.getInstance(false);

            try
            {
                /*XmlNode servers= rootNode.SelectSingleNode("SERVERS");
                 * if(servers!=null)
                 * {
                 *      int idMessage=pl.NewMessage("Caricamento Servers di Posta");
                 *      ServerXml serverXml = new ServerXml();
                 *
                 *      if(!serverXml.UpdateStructure(servers))
                 *      {
                 *              pl.UpdateMessage(idMessage,null,true,true);
                 *              logger.Debug("Errore aggiornamento servers");
                 *              throw new Exception();
                 *      }
                 *      pl.UpdateMessage(idMessage,null,true,false);
                 * }*/

                // Funzioni
                XmlNode funzioni = rootNode.SelectSingleNode("TIPIFUNZIONE");
                if (funzioni != null)
                {
                    int idMessage = pl.NewMessage("Caricamento Tipi Funzione");
                    logger.Debug("Caricamento Tipi Funzione...");

                    FunzioniXml funzioniXml = new FunzioniXml();

                    if (!funzioniXml.UpdateStructure(funzioni))
                    {
                        pl.UpdateMessage(idMessage, null, true, true);
                        logger.Debug("Errore aggiornamento tipi funzione");
                        throw new Exception();
                    }
                    pl.UpdateMessage(idMessage, null, true, false);
                }


                XmlNodeList nodiAmministrazione = rootNode.SelectNodes("AMMINISTRAZIONE");

                // Estrazione dati e nodi sottostanti
                foreach (XmlNode node in nodiAmministrazione)
                {
                    XmlNode dati = node.SelectSingleNode("DATI");
                    if (dati == null)
                    {
                        logger.Debug("Errore mancanza corpo DATI amministrazione");
                        //logger.DebugAdm(true,"Errore mancanza corpo DATI tag Amministrazione",null);
                        throw new Exception();
                    }

                    DocsPaDB.Query_DocsPAWS.AmministrazioneXml amministrazioneXml = new DocsPaDB.Query_DocsPAWS.AmministrazioneXml();
                    string       idAmm     = "";
                    string       mode      = "";
                    XmlAttribute attribute = node.Attributes["MODE"];
                    if (attribute != null)
                    {
                        mode = attribute.InnerText.ToUpper();
                    }

                    string codice        = this.GetXmlField("CODICE", dati);
                    string descrizione   = this.GetXmlField("DESCRIZIONE", dati);
                    string libreria      = this.GetXmlField("LIBRERIA", dati);
                    string segnatura     = this.GetXmlField("SEGNATURA", dati);
                    string fascicolatura = this.GetXmlField("FASCICOLATURA", dati);
                    string dominio       = this.GetXmlField("DOMINIO", dati);
                    string serversmtp    = this.GetXmlField("SERVERSMTP", dati);
                    string portasmtp     = this.GetXmlField("PORTASMTP", dati);
                    if (portasmtp == null || portasmtp == "")
                    {
                        portasmtp = "NULL";
                    }
                    string usersmtp      = this.GetXmlField("USERSMTP", dati);
                    string pwdsmtp       = this.GetXmlField("PASSWORDSMTP", dati);
                    string protocolloInt = this.GetXmlField("PROTOCOLLO_INTERNO", dati);
                    if (protocolloInt != null && protocolloInt != "")
                    {
                        protocolloInt = "1";
                    }
                    string ragioneTO = this.GetXmlField("RAGIONE_TO", dati);
                    string ragioneCC = this.GetXmlField("RAGIONE_CC", dati);

                    codice      = codice.ToUpper();
                    descrizione = DocsPaUtils.Functions.Functions.ReplaceApexes(descrizione);

                    int idMessage = pl.NewMessage("Caricamento Amministrazione: " + codice);
                    logger.Debug("Caricamento Amministrazione: " + codice);

                    if (mode == "CREATED")
                    {
                        //aggiunge la nuova amministrazione
                        idAmm = amministrazioneXml.NewAmministrazione(codice, descrizione, libreria, segnatura, fascicolatura, dominio, serversmtp, portasmtp, protocolloInt, ragioneTO, ragioneCC, usersmtp, pwdsmtp);
                        if (idAmm == null)
                        {
                            pl.UpdateMessage(idMessage, null, true, true);
                            logger.Debug("Errore nella creazione nuova amministrazione");
                            throw new Exception();
                        }
                        DocsPaDB.Utils.Personalization.Reset();
                    }
                    else if (mode == "MODIFIED")
                    {
                        //modifica i dati della amministrazione
                        idAmm = amministrazioneXml.GetAdminByName(codice);
                        if (!amministrazioneXml.UpdateAmministrazione(codice, descrizione, libreria, segnatura, fascicolatura, dominio, serversmtp, portasmtp, protocolloInt, ragioneTO, ragioneCC, usersmtp, pwdsmtp))
                        {
                            pl.UpdateMessage(idMessage, null, true, true);
                            logger.Debug("Errore aggiornamento nuova amministrazione");
                            throw new Exception();
                        }
                        DocsPaDB.Utils.Personalization.Reset();
                    }
                    else if (mode == "DELETED")
                    {
                        //TO DO - > cancellazione della amministrazione
                    }
                    else
                    {
                        //in a4ltri casi (mode="") seleziona l'id
                        idAmm = amministrazioneXml.GetAdminByName(codice);
                        if (idAmm == null)
                        {
                            pl.UpdateMessage(idMessage, null, true, true);
                            logger.Debug("Amministrazione: " + codice + " sconosciuta");
                            //logger.DebugAdm(true,"Amministrazione: " + codice + " sconosciuta",null);
                            throw new Exception();
                        }
                    }

                    //si analizza il contenuto della amministrazione solo se non è stata cancellata
                    if (mode != "DELETED")
                    {
                        // Ragioni Trasmissione

                        XmlNode ragioni = node.SelectSingleNode("RAGIONITRASMISSIONE");
                        if (ragioni != null)
                        {
                            int idMessageAmm = pl.NewMessage("Caricamento Ragioni Trasmissione");
                            logger.Debug("Caricamento Ragioni Trasmissione...");

                            RagioniTrasmissioneXml ragioniTrasmissioneXml = new RagioniTrasmissioneXml();

                            if (!ragioniTrasmissioneXml.UpdateStructure(ragioni, idAmm))
                            {
                                pl.UpdateMessage(idMessageAmm, null, true, true);
                                logger.Debug("Errore aggiornamento ragioni trasmissione");
                                throw new Exception();
                            }
                            pl.UpdateMessage(idMessageAmm, null, true, false);
                        }

                        // Registri
                        XmlNode registri = node.SelectSingleNode("REGISTRI");
                        if (registri != null)
                        {
                            int idMessageAmm = pl.NewMessage("Caricamento Registri");
                            logger.Debug("Caricamento Registri...");

                            RegistriXml registriXml = new RegistriXml();

                            if (!registriXml.UpdateStructure(registri, idAmm))
                            {
                                pl.UpdateMessage(idMessageAmm, null, true, true);
                                logger.Debug("Errore aggiornamento registri");
                                throw new Exception();
                            }
                            pl.UpdateMessage(idMessageAmm, null, true, false);
                        }

//						// Funzioni
//						XmlNode funzioni = node.SelectSingleNode("TIPIFUNZIONE");
//						if(funzioni!=null)
//						{
//							FunzioniXml funzioniXml = new FunzioniXml();
//
//							if(!funzioniXml.UpdateStructure(funzioni, idAmm))
//							{
//								logger.Debug("Errore aggiornamento tipi funzione");
//								throw new Exception();
//							}
//						}

                        // Tipi Ruolo
                        XmlNode ruoli = node.SelectSingleNode("RUOLI");
                        if (ruoli != null)
                        {
                            int idMessageAmm = pl.NewMessage("Caricamento Ruoli");
                            logger.Debug("Caricamento Tipo Ruoli...");

                            RuoliXml ruoliXml = new RuoliXml();

                            if (!ruoliXml.UpdateStructure(ruoli, idAmm))
                            {
                                pl.UpdateMessage(idMessageAmm, null, true, true);
                                logger.Debug("Errore aggiornamento ruoli");
                                throw new Exception();
                            }
                            pl.UpdateMessage(idMessageAmm, null, true, false);
                        }

                        // Utenti

//						XmlNode utenti = node.SelectSingleNode("UTENTI");
//						if(utenti!=null)
//						{
//							int idMessageAmm=pl.NewMessage("Caricamento Utenti");
//							UtentiXml utentiXml = new UtentiXml();
//
//							if(!utentiXml.UpdateStructure(utenti, idAmm))
//							{
//								pl.UpdateMessage(idMessageAmm,null,true,true);
//								logger.Debug("Errore aggiornamento utenti");
//								throw new Exception();
//							}
//							pl.UpdateMessage(idMessageAmm,null,true,false);
//						}

                        // Organigramma
//						XmlNode organigramma = node.SelectSingleNode("ORGANIGRAMMA");
//						if(organigramma!=null)
//						{
//							int idMessageAmm=pl.NewMessage("Caricamento Organigramma");
//							OrganigrammaXml organigrammaXml = new OrganigrammaXml();
//
//							if(!organigrammaXml.UpdateStructure(organigramma, idAmm))
//							{
//								pl.UpdateMessage(idMessageAmm,null,true,true);
//								logger.Debug("Errore aggiornamento organigramma");
//								throw new Exception();
//							}
//							pl.UpdateMessage(idMessageAmm,null,true,false);
//						}
                    }
                    pl.UpdateMessage(idMessage, null, true, false);
                }
            }
            catch (Exception e)
            {
                logger.Debug("Errore durante la navigazione ricorsiva per aggiornamento", e);
            }
        }