Пример #1
0
        private void btnNavegar_Click(object sender, EventArgs e)
        {
            currentState = currentState == State.filter ? State.navigation : State.filter;
            this.grpNavegacao.Visible = currentState == State.navigation;
            this.controloAutList1.Visible = currentState == State.filter;
            this.btnNavegar.ImageIndex = currentState == State.filter ? 0 : 1;
            this.btnNavegar.Text = currentState == State.filter ? "Tesauro" : "Voltar";
            this.toolTip1.SetToolTip(this.btnNavegar, currentState == State.filter ? SharedResourcesOld.CurrentSharedResources.NavThesaurusStrings[0] : SharedResourcesOld.CurrentSharedResources.NavThesaurusStrings[1]);

            if (currentState == State.navigation)
            {
                var cadRow = this.controloAutList1.SelectedItems[0].Tag as GISADataset.ControloAutDicionarioRow;

                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    this.controlTermosIndexacao1.trVwTermoIndexacao.Nodes.Clear();
                    this.controlTermosIndexacao1.LoadData(cadRow.ControloAutRow, ho.Connection);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    ho.Dispose();
                }
            }
        }
Пример #2
0
        private void comprovativoToolMenuItem_Click(object sender, EventArgs e)
        {
            GISADataset.MovimentoRow movRow = (GISADataset.MovimentoRow)this.movList.SelectedItems[0].Tag;

            List<MovimentoRule.DocumentoMovimentado> documents = new List<MovimentoRule.DocumentoMovimentado>();
            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                documents = MovimentoRule.Current.GetDocumentos(movRow.ID, GisaDataSetHelper.GetInstance(), ho.Connection);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw;
            }
            finally
            {
                ho.Dispose();
            }

            Reports.Movimentos.RelatorioMovimento report = new Reports.Movimentos.RelatorioMovimento(movRow, documents,
                string.Format("Requisicao_{0}", movRow.ID), SessionHelper.GetGisaPrincipal().TrusteeUserOperator.ID);
            
            object o = new Reports.BackgroundRunner(TopLevelControl, report, 1);
        }        
Пример #3
0
        public override void LoadData()
        {
            if (CurrentContext.Movimento == null)
            {
                CurrentMovimento = null;
                return;
            }

            CurrentMovimento = CurrentContext.Movimento;

            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetTempConnection());
            try
            {
                documentos = MovimentoRule.Current.GetDocumentos(CurrentMovimento.ID, GisaDataSetHelper.GetInstance(), ho.Connection);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw;
            }
            finally
            {
                ho.Dispose();
            }
        }
Пример #4
0
 public static void RecordEstatisticaPesquisa(long id, string catCode) {
     try {
         using (var ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection())) {
             using (var tr = ho.Connection.BeginTransaction(IsolationLevel.Serializable)) {
                 using (var cmd = ho.Connection.CreateCommand()) {
                     cmd.Connection = ho.Connection;
                     cmd.Transaction = tr;
                     cmd.CommandText = "insert into EstatisticaPesquisa (ID, CatCode, UserID, AccessDateTime, AccessMethod, IPAddress) values (@ID, @CatCode, @UserID, @AccessDateTime, @AccessMethod, @IPAddress)";
                     cmd.CommandType = CommandType.Text;
                     var idParam = cmd.CreateParameter();
                     idParam.DbType = DbType.Int64;
                     idParam.ParameterName = "@ID";
                     idParam.Value = id;
                     var catCodeParam = cmd.CreateParameter();
                     catCodeParam.DbType = DbType.StringFixedLength;
                     catCodeParam.Size = 2;
                     catCodeParam.ParameterName = "@CatCode";
                     catCodeParam.Value = catCode;
                     var userIDParam = cmd.CreateParameter();
                     userIDParam.DbType = DbType.Int64;
                     userIDParam.ParameterName = "@UserID";
                     userIDParam.Value = (System.Threading.Thread.CurrentPrincipal as GisaPrincipal).TrusteeUserOperator.ID;
                     var accessDateTimeParam = cmd.CreateParameter();
                     accessDateTimeParam.DbType = DbType.DateTime;
                     accessDateTimeParam.ParameterName = "@AccessDateTime";
                     accessDateTimeParam.Value = DateTime.UtcNow;
                     var accessMethodParam = cmd.CreateParameter();
                     accessMethodParam.DbType = DbType.StringFixedLength;
                     accessMethodParam.Size = 1;
                     accessMethodParam.Value = "D";
                     accessMethodParam.ParameterName = "@AccessMethod";
                     var ipAddressParam = cmd.CreateParameter();
                     ipAddressParam.DbType = DbType.String;
                     ipAddressParam.Size = -1;
                     ipAddressParam.Value = Environment.MachineName;
                     ipAddressParam.ParameterName = "@IPAddress";
                     (ipAddressParam as System.Data.Common.DbParameter).IsNullable = false;
                     cmd.Parameters.Add(idParam);
                     cmd.Parameters.Add(catCodeParam);
                     cmd.Parameters.Add(userIDParam);
                     cmd.Parameters.Add(accessDateTimeParam);
                     cmd.Parameters.Add(accessMethodParam);
                     cmd.Parameters.Add(ipAddressParam);
                     cmd.ExecuteNonQuery();
                     cmd.CommandText = "EstatisticaPesquisaSimplificar";
                     cmd.CommandType = CommandType.StoredProcedure;
                     cmd.Parameters.Clear();
                     cmd.ExecuteNonQuery();
                     tr.Commit();
                 }
             }
         }
     } catch (Exception ex) {
         System.Diagnostics.Debug.WriteLine(ex);
     }
 }
        protected override void UpdateTrustees(GISADataset.TrusteeRow tRow)
        {
            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                TrusteeRule.Current.LoadTrusteesUsr(GisaDataSetHelper.GetInstance(), ho.Connection);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw;
            }
            finally
            {
                ho.Dispose();
            }

            lstVwTrustees.Items.Clear();
            ListViewItem item = null;
            ListViewItem selItem = null;
            foreach (var t in GisaDataSetHelper.GetInstance().Trustee.Cast<GISADataset.TrusteeRow>().ToList())
            {
#if TESTING
               
                item = lstVwTrustees.Items.Add("");
                if (t == tRow)
                {
                    selItem = item;
                }
                UpdateListViewItem(item, t);
                if (t.BuiltInTrustee)
                {
                    item.ForeColor = System.Drawing.Color.Gray;
                }
#else
				if (! t.BuiltInTrustee && t.IsVisibleObject)
				{
					item = lstVwTrustees.Items.Add("");
					if (t == tRow)
					{
						selItem = item;
					}
					UpdateListViewItem(item, t);
				}
#endif
            }
            lstVwTrustees.Sort();
            if (selItem != null)
            {
                lstVwTrustees.EnsureVisible(selItem.Index);
                lstVwTrustees.selectItem(selItem);
            }
        }
Пример #6
0
        public static ArrayList GetPossibleSubItems(GISADataset.NivelRow nRow)         //PossibleSubNivel()
        {
            //ToDo()
            // Obter os TipoNivelRelacionados das RelacaoHierarquicas das EPs superiores. Para cada TiponivelRelacionado devolver também o intervalo da relação associada.
            // espandir os TipoNivelRelacionados permitidos como subníveis para cada um dos TipoNivelRelacionados encontrados anteriormente. Para cada um dos tipos de subnivel guardar o intervalo de data em que ele faz sentido

            ArrayList subNiveis = new ArrayList();

            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                Trace.WriteLine("<getPossibleSubTypesOf>");

                IDataReader dataReader = null;
                dataReader = TipoNivelRule.Current.GetPossibleSubItems(nRow.ID, ho.Connection);

                Trace.WriteLine("<getPossibleSubTypesOf/>");

                while (dataReader.Read())
                {
                    PossibleSubNivel subNivel = new PossibleSubNivel();
                    subNivel.SubIDTipoNivelRelacionado = System.Convert.ToInt64(dataReader.GetValue(0));
                    subNivel.Designacao = GisaDataSetHelper.GetDBNullableText(ref dataReader, 1);
                    subNivel.InicioAno  = GisaDataSetHelper.GetDBNullableText(ref dataReader, 2);
                    subNivel.InicioMes  = GisaDataSetHelper.GetDBNullableText(ref dataReader, 3);
                    subNivel.InicioDia  = GisaDataSetHelper.GetDBNullableText(ref dataReader, 4);
                    subNivel.FimAno     = GisaDataSetHelper.GetDBNullableText(ref dataReader, 5);
                    subNivel.FimMes     = GisaDataSetHelper.GetDBNullableText(ref dataReader, 6);
                    subNivel.FimDia     = GisaDataSetHelper.GetDBNullableText(ref dataReader, 7);
                    subNiveis.Add(subNivel);
                }
                dataReader.Close();
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw ex;
            }
            finally
            {
                ho.Dispose();
            }

            // não são encontrados subniveis organicos possiveis se não existirem
            if (subNiveis.Count == 0)
            {
            }

            return(subNiveis);
        }
Пример #7
0
        public override void LoadData()
        {
            try
            {
                ((frmMain)TopLevelControl).EnterWaitMode();
                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    GisaDataSetHelper.ManageDatasetConstraints(false);

                    if (!isLoaded)
                    {
                        if (CurrentContext.Deposito == null) return;

                        // Recarregar a uf actual e guardar um contexto localmente
                        DepositoRule.Current.LoadDepositoData(GisaDataSetHelper.GetInstance(), CurrentContext.Deposito.ID, ho.Connection);
                        CurrentDeposito = GisaDataSetHelper.GetInstance().Deposito.Cast<GISADataset.DepositoRow>().SingleOrDefault(d => d.ID == CurrentContext.Deposito.ID);

                        if (CurrentDeposito == null || CurrentDeposito.RowState == DataRowState.Detached || 
                            CurrentContext.Deposito == null || CurrentContext.Deposito.RowState == DataRowState.Detached) return;
                        
                        isLoaded = true;
                    }
                    GisaDataSetHelper.ManageDatasetConstraints(false);
                    GISAPanel selectedPanel = (GISAPanel)this.DropDownTreeView1.SelectedNode.Tag;
                    if (!selectedPanel.IsLoaded)
                    {
                        long startTicks = 0;
                        startTicks = DateTime.Now.Ticks;
                        selectedPanel.LoadData(CurrentDeposito, ho.Connection);
                        Debug.WriteLine("Time dispend loading " + selectedPanel.ToString() + ": " + new TimeSpan(DateTime.Now.Ticks - startTicks).ToString());
                    }
                    GisaDataSetHelper.ManageDatasetConstraints(true);
                }
                catch (System.Data.ConstraintException Ex)
                {
                    Trace.WriteLine(Ex);
                    GisaDataSetHelper.FixDataSet(GisaDataSetHelper.GetInstance(), ho.Connection);
                }
                finally
                {
                    ho.Dispose();
                }
            }
            finally
            {
                ((frmMain)TopLevelControl).LeaveWaitMode();
            }
        }
Пример #8
0
 [Test] public void validate_generated_ead() {
     GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
     try {
         string fileName = "GISA_EAD_Test.xml";
         EADGenerator gen_to_test = new EADGenerator(fileName, ho.Connection);
         long IDNivel_PAI = 214;
         long idNivel = 215;
         gen_to_test.generate(IDNivel_PAI, idNivel);
         validate(fileName);
         Assert.IsTrue(isValid);
     }
     finally {
         ho.Dispose();
     }
 }
Пример #9
0
        public static List<CAAssociado> GetRelatedControloAut(List<GISADataset.ControloAutDicionarioRow> cadRows)
        {
            var res = new List<CAAssociado>();
            var ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                var start = DateTime.Now.Ticks;
                res = DiplomaModeloRule.Current.GetCANiveisAssociados(cadRows.Select(r => r.IDControloAut).ToList(), ho.Connection);
                Trace.WriteLine("<<LoadNivelDesignadoOfSelfAndParent>>: " + new TimeSpan(DateTime.Now.Ticks - start).ToString());
            }
            catch (Exception ex) { Debug.WriteLine(ex); throw ex; }
            finally { ho.Dispose(); }

            return res;
        }
Пример #10
0
        public static List <CAAssociado> GetRelatedControloAut(List <GISADataset.ControloAutDicionarioRow> cadRows)
        {
            var res = new List <CAAssociado>();
            var ho  = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());

            try
            {
                var start = DateTime.Now.Ticks;
                res = DiplomaModeloRule.Current.GetCANiveisAssociados(cadRows.Select(r => r.IDControloAut).ToList(), ho.Connection);
                Trace.WriteLine("<<LoadNivelDesignadoOfSelfAndParent>>: " + new TimeSpan(DateTime.Now.Ticks - start).ToString());
            }
            catch (Exception ex) { Debug.WriteLine(ex); throw ex; }
            finally { ho.Dispose(); }

            return(res);
        }
Пример #11
0
        private void LoadNivel(long idNivel)
        {
            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
			try{
                DBAbstractDataLayer.DataAccessRules.NivelRule.Current.LoadNivelParents(idNivel, GisaDataSetHelper.GetInstance(), ho.Connection);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw;
            }
            finally
            {
                ho.Dispose();
            }
        }
Пример #12
0
        /*
         * Refresh do painel de apresentacao das metricas de espaco + pieChart
         */
        private void Display_MetrosLineares() {
            AutoEliminacaoRule.Info_UFs_Larguras ufs = new AutoEliminacaoRule.Info_UFs_Larguras();

            // Metros lineares totais:
            double Metros_lineares_totais = 0.0;
            this.globalConfigRow = (GISADataset.GlobalConfigRow)(GisaDataSetHelper.GetInstance().GlobalConfig.Rows[0]);
            if (this.globalConfigRow.IsMetrosLinearesTotaisNull())
                this.txt_metrosLinearesTotais.Text = "";
            else {
                Metros_lineares_totais = (double)this.globalConfigRow.MetrosLinearesTotais;
                this.txt_metrosLinearesTotais.Text = Metros_lineares_totais.ToString();
            }

            // Metros lineares ocupados:
            double Metros_lineares_ocupados = 0.0;
            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try {
                // UFS totais:
                ufs = AutoEliminacaoRule.Current.Get_Info_UFs_Larguras(ho.Connection);

                Metros_lineares_ocupados = AutoEliminacaoRule.Current.GetMetrosLinearesOcupados(ho.Connection);
                this.txt_metrosLinearesOcupados.Text = Metros_lineares_ocupados.ToString();
            }
            catch (Exception e) {
                Debug.WriteLine(e);
                throw;
            }
            finally { ho.Dispose(); }

            // Metros lineares livres:
            double Metros_lineares_livres = Metros_lineares_totais - Metros_lineares_ocupados;
            this.txt_metrosLinearesLivres.Text = Metros_lineares_livres.ToString();
            this.lblLivres.ForeColor = (Metros_lineares_livres <= 0.0 ? Color.Red : Color.Black);

            // Estimativa de ocupacao para ufs sem largura:
            double Metros_ocupados_estimados = ufs.Media_largura * ufs.TotalUFs_semLargura;
            if (Metros_lineares_livres > 0 && Metros_lineares_ocupados > 0)
                CreateChart(this.zedGraphPieChartControl, Metros_lineares_livres, Metros_lineares_ocupados, Metros_ocupados_estimados);
            else
                CreateEmptyChart(this.zedGraphPieChartControl);

            // UFs totais:
            this.txt_UFsTotais.Text = ufs.TotalUFs.ToString();
            this.txt_UFsSemLargura.Text = ufs.TotalUFs_semLargura.ToString();
        }
Пример #13
0
        public static bool isRemovable(GISADataset.NivelRow NivelRow, GISADataset.NivelRow NivelUpperRow, bool countUFs)
        {
            string filter = string.Empty;

            if (!countUFs)
            {
                filter = string.Format("rh.IDTipoNivelRelacionado != {0:d}", TipoNivelRelacionado.UF);
            }

            int  parentCount          = 0;
            int  directChildCount     = 0;
            bool moreThenOneParent    = false;
            bool notExistsDirectChild = false;
            bool connectionClose      = false;

            if (GisaDataSetHelper.GetConnection().State == ConnectionState.Closed)
            {
                connectionClose = true;
                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetTempConnection());
                try
                {
                    parentCount          = DBAbstractDataLayer.DataAccessRules.NivelRule.Current.getParentCount(NivelRow.ID.ToString(), ho.Connection);
                    directChildCount     = DBAbstractDataLayer.DataAccessRules.NivelRule.Current.getDirectChildCount(NivelRow.ID.ToString(), filter, ho.Connection);
                    moreThenOneParent    = parentCount > 1;
                    notExistsDirectChild = directChildCount == 0;
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    throw;
                }
                finally
                {
                    ho.Dispose();
                }
            }

            return(!(TipoNivel.isNivelOrganico(NivelRow) && TipoNivel.isNivelOrganico(NivelUpperRow)) &&
                   (TipoNivel.isNivelOrganico(NivelRow) ||
                    (NivelRow != null && NivelRow.IDTipoNivel == TipoNivel.LOGICO && notExistsDirectChild) ||
                    (TipoNivel.isNivelOrganico(NivelUpperRow) && connectionClose && !moreThenOneParent && notExistsDirectChild) ||
                    ((NivelUpperRow == null || NivelUpperRow.IDTipoNivel == TipoNivel.DOCUMENTAL) && connectionClose && notExistsDirectChild) ||
                    (NivelUpperRow != null && NivelUpperRow.IDTipoNivel == TipoNivel.ESTRUTURAL && NivelRow.IDTipoNivel == TipoNivel.DOCUMENTAL && connectionClose && notExistsDirectChild && !moreThenOneParent) //permitir apagar séries/documentos soltos só com um produtor e sem niveis descendentes
                   ));                                                                                                                                                                                            // o estado da ligação tem de se ser fechado para que não ocorram situações de deadlock na BD
        }
 public override void LoadData()
 {
     GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
     try
     {
         NivelRule.Current.LoadImagemIlustracao(CurrentContext.GrupoArquivo.ID, GisaDataSetHelper.GetInstance(), ho.Connection);
         currentGARow = CurrentContext.GrupoArquivo;
     }
     catch (Exception ex)
     {
         Trace.WriteLine(ex);
         throw;
     }
     finally
     {
         ho.Dispose();
     }
 }
 public override void LoadData()
 {
     var ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
     try
     {
         CurrentTrustee = CurrentContext.Trustee;
         if (CurrentTrustee != null)
             DepositoRule.Current.LoadDepositosPermissionsData(GisaDataSetHelper.GetInstance(), CurrentTrustee.ID, ho.Connection);
     }
     catch (Exception)
     {
         CurrentTrustee = null;
         return;
     }
     finally
     {
         ho.Dispose();
     }
 }
Пример #16
0
        public void LoadData()
        {
            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                FedoraRule.Current.LoadTitulos(GisaDataSetHelper.GetInstance(), ho.Connection);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.ToString());
                throw ex;
            }
            finally
            {
                ho.Dispose();
            }

            PopulateList(FilterTitle("",false));
        }
Пример #17
0
        public static bool NivelFoiMovimentado(long IDNivel)
        {
            bool foiMov = false;

            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                foiMov = MovimentoRule.Current.foiMovimentado(IDNivel, ho.Connection);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.ToString());
                throw;
            }
            finally
            {
                ho.Dispose();
            }

            return(foiMov);
        }
Пример #18
0
        public static string GetConteudoInformacional(GISADataset ds, GISADataset.NivelRow nivelUF)
        {
            var ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());

            try
            {
                DBAbstractDataLayer.DataAccessRules.UFRule.Current.LoadUFConteudoEstruturaData(ds, nivelUF.GetFRDBaseRows()[0].ID, ho.Connection);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw;
            }
            finally
            {
                ho.Dispose();
            }

            var ce = nivelUF.GetFRDBaseRows()[0].GetSFRDConteudoEEstruturaRows().FirstOrDefault();

            return(ce != null ? ce.ConteudoInformacional : "");
        }
Пример #19
0
        public static void Main() {
            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try {
                string fileName = "GISA_EAD_Test.xml";
                EADGenerator gen_to_test = new EADGenerator(fileName, ho.Connection);
                //long idNivel = 100317;
                //long idNivel = 1865;
                //long idNivel = 23;

                // GISA_CS7_FEUP:
                //long idNivel = 14;    // Pautas ...
                //long idNivel = 212;     // Secretaria
                //long idNivel = 178;     // Conselho directivo
                //long IDNivel_PAI = 214;
                //long idNivel = 215;     // Direcao de servicos academicos...
                long IDNivel_PAI = 220;     // FEUP
                long idNivel = 222;
                //long IDNivel_PAI = 19;     // FEUP
                //long idNivel = 52416;
                //long idNivel = 219;     // Seccao de pessoal
                //long idNivel = 168;     // (Serie) Comissao cooordenadora...

                //long idNivel = 102027;      // Para imagens:

                // GISA_CS6_CMGaia: 48326; 50600
                //long idNivel = 50066;   // Secretaria
                //long idNivel = 50570;   // Orlando Miranda
                //long idNivel = 46139;       // Presidência. 2002-2008

                gen_to_test.generate(IDNivel_PAI, idNivel);
                validate(fileName);
            }
            finally {
                ho.Dispose();
            }

        }
Пример #20
0
        public bool HasSDocs(long IDNivel)
        {
            long numSubDocs = 0;
            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                numSubDocs = PesquisaRule.Current.CountSubDocumentos(IDNivel, ho.Connection);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw;
            }
            finally
            {
                ho.Dispose();
            }

            return numSubDocs > 0;
        }
Пример #21
0
        private void ActivateDetalhesImagem()
        {
            ClearPreview();

            if (PesquisaList1.GetSelectedRows.Count() == 1)
            {
                ImagemEscolhida = null;
                lstImagens.Items.Clear();
                ClearPreview();
                trvODsFedora.Nodes.Clear();
                lstImagens.Items.Clear();
                lstImagens.DisplayMember = "Descricao";
                //var frdRow = PesquisaList1.SelectedItems[0].Tag as GISADataset.FRDBaseRow;
                var frdRow = PesquisaList1.SelectedRow as GISADataset.FRDBaseRow;
                var rhRow = frdRow.NivelRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().First();

                GisaDataSetHelper.ManageDatasetConstraints(false);

                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    DBAbstractDataLayer.DataAccessRules.PesquisaRule.Current.LoadImagemVolume(GisaDataSetHelper.GetInstance(), frdRow.ID, ho.Connection);
                    DBAbstractDataLayer.DataAccessRules.FedoraRule.Current.LoadObjDigitalData(GisaDataSetHelper.GetInstance(), frdRow.IDNivel, rhRow.IDTipoNivelRelacionado, ho.Connection);
                }
                finally
                {
                    ho.Dispose();
                }

                GisaDataSetHelper.ManageDatasetConstraints(true);

                var isModoPublicadoOnly = MasterPanelPesquisa.cbModulo.SelectedItem.Equals(TranslationHelper.FormatModPesquisaIntToText(ModuloPesquisa.Publicacao));

                // listar imagens que não do tipo Fedora
                lstImagens.Items.AddRange(frdRow.GetSFRDImagemRows().Where(r => !r.Tipo.Equals(FedoraHelper.typeFedora)).OrderBy(r => r.GUIOrder).ToArray());

                // listar imagens do tipo fedora
                var odRows = FedoraHelper.GetObjetosDigitais(frdRow);

                foreach (var odRow in odRows.OrderBy(r => r.GUIOrder))
                {
                    var node = new TreeNode(); ;
                    node.ImageIndex = 3;
                    node.SelectedImageIndex = 3;
                    node.Text = odRow.Titulo;
                    node.Tag = odRow;
                    var odRowsSimples = odRow.GetObjetoDigitalRelacaoHierarquicaRowsByObjetoDigitalObjetoDigitalRelacaoHierarquicaUpper().Select(r => r.ObjetoDigitalRowByObjetoDigitalObjetoDigitalRelacaoHierarquica).ToList();
                    if (odRowsSimples.Count > 0)
                    {
                        foreach (var odRowSimples in odRowsSimples.OrderBy(r => r.GUIOrder))
                        {
                            var perm = PermissoesHelper.CalculateEffectivePermissions(odRowSimples, SessionHelper.GetGisaPrincipal().TrusteeUserOperator.TrusteeRow, frdRow.NivelRow, PermissoesHelper.ObjDigOpREAD.TipoOperationRow);
                            if (perm == PermissoesHelper.PermissionType.ExplicitDeny || perm == PermissoesHelper.PermissionType.ImplicitDeny || (isModoPublicadoOnly && !odRowSimples.Publicado)) continue;

                            var subDocNode = new TreeNode();
                            subDocNode.Text = odRowSimples.Titulo;
                            subDocNode.Tag = odRowSimples;
                            subDocNode.ImageIndex = 3;
                            subDocNode.SelectedImageIndex = 3;

                            node.Nodes.Add(subDocNode);
                        }

                        if (node.Nodes.Count == 0) continue;

                        if (!isModoPublicadoOnly || !odRow.Publicado)
                            node.ForeColor = Color.Gray;

                        node.Expand();
                    }
                    else
                    {
                        var perm = PermissoesHelper.CalculateEffectivePermissions(odRow, SessionHelper.GetGisaPrincipal().TrusteeUserOperator.TrusteeRow, frdRow.NivelRow, PermissoesHelper.ObjDigOpREAD.TipoOperationRow);
                        if (perm == PermissoesHelper.PermissionType.ExplicitDeny || perm == PermissoesHelper.PermissionType.ImplicitDeny || (isModoPublicadoOnly && !odRow.Publicado)) continue;
                    }

                    trvODsFedora.Nodes.Add(node);
                }

                pnlDetalhesImagem.BringToFront();
            }
            else
                ToolBar_ButtonClick(this, new ToolBarButtonClickEventArgs(ToolBarButton2));
        }
Пример #22
0
		private string GetFRDBaseAsRTF(GISADataset.FRDBaseRow FRDBaseRow) {
			GisaDataSetHelper.ManageDatasetConstraints(false);

			StringBuilder Result = new StringBuilder();
            var cotas = new List<string>();
			GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
			try
			{
				string IDFRDbase = FRDBaseRow.ID.ToString();
				PesquisaRule.Current.LoadFRDBaseData(GisaDataSetHelper.GetInstance(), IDFRDbase, ho.Connection);

                if (FRDBaseRow.NivelRow.IDTipoNivel == TipoNivel.ESTRUTURAL)
                    DBAbstractDataLayer.DataAccessRules.ControloAutRule.Current.LoadControloAutFromNivel(GisaDataSetHelper.GetInstance(), FRDBaseRow.NivelRow.ID, ho.Connection);

                // Obter info sobre cota se for documento ou subdocumento
                var idTipoNivelRelacionado = FRDBaseRow.NivelRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().First().IDTipoNivelRelacionado;
                if (idTipoNivelRelacionado == TipoNivelRelacionado.D || idTipoNivelRelacionado == TipoNivelRelacionado.SD)
                    cotas = PesquisaRule.Current.LoadDocumentoCotas(IDFRDbase, ho.Connection);

				// --Identificação--
				Result.Append("\\fs36\\b{}Identificação\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}");
				// Codigo de Referência
				Result.Append(GetConditionalText("\\i{}Código de referencia: \\i0{}", 
                    DBAbstractDataLayer.DataAccessRules.NivelRule.Current.GetCodigoOfNivel(FRDBaseRow.NivelRow.ID, ho.Connection)[0].ToString(), "\\par{}"));
			}
			catch (Exception ex)
			{
				Trace.WriteLine(ex);
			}
			finally
			{
				ho.Dispose();
                GisaDataSetHelper.ManageDatasetConstraints(true);
			}

			// Nivel de descrição (TipoNivel)
			Result.Append(GetConditionalText("\\i{}Nível de descrição: \\i0{}", TipoNivelRelacionado.GetTipoNivelRelacionadoDaPrimeiraRelacaoEncontrada(FRDBaseRow.NivelRow).Designacao, "\\par{}"));
			// Título
			//Result.Append("\\i{}Designação: \\i0{}" + Nivel.GetDesignacao(FRDBaseRow.NivelRow) + "\\par{}");
            Result.Append("\\i{}Título: \\i0{}" + Nivel.GetDesignacao(FRDBaseRow.NivelRow) + "\\par{}");
			// Datas
			if (FRDBaseRow.GetSFRDDatasProducaoRows().Length == 1)
			{
                string inicioTexto = string.Empty;
                if (!FRDBaseRow.GetSFRDDatasProducaoRows()[0].IsInicioTextoNull())
                    inicioTexto = FRDBaseRow.GetSFRDDatasProducaoRows()[0].InicioTexto + " ";

                Result.Append("\\i{}Data(s) de produção: \\i0{}" + inicioTexto + GUIHelper.GUIHelper.FormatDateInterval(FRDBaseRow.GetSFRDDatasProducaoRows()[0]) + "\\par{}");
			}

            // Agrupador
            if (FRDBaseRow.GetSFRDAgrupadorRows().Length == 1)
                Result.Append(GetConditionalText("\\i{}Agrupador: \\i0{}", FRDBaseRow.GetSFRDAgrupadorRows()[0].Agrupador, "\\par{}"));
            
            //Dimensão do documento
            var dimSup = GisaDataSetHelper.GetInstance().SFRDDimensaoSuporte.Cast<GISADataset.SFRDDimensaoSuporteRow>()
                .SingleOrDefault(r => r.IDFRDBase == FRDBaseRow.ID);
            if (dimSup != null)
                Result.Append(GetConditionalText("\\i{}Dimensão: \\i0{}", dimSup["Nota"] == DBNull.Value ? "" : dimSup.Nota, "\\par{}"));

            // Cota do documento na UF
            if (cotas.Count > 0)
            {
                Result.AppendLine("\\i{}Cota: \\i0{}\\par{}");
                var cotasStr = new StringBuilder();
                cotas.ForEach(c => {
                    if (cotasStr.Length > 0)
                        cotasStr.Append("\\b, \\b0");
                    cotasStr.Append(c);
                });
                Result.Append(cotasStr);
                Result.Append("\\par{}");
            }

			// --Contexto--
			StringBuilder Contexto = new StringBuilder();
            if (FRDBaseRow.GetSFRDContextoRows().Length == 1)
			{
                if (FRDBaseRow.NivelRow.IDTipoNivel != TipoNivel.ESTRUTURAL)
                    Contexto.Append(GetConditionalText("\\i{}História administrativa: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDContextoRows()[0]["HistoriaAdministrativa"]), "\\par{}"));
                else
                {
                    GISADataset.ControloAutRow caRow = FRDBaseRow.NivelRow.GetNivelControloAutRows()[0].ControloAutRow;
                    GISADataset.ControloAutDatasExistenciaRow cadeRow = null;

                    if (caRow.GetControloAutDatasExistenciaRows().Length > 0)
                    {
                        cadeRow = caRow.GetControloAutDatasExistenciaRows()[0];
                        Contexto.Append(GetConditionalText("\\i{}Datas de existência: \\i0{}\\par{}", GUIHelper.GUIHelper.FormatDateInterval(cadeRow), "\\par{}"));
                    }

                    Contexto.Append(GetConditionalText("\\i{}História: \\i0{}\\par{}", string.Format("{0}", caRow["DescHistoria"]), "\\par{}"));
                    Contexto.Append(GetConditionalText("\\i{}Zona geográfica: \\i0{}\\par{}", string.Format("{0}", caRow["DescZonaGeografica"]), "\\par{}"));
                    Contexto.Append(GetConditionalText("\\i{}Estatuto legal: \\i0{}\\par{}", string.Format("{0}", caRow["DescEstatutoLegal"]), "\\par{}"));
                    Contexto.Append(GetConditionalText("\\i{}Funções, ocupações e atividades: \\i0{}\\par{}", string.Format("{0}", caRow["DescOcupacoesActividades"]), "\\par{}"));
                    Contexto.Append(GetConditionalText("\\i{}Enquadramento legal: \\i0{}\\par{}", string.Format("{0}", caRow["DescEnquadramentoLegal"]), "\\par{}"));
                    Contexto.Append(GetConditionalText("\\i{}Estrutura interna: \\i0{}\\par{}", string.Format("{0}", caRow["DescEstruturaInterna"]), "\\par{}"));
                    Contexto.Append(GetConditionalText("\\i{}Contexto geral: \\i0{}\\par{}", string.Format("{0}", caRow["DescContextoGeral"]), "\\par{}"));
                    Contexto.Append(GetConditionalText("\\i{}Outras informações relevantes: \\i0{}\\par{}", string.Format("{0}", caRow["DescOutraInformacaoRelevante"]), "\\par{}"));
                }

                Contexto.Append(GetConditionalText("\\i{}História arquivística: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDContextoRows()[0]["HistoriaCustodial"]), "\\par{}"));
                Contexto.Append(GetConditionalText("\\i{}Fonte imediata de aquisicao: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDContextoRows()[0]["FonteImediataDeAquisicao"]), "\\par{}"));
                GISADataset.RelacaoHierarquicaRow[] rhrows = FRDBaseRow.NivelRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica();
                if (rhrows.Length > 0)
                {
                    Int64 idT = FRDBaseRow.NivelRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica()[0].TipoNivelRelacionadoRow.ID;
                    if ((idT == TipoNivelRelacionado.SR) || (idT == TipoNivelRelacionado.SSR))
                    {
                        if (System.Convert.ToBoolean(FRDBaseRow.GetSFRDContextoRows()[0]["SerieAberta"]))
                            Contexto.Append(GetConditionalText("\\i{}Condição da Série: \\i0{}\\par{}", string.Format("{0}", "Aberta"), "\\par{}"));
                        else
                            Contexto.Append(GetConditionalText("\\i{}Condição da Série: \\i0{}\\par{}", string.Format("{0}", "Fechada"), "\\par{}"));
                    }
                }
			}

            if (FRDBaseRow.NivelRow.IDTipoNivel == TipoNivel.ESTRUTURAL)
            {
                Result.Append(Section("\\fs36\\b{}Contexto\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", Contexto.ToString()));
            }
            else
            {
                GetAutores(FRDBaseRow.NivelRow);
                GetEntidadesProdutoras(FRDBaseRow.NivelRow);

                Result.Append(Section("\\fs36\\b{}Contexto\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}",
                    GetConditionalText("\\i{}Autores: \\i0{}", printCAs(Autores), Contexto.ToString()),
                    GetConditionalText("\\i{}Entidade produtora: \\i0{}", printCAs(EPs), Contexto.ToString())
                    ));
            }

            // --ConteudoEstrutura--

            Result.Append(Section("\\fs36\\b{}Conteúdo e estrutura\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}",
                GetConditionalText("\\i{}Tipologia informacional: \\i0{}\\par{}", GetTermosIndexados(FRDBaseRow, TipoNoticiaAut.TipologiaInformacional), "")));

            // -- Conteudo caso seja um processo de obras --
            ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            bool processoObras = IsRelatedToProcessoObras(FRDBaseRow, ho.Connection);
            // Dados estruturados de processos de obras:

            try {
                if (processoObras) {
                    //Result.Append(GetConditionalText("", "\\i{}Conteúdo informacional: \\i0{}\\par{}", "\\li128\\par\\li0{}"));
                    Result.Append(GetConditionalText("", "\\i{}Conteúdo informacional: \\i0{}\\par{}", ""));
                    Result.Append(gen_content_PROCESSO_OBRAS(FRDBaseRow.IDNivel, ho.Connection));
                }
            }
            catch (Exception ex) {
                Trace.WriteLine(ex);
            }
            finally {
                ho.Dispose();
                GisaDataSetHelper.ManageDatasetConstraints(true);
            }

            string ConteudoEstrutura = "";

			if (FRDBaseRow.GetSFRDConteudoEEstruturaRows().Length == 1)
			{
                if (!processoObras)
                    ConteudoEstrutura += GetConditionalText("\\i{}Conteúdo informacional: \\i0{}\\par{}", string.Format(" {0}", FRDBaseRow.GetSFRDConteudoEEstruturaRows()[0]["ConteudoInformacional"]), "\\li128\\par\\li0{}");
                else
                    ConteudoEstrutura += GetConditionalText("\\i{}Observações: \\i0{}\\par{}", string.Format(" {0}", FRDBaseRow.GetSFRDConteudoEEstruturaRows()[0]["ConteudoInformacional"]), "\\li128\\par\\li0{}");

				ConteudoEstrutura += GetConditionalText("\\i{}Diploma: \\i0{}\\par{}", GetTermosIndexados(FRDBaseRow, TipoNoticiaAut.Diploma), "\\li128\\li0{}");
				ConteudoEstrutura += GetConditionalText("\\i{}Modelo: \\i0{}\\par{}", GetTermosIndexados(FRDBaseRow, TipoNoticiaAut.Modelo), "\\li128\\li0{}");

				//Avaliação
				if (FRDBaseRow.GetSFRDAvaliacaoRows().Length > 0)
				{
					string ava = null;
                    var sfrda = FRDBaseRow.GetSFRDAvaliacaoRows()[0];

                    ConteudoEstrutura += GetConditionalText("\\i{}Observações/Enquadramento legal: \\i0{}\\par{}", string.Format("{0}", sfrda["Observacoes"]), "\\li128\\par\\li0{}");

                    if (sfrda.IsPreservarNull() && sfrda.IsPrazoConservacaoNull())
						ava = "";
					else
					{
                        if (sfrda.Preservar)
							ava = "Preservar.";
						else
                            ava = "Eliminar após " + (sfrda.IsPrazoConservacaoNull() ? "0" : sfrda.PrazoConservacao.ToString()) + " ano(s).";
					}    

					if (ava.CompareTo("") != 0)
						ConteudoEstrutura += GetConditionalText("\\i{}Avaliação: \\i0{}\\par{}", ava, "\\li128\\li0{}\\par{}");

                    ConteudoEstrutura += "\\i{}Publicado: \\i0{}\\par{}" + Concorrencia.translateBoolean(FRDBaseRow.GetSFRDAvaliacaoRows()[0].Publicar) + "\\li128\\par\\li0{}";
                    ConteudoEstrutura += GetConditionalText("\\i{}Referência na tabela de avaliação: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDAvaliacaoRows()[0]["RefTabelaAvaliacao"]), "\\li128\\li0{}\\par{}");

                    if (!sfrda.IsIDAutoEliminacaoNull())
                        ConteudoEstrutura += "\\i{}Auto de eliminação: \\i0{}\\par{}" + sfrda.AutoEliminacaoRow.Designacao + "\\li128\\li0{}\\par{}";
				}

                ConteudoEstrutura += GetConditionalText("\\i{}Incorporações: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDConteudoEEstruturaRows()[0]["Incorporacao"]), "\\li128\\par\\li0{}");

                Result.Append(ConteudoEstrutura);
			}

			// --Condições de acesso e de utilização--
			if (FRDBaseRow.GetSFRDCondicaoDeAcessoRows().Length == 1)
			{
				// Linguas
				string langs = "";
                foreach (GISADataset.SFRDLinguaRow lang in FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0].GetSFRDLinguaRows())
					langs += lang.Iso639Row.LanguageNameEnglish + ", ";
			
                if (langs.Length > 2)
					langs = langs.Substring(0, langs.Length - 2);

				//Alfabetos
				string alfs = "";
                foreach (GISADataset.SFRDAlfabetoRow alf in FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0].GetSFRDAlfabetoRows())
					alfs += alf.Iso15924Row.ScriptNameEnglish + ", ";
				
                if (alfs.Length > 2)
					alfs = alfs.Substring(0, alfs.Length - 2);

				//Formas Suporte/Acondicionamento
				string fsas = "";
                foreach (GISADataset.SFRDFormaSuporteAcondRow fsa in FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0].GetSFRDFormaSuporteAcondRows())
					fsas += fsa.TipoFormaSuporteAcondRow.Designacao + ", ";
				
                if (fsas.Length > 2)
					fsas = fsas.Substring(0, fsas.Length - 2);

				//Materiais de Suporte
				string mats = "";
                foreach (GISADataset.SFRDMaterialDeSuporteRow mat in FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0].GetSFRDMaterialDeSuporteRows())
					mats += mat.TipoMaterialDeSuporteRow.Designacao + ", ";

				if (mats.Length > 2)
					mats = mats.Substring(0, mats.Length - 2);


				//Tecnicas de Registo
				string tecs = "";
                foreach (GISADataset.SFRDTecnicasDeRegistoRow tec in FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0].GetSFRDTecnicasDeRegistoRows())
					tecs += tec.TipoTecnicasDeRegistoRow.Designacao + ", ";

				if (tecs.Length > 2)
					tecs = tecs.Substring(0, tecs.Length - 2);

				//Estado de Conservação
				string cons = "";
                foreach (GISADataset.SFRDEstadoDeConservacaoRow con in FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0].GetSFRDEstadoDeConservacaoRows())
					cons += con.TipoEstadoDeConservacaoRow.Designacao + ", ";

				if (cons.Length > 2)
					cons = cons.Substring(0, cons.Length - 2);

				Result.Append(Section("\\fs36\\b{}Condições de acesso e de utilização\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("\\i{}Condições de acesso: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0]["CondicaoDeAcesso"]), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Condições de reprodução: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0]["CondicaoDeReproducao"]), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Linguas: \\i0{}\\par{}", string.Format("{0}", langs), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Alfabetos: \\i0{}\\par{}", string.Format("{0}", alfs), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Formas de Suporte / Acondicionamento: \\i0{}\\par{}", string.Format("{0}", fsas), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Materiais de Suporte: \\i0{}\\par{}", string.Format("{0}", mats), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Técnicas de Registo: \\i0{}\\par{}", string.Format("{0}", tecs), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Estado de Conservação: \\i0{}\\par{}", string.Format("{0}", cons), "\\li128\\par\\li0{}"), GetConditionalText("\\i{}Instrumentos de pesquisa: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDCondicaoDeAcessoRows()[0]["AuxiliarDePesquisa"]), "\\li128\\par\\li0{}")));
            }

			// --Documentação associada--
			if (FRDBaseRow.GetSFRDDocumentacaoAssociadaRows().Length > 0)
				Result.Append(Section("\\fs36\\b{}Documentação associada\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("\\i{}Existência e localização de originais: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDDocumentacaoAssociadaRows()[0]["ExistenciaDeOriginais"]), "\\li128\\par\\li0{}") + GetConditionalText("\\i{}Existência e localização de cópias: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDDocumentacaoAssociadaRows()[0]["ExistenciaDeCopias"]), "\\li128\\par\\li0{}") + GetConditionalText("\\i{}Unidades de Descrição: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDDocumentacaoAssociadaRows()[0]["UnidadesRelacionadas"]), "\\li128\\par\\li0{}") + GetConditionalText("\\i{}Notas de Publicação: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.GetSFRDDocumentacaoAssociadaRows()[0]["NotaDePublicacao"]), "\\li128\\par\\li0{}")));

            // --Notas--
			if (FRDBaseRow.GetSFRDNotaGeralRows().Length > 0)
				Result.Append(Section("\\fs36\\b{}Nota Geral\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", GetConditionalText("", string.Format("{0}", FRDBaseRow.GetSFRDNotaGeralRows()[0]["NotaGeral"]), "\\li128\\par\\li0{}")));

			// --Controlo de Descrição--
			if (! (FRDBaseRow.IsRegrasOuConvencoesNull()))
			{
				string lastEdit = "";
				if (GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao.Select("IdFRDBase =" + FRDBaseRow.ID.ToString(), "DataEdicao DESC").Length > 0)
					lastEdit = ((GISADataset.FRDBaseDataDeDescricaoRow)(GisaDataSetHelper.GetInstance().FRDBaseDataDeDescricao.Select("IdFRDBase =" + FRDBaseRow.ID.ToString(), "DataEdicao DESC")[0])).DataEdicao.ToString();

				Result.Append(Section("\\fs36\\b{}Controlo de Descrição\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}", 
                    GetConditionalText("\\i{}Regras e Convenções: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.RegrasOuConvencoes), "\\li128\\par\\li0{}") +
                    GetConditionalText("\\i{}Notas do arquivista: \\i0{}\\par{}", string.Format("{0}", FRDBaseRow.NotaDoArquivista), "\\li128\\par\\li0{}") + 
                    GetConditionalText("\\i{}Data da última edição: \\i0{}\\par{}", string.Format("{0}", lastEdit), "\\li128\\par\\li0{}")));
			}

			// --Indexação--
            Result.Append(Section("\\fs36\\b{}Indexação\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}",
                GetConditionalText("\\i{}Conteúdos: \\i0{}\\par{}", GetTermosIndexados_OutrasFormas(FRDBaseRow), "")));
            
            // Acrescentar informação nos detalhes dos resultados da pesquisa de UAs:
            // Informação de requisição, se estiver requisitada e não devolvida. Qual a requisição, a data e a entidade e as notas.
            ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                //string ID = FRDBaseRow.ID.ToString();
                if (MovimentoRule.Current.estaRequisitado(FRDBaseRow.IDNivel, ho.Connection))
                {
                    MovimentoRule.RequisicaoInfo requisicao = MovimentoRule.Current.getRequisicaoInfo(FRDBaseRow.IDNivel, ho.Connection);

                    Result.Append("\\fs36\\b{}Requisição:\\b0{}\\fs24\\sb196\\sa48\\par{}\\sb0\\sa0{}");
                    // Codigo de movimento
                    Result.Append(GetConditionalText("\\i{}Movimento: \\i0{}", requisicao.idMovimento.ToString(), "\\par{}"));
                    Result.Append(GetConditionalText("\\i{}Data: \\i0{}", requisicao.data.ToString(), "\\par{}"));
                    Result.Append(GetConditionalText("\\i{}Entidade: \\i0{}", requisicao.entidade, "\\par{}"));
                    Result.Append(GetConditionalText("\\i{}Notas: \\i0{}", requisicao.notas, "\\par{}"));
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
            }
            finally
            {
                ho.Dispose();
            }

			return Result.ToString();
		}
Пример #23
0
        private void ExecuteFilter()
        {
            PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save();
            PersistencyHelper.cleanDeletedData();
            if (successfulSave == PersistencyHelper.SaveResult.unsuccessful)
                return;
            else if (successfulSave == PersistencyHelper.SaveResult.successful)
                GISA.Search.Updater.updateUnidadeFisica(CurrentNivel.GetFRDBaseRows()[0].NivelRow.ID);

            if ((FilterTipoNivelRelacionado == -1) && (TextFilterDesignacao == string.Empty))
            {
                filtered = false;
                filter.Clear();
                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    ordem = FRDRule.Current.LoadUFUnidadesDescricaoData(GisaDataSetHelper.GetInstance(), CurrentNivel.ID, ho.Connection);
                    detalhes = FRDRule.Current.LoadUFUnidadesDescricaoDetalhe(GisaDataSetHelper.GetInstance(), CurrentNivel.ID, SessionHelper.GetGisaPrincipal().TrusteeUserOperator.ID, ho.Connection);
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    throw;
                }
                finally
                {
                    ho.Dispose();
                }
            }
            else
            {
                filtered = true;
                filter.Clear();
                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    ordem = FRDRule.Current.LoadUFUnidadesDescricaoData(GisaDataSetHelper.GetInstance(), CurrentNivel.ID, ho.Connection);
                    detalhes = FRDRule.Current.LoadUFUnidadesDescricaoDetalhe(GisaDataSetHelper.GetInstance(), CurrentNivel.ID, SessionHelper.GetGisaPrincipal().TrusteeUserOperator.ID, ho.Connection);
                    filter = FRDRule.Current.FilterUFUnidadesDescricao(TextFilterDesignacao, FilterTipoNivelRelacionado, CurrentNivel.ID, ho.Connection);
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    throw;
                }
                finally
                {
                    ho.Dispose();
                }
            }

            RepopulateNiveisAssociados();
        }
Пример #24
0
		private void AddDetalhe(GISADataset.NivelRow nRow, string nCod)
		{
			if (detalhes[nRow.ID] == null)
			{
				ArrayList aux = new ArrayList();
				GISADataset.SFRDDatasProducaoRow sfrddprow = null;
				string ia = null;
				string im = null;
				string id = null;
				string fa = null;
				string fm = null;
				string fd = null;

				if (nRow.GetFRDBaseRows()[0].GetSFRDDatasProducaoRows().Length > 0)
				{
					sfrddprow = (GISADataset.SFRDDatasProducaoRow)(nRow.GetFRDBaseRows()[0].GetSFRDDatasProducaoRows()[0]);

					if (sfrddprow.IsInicioAnoNull())
						ia = "";
					else
						ia = sfrddprow.InicioAno;

					if (sfrddprow.IsInicioMesNull())
						im = "";
					else
						im = sfrddprow.InicioMes;

					if (sfrddprow.IsInicioDiaNull())
						id = "";
					else
						id = sfrddprow.InicioDia;

					if (sfrddprow.IsFimAnoNull())
						fa = "";
					else
						fa = sfrddprow.FimAno;

					if (sfrddprow.IsFimMesNull())
						fm = "";
					else
						fm = sfrddprow.FimMes;

					if (sfrddprow.IsFimDiaNull())
						fd = "";
					else
						fd = sfrddprow.FimDia;
				}
				else
				{
					ia = "";
					im = "";
					id = "";
					fa = "";
					fm = "";
					fd = "";
				}

                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    if (nRow.IDTipoNivel == 3)
                        aux.Add(nRow.GetNivelDesignadoRows()[0].Designacao);
                    else
                    {
                        DBAbstractDataLayer.DataAccessRules.NivelRule.Current.FillNivelControloAutRows(GisaDataSetHelper.GetInstance(), nRow.ID, ho.Connection);
                        
                        if (nRow.GetNivelControloAutRows().Length > 0)
                            aux.Add(nRow.GetNivelControloAutRows()[0].ControloAutRow.GetControloAutDicionarioRows()[0].DicionarioRow.Termo);
                        else if (nRow.GetNivelDesignadoRows().Length > 0)
                            aux.Add(nRow.GetNivelDesignadoRows()[0].Designacao);
                    }

                    aux.Add(nRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica()[0].TipoNivelRelacionadoRow.ID);
                    aux.Add(ia);
                    aux.Add(im);
                    aux.Add(id);
                    aux.Add(fa);
                    aux.Add(fm);
                    aux.Add(fd);
                    aux.Add(nCod);
                    aux.Add("1"); // Se aparece aqui é porque temos permissao...

                    if (MovimentoRule.Current.estaRequisitado(nRow.ID, ho.Connection))
                        aux.Add(true);
                    else
                        aux.Add(false);
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    throw;
                }
                finally
                {
                    ho.Dispose();
                }

				detalhes.Add(nRow.ID, aux);
			}
		}
Пример #25
0
		private void ShowSelection(MasterPanelPesquisa MasterPanel)
		{
			ToolBar_ButtonClick(this, new ToolBarButtonClickEventArgs(ToolBarButton2));
			GISADataset.RelacaoHierarquicaRow rhRow = null;

			var ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
			try
			{
				if (MasterPanel.cnList.SelectedRelacaoHierarquica != null)
				{
					rhRow = MasterPanel.cnList.SelectedRelacaoHierarquica;

					if (TipoNivelRelacionado.GetTipoNivelRelacionadoFromRelacaoHierarquica(rhRow).IDTipoNivel != TipoNivel.DOCUMENTAL)
						return;

					PesquisaRule.Current.LoadSelectedData(GisaDataSetHelper.GetInstance(), rhRow.ID, Convert.ToInt64(TipoFRDBase.FRDOIRecolha), ho.Connection);
				}

				// se não existir um nó selecionado para o nivel do nó selecionado ignora-se a chamada a este metodo
				if (rhRow == null)
					return;

				try
				{
					// este teste relevou-se necessário para algumas sequencias de acções faziam o TopLevelControl ser null quando chegavamos a este ponto
					if (TopLevelControl != null)
						((frmMain)TopLevelControl).EnterWaitMode();
					this.lblFuncao.Text = string.Format("selecionado {0}", rhRow.TipoNivelRelacionadoRow.Designacao);
					this.lblFuncao.Update();					

				}
				catch (Exception Ex)
				{
					Trace.WriteLine(Ex);
				}
				finally
				{
					if (TopLevelControl != null)
						((frmMain)TopLevelControl).LeaveWaitMode();
				}
			}
			catch (Exception ex)
			{
				Trace.WriteLine(ex);
				throw;
			}
			finally
			{
				ho.Dispose();
			}
		}
Пример #26
0
		private void ExecuteQuery(MasterPanelPesquisa MasterPanel)
		{
			ToolBar_ButtonClick(this, new ToolBarButtonClickEventArgs(ToolBarButton2));

			try
			{
				((frmMain)TopLevelControl).EnterWaitMode();
				this.lblFuncao.Text = string.Format("Resultados da pesquisa (em curso)");
				this.lblFuncao.Update();

				GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
				try
				{
					resultNumber = 0;
					bool ShowResults = true;

					long calc = DateTime.Now.Ticks;

					try
					{
						long user = SessionHelper.GetGisaPrincipal().TrusteeUserOperator.ID;
						resultNumber = ExecuteSearch(ho.Connection);
					}
					catch (Exception ex)
					{
                        MessageBox.Show("Não foi possível completar a pesquisa solicitada. " + Environment.NewLine + "Erro: " + ex.Message, "Determinação dos resultados de pesquisa", MessageBoxButtons.OK, MessageBoxIcon.Warning);						
						ShowResults = false;
						Debug.WriteLine(ex);
                        throw;
					}
					Debug.WriteLine("<<cálculo da pesquisa>>: " + new TimeSpan(DateTime.Now.Ticks - calc).ToString());

					if (ShowResults)
					{
						Trace.WriteLine(string.Format("Found {0} results from search server.", resultNumber));

						calc = DateTime.Now.Ticks;
						PesquisaList1.ReloadList();
                        PesquisaList1.NewSearch = false;
                        resultNumber = PesquisaList1.NrResults;

                        Trace.WriteLine(string.Format("{0} results after filter permissions and expired docs.", resultNumber));

						Debug.WriteLine("<<Popular resultados da pesquisa>>: " + new TimeSpan(DateTime.Now.Ticks - calc).ToString());

						this.lblFuncao.Text = string.Format("Resultados da pesquisa ({0} {1})", resultNumber, ((resultNumber == 1) ? "descrição" : "descrições"));
					}
					else
					{
						resultNumber = 0;
						this.lblFuncao.Text = string.Format("Resultados da pesquisa");
					}
				}
				catch (Exception ex)
				{
					Trace.WriteLine(ex);
					this.lblFuncao.Text = string.Format("Resultados da pesquisa");
				}
				finally
				{
					ho.Dispose();
				}
			}
			catch (Exception Ex)
			{
				Trace.WriteLine(Ex);
				this.lblFuncao.Text = string.Format("Resultados da pesquisa");
			}
			finally
			{
				((frmMain)TopLevelControl).LeaveWaitMode();
			}
		}
Пример #27
0
        private void SelectionChanged(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;

            if (this.PesquisaList1.GetSelectedRows.Count() > 0)
            {
                GISADataset.FRDBaseRow frdRow = null;
                GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                try
                {
                    //GISADataset.NivelRow nivelRow = ((GISADataset.FRDBaseRow)e.ItemToBeSelected.Tag).NivelRow;
                    //GISADataset.NivelRow nivelRow = ((GISADataset.FRDBaseRow)_r.Cells[PesquisaDataGrid.COL_FRDBASE].Value).NivelRow;
                    frdRow = (GISADataset.FRDBaseRow)(this.PesquisaList1.SelectedRow);


                    bool nvIsDeleted = PesquisaRule.Current.isNivelDeleted(GisaDataSetHelper.GetInstance(), frdRow.NivelRow.ID, ho.Connection);
                    PesquisaRule.Current.LoadRHParentsSelectedResult(GisaDataSetHelper.GetInstance(), frdRow.NivelRow.ID, ho.Connection);
                    if (!nvIsDeleted)
                    {
                        panelInfoEPs1.ClearAll();
                        panelInfoEPs1.BuildTree(frdRow.NivelRow, ho.Connection);
                    }
                    else
                        MessageBox.Show("O elemento selecionado foi apagado por outro utilizador." + System.Environment.NewLine + "Por esse motivo não é possível apresentar qualquer detalhe sobre esse elemento", "Seleção de resultados da pesquisa", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    throw;
                }
                finally
                {
                    ho.Dispose();
                }
                UpdateToolBarButtons(frdRow.NivelRow);
            }
            else
            {
                panelInfoEPs1.ClearAll();
                UpdateToolBarButtons();
            }
            
            this.Cursor = Cursors.Default;

        }
Пример #28
0
		private static string GetDesignacaoInDataSet(GISADataset.NivelRow Nivel)
		{
			bool nivelOrganico = isNivelOrganico(Nivel);
			GisaDataSetHelper.HoldOpen ho = null;
			if (! nivelOrganico)
			{
				if (Nivel.GetNivelDesignadoRows().Length == 0)
				{
					ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
					try
					{
						NivelRule.Current.FillNivelDesignado(GisaDataSetHelper.GetInstance(), Nivel.ID, ho.Connection);
					}
					catch (Exception ex)
					{
						Trace.WriteLine(ex);
						throw;
					}
					finally
					{
						ho.Dispose();
					}
				}
				Debug.Assert(Nivel.GetNivelDesignadoRows().Length > 0);
				return Nivel.GetNivelDesignadoRows()[0].Designacao;
			}
			if (nivelOrganico)
			{
				if (Nivel.GetNivelControloAutRows().Length == 0 || 
					Nivel.GetNivelControloAutRows()[0].ControloAutRow.GetControloAutDicionarioRows().Length == 0)
				{
					ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
					try
					{
						NivelRule.Current.FillNivelControloAutRows(GisaDataSetHelper.GetInstance(), Nivel.ID, ho.Connection);
					}
					catch (Exception ex)
					{
						Trace.WriteLine(ex);
						throw;
					}
					finally
					{
						ho.Dispose();
					}
				}
				Debug.Assert(Nivel.GetNivelControloAutRows().Length > 0);
				Debug.Assert(Nivel.GetNivelControloAutRows()[0].ControloAutRow.GetControloAutDicionarioRows().Length > 0);
				foreach (GISADataset.ControloAutDicionarioRow cad in Nivel.GetNivelControloAutRows()[0].ControloAutRow.GetControloAutDicionarioRows())
				{
					if (cad.IDTipoControloAutForma == (long)TipoControloAutForma.FormaAutorizada)
					{
						return cad.DicionarioRow.Termo;
					}
				}
			}
#if (DEBUG)
			Debug.WriteLine("Nivel ID=", Nivel.ID.ToString());
			Debug.WriteLine("Nivel IDTipoNivel=", Nivel.IDTipoNivel.ToString());
			throw new ArgumentException("details not found in Nivel.Table.DataSet", "Nivel");
#else
			{
			Console.WriteLine("details not found in Nivel.Table.DataSet / Tipo=" + Nivel.IDTipoNivel.ToString());
			return "";
			}
#endif
		}
Пример #29
0
		private void acceptAssociation(GISADataset.NivelRow nRow, string codigoCompleto)
		{
			// validar a associação: só se pode associar um nível que pertença à mesma entidade detentadora da unidade física
            //ArrayList entidadesDetentoras = new ArrayList();
            //GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            //try
            //{
            //    entidadesDetentoras = DBAbstractDataLayer.DataAccessRules.UFRule.Current.GetEntidadeDetentoraForNivel(nRow.ID, ho.Connection);
            //}
            //catch (Exception ex)
            //{
            //    Trace.WriteLine(ex);
            //    throw;
            //}
            //finally
            //{
            //    ho.Dispose();
            //}

            //if (! (entidadesDetentoras.Contains(CurrentNivel.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica()[0].IDUpper)))
            //{
            //    MessageBox.Show("Não é permitido associar uma unidade de descrição de uma " + System.Environment.NewLine + "entidade detentora diferente da unidade física seleccionada.", "Adicionar Unidades de Descrição", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            //    return;
            //}

			// aceitar o drop apenas se se tratar de um Nivel ainda não associado
			if (nRow.GetFRDBaseRows().Length > 0)
			{
				GISADataset.SFRDUnidadeFisicaRow[] frdufRows = (GISADataset.SFRDUnidadeFisicaRow[])(GisaDataSetHelper.GetInstance().SFRDUnidadeFisica.Select(string.Format("IDFRDBase={0} AND IDNivel={1}", nRow.GetFRDBaseRows()[0].ID, CurrentNivel.ID), "", DataViewRowState.Deleted));
				if (frdufRows.Length > 0)
				{
					frdufRows[0].RejectChanges();
                    AddDetalhe(nRow, nCod);
                    ListViewItem item = PopulateAssociacao(frdufRows[0]);
                    lstVwNiveisAssoc.Items.Insert(0, item);
                    item.EnsureVisible();
				}
				else
				{
					if (GisaDataSetHelper.GetInstance().SFRDUnidadeFisica.Select(string.Format("IDFRDBase={0} AND IDNivel={1}", nRow.GetFRDBaseRows()[0].ID, CurrentNivel.ID)).Length == 0)
					{
						GISADataset.SFRDUnidadeFisicaRow frdufRow = null;
						frdufRow = AssociaNivel(nRow);
						AddDetalhe(nRow, nCod);
						ordem.Insert(0, frdufRow.IDFRDBase);
						ListViewItem item = PopulateAssociacao(frdufRow);
						lstVwNiveisAssoc.Items.Insert(0, item);
						item.EnsureVisible();
					}
				}
			}
			else
			{
				var ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
				try
				{
					FRDRule.Current.LoadFRD(GisaDataSetHelper.GetInstance(), nRow.ID, ho.Connection);
				}
				catch (Exception ex)
				{
					Trace.WriteLine(ex);
					throw;
				}
				finally
				{
					ho.Dispose();
				}

				if (nRow.GetFRDBaseRows().Length > 0 && nRow.GetFRDBaseRows()[0].isDeleted == 1)
					MessageBox.Show("O nível selecionado foi apagado por outro utilizador " + System.Environment.NewLine + "motivo pelo qual não é possível terminar a associação", "Unidades de Descrição", MessageBoxButtons.OK, MessageBoxIcon.Warning);
				else
				{
					if (nRow.GetFRDBaseRows().Length == 0)
					{
						// Criar uma nova FRD para o nível em questão.
						GISADataset.FRDBaseRow frdRow = GisaDataSetHelper.GetInstance().FRDBase.NewFRDBaseRow();
						frdRow.NivelRow = nRow;
						frdRow.TipoFRDBaseRow = (GISADataset.TipoFRDBaseRow)(GisaDataSetHelper.GetInstance().TipoFRDBase.Select(string.Format("ID={0:d}", TipoFRDBase.FRDOIRecolha))[0]);
						frdRow.NotaDoArquivista = string.Empty;
						frdRow.RegrasOuConvencoes = string.Empty;
						GisaDataSetHelper.GetInstance().FRDBase.AddFRDBaseRow(frdRow);
					}

					GISADataset.SFRDUnidadeFisicaRow frdufRow = null;
					frdufRow = AssociaNivel(nRow);
					AddDetalhe(nRow, codigoCompleto);
					ordem.Insert(0, frdufRow.IDFRDBase);
					ListViewItem item = PopulateAssociacao(frdufRow);
					lstVwNiveisAssoc.Items.Insert(0, item);
					item.EnsureVisible();
				}
			}
		}
Пример #30
0
		private void ToolBar_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e) {
			this.Cursor = Cursors.WaitCursor;
			if (! (e.Button == ToolBarButtonReports)) {
				foreach (ToolBarButton b in ToolBar.Buttons) {
					if (b.Style == ToolBarButtonStyle.ToggleButton)
						b.Pushed = e.Button == b;
				}
			}

			//Antes de permitir a visualização de qualquer informação acerca da Unidade Física seleccionada
			//é necessário garantir que esta ainda não foi apagada por algum utilizador
			bool nvIsDeleted = false;
			if (PesquisaList1.GetSelectedRows.Count() > 0)
			{
				GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
				try
				{
					//nvIsDeleted = PesquisaRule.Current.isNivelDeleted(GisaDataSetHelper.GetInstance(), ((GISADataset.FRDBaseRow)(PesquisaList1.SelectedItems[0].Tag)).IDNivel, ho.Connection);
                    nvIsDeleted = PesquisaRule.Current.isNivelDeleted(GisaDataSetHelper.GetInstance(), ((GISADataset.FRDBaseRow)PesquisaList1.SelectedRow).IDNivel, ho.Connection);
				}
				catch (Exception ex)
				{
					Trace.WriteLine(ex);
					throw ex;
				}
				finally
				{
					ho.Dispose();
				}
			}

			if (! nvIsDeleted)
			{
                // Limpar browser e PDFs temporários
                controlFedoraPdfViewer.Clear();
                ImageHelper.DeleteFilteredFiles("*.pdf");

				if (e.Button == ToolBarButton2)
					ActivateResultados();
				else if (e.Button == ToolBarButton3)
					ActivateDetalhesTexto();
				else if (e.Button == ToolBarButton4)
					ActivateDetalhesImagem();
				else if (e.Button == ToolBarButton5)
					ActivateDetalhesUnidadesFisicas();
				else if (e.Button == ToolBarButtonReports)
				{
					if (e.Button.DropDownMenu != null && e.Button.DropDownMenu is ContextMenu)
						((ContextMenu)e.Button.DropDownMenu).Show(ToolBar, new System.Drawing.Point(e.Button.Rectangle.X, e.Button.Rectangle.Y + e.Button.Rectangle.Height));
				}
                else if (e.Button == ToolBarButton_InfoEPs)
                    ActivateDetalhesEP();
                else if (e.Button == ToolBarButtonSDocs)
                    ActivateDetalhesSDocs();
			}
			else
			{
				MessageBox.Show("O elemento selecionado foi apagado por outro utilizador." + System.Environment.NewLine + "Por esse motivo não é possível apresentar qualquer detalhe sobre esse elemento", "Seleção de resultados da pesquisa", MessageBoxButtons.OK, MessageBoxIcon.Warning);
				ToolBar_ButtonClick(this, new ToolBarButtonClickEventArgs(ToolBarButton2));
			}

			this.Cursor = Cursors.Arrow;
		}
Пример #31
0
		private void DeleteItem()
		{
            var lst = lstVwNiveisAssoc.SelectedItems.Cast<ListViewItem>()
                .Select(lvi => lvi.Tag).Cast<GISADataset.SFRDUnidadeFisicaRow>()
                .Select(sfrduf => sfrduf.FRDBaseRow.IDNivel).ToList();
            
            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                DBAbstractDataLayer.DataAccessRules.NivelRule.Current.LoadNivelRelacoesHierarquicas(GisaDataSetHelper.GetInstance(), lst, ho.Connection);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw;
            }
            finally
            {
                ho.Dispose();
            }

            lstVwNiveisAssoc.SelectedItems.Cast<ListViewItem>().ToList()
                .ForEach(lvi =>
                {
                    var sfrduf = lvi.Tag as GISADataset.SFRDUnidadeFisicaRow;

                    ordem.Remove(sfrduf.IDFRDBase);
                    detalhes.Remove(sfrduf.FRDBaseRow.IDNivel);
                });

            GUIHelper.GUIHelper.deleteSelectedLstVwItems(lstVwNiveisAssoc);
            
			UpdateListButtonsState();
		}
Пример #32
0
        private string GetTermosIndexados_OutrasFormas(GISADataset.FRDBaseRow FRDBaseRow) {
            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            StringBuilder Result = new StringBuilder();
            List<PesquisaRule.TermosIndexacao> termosIdx = null;
            try
            {                
                termosIdx = PesquisaRule.Current.GetTermosIndexacao(FRDBaseRow.IDNivel, ho.Connection);
            }
            finally
            {
                ho.Dispose();
            }

            foreach (PesquisaRule.TermosIndexacao termo in termosIdx)
            {
                Result.Append(termo.Termo + "\\li128\\par\\li0{}");
                if (!termo.Outras_Formas.Equals(string.Empty))
                    Result.Append("     \\i{}" + termo.Outras_Formas + "\\li128\\par\\li0{}\\i0{}");
            }

            return Result.ToString();
        }
Пример #33
0
		private void btnRemoveModelo_Click(object sender, System.EventArgs e)
		{
			//não é permitido editar ou eliminar uma lista se algum dos seus modelos estiver a ser usado nalguma avaliação
			GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
			try
			{
				bool result = false;
				GISADataset.ModelosAvaliacaoRow modAvRow = (GISADataset.ModelosAvaliacaoRow)(LstVwModelos.SelectedItems[0].Tag);
				result = DBAbstractDataLayer.DataAccessRules.NivelRule.Current.ManageModelosAvaliacao(true, modAvRow.ID, null, short.MinValue, false, ho.Connection);
				if (result)
				{
					modAvRow.Delete();
					modAvRow.AcceptChanges();
					LstVwModelos.Items.Remove(LstVwModelos.SelectedItems[0]);
				}
				else
				{
					MessageBox.Show("O modelo de avaliação selecionado não pode ser apagado uma vez que já está a ser utilizado na avaliação de níveis documentais.", "Apagar Modelo de Avaliações", MessageBoxButtons.OK, MessageBoxIcon.Warning);
				}
			}
			catch (Exception ex)
			{
				Trace.WriteLine(ex);
				MessageBox.Show("Não foi possível completar a operação. Tente novamente.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
			}
			finally
			{
				ho.Dispose();
			}
		}
Пример #34
0
        private string RTFBuilder(long IDNivel) {
            GisaDataSetHelper.ManageDatasetConstraints(false);
 			GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                string filter = string.Format("IDNivel = {0} ", IDNivel);                
                PesquisaRule.Current.LoadSelectedData(GisaDataSetHelper.GetInstance(), IDNivel, Convert.ToInt64(TipoFRDBase.FRDOIRecolha), ho.Connection);
                DataRow[] frdbaseRows = frdbaseRows = GisaDataSetHelper.GetInstance().FRDBase.Select(filter);

                if (frdbaseRows.Length > 0)
                    return this.GetFRDBaseAsRTF((GISADataset.FRDBaseRow)(frdbaseRows[0]));

                return "";
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw;
            }
            finally
            {
                ho.Dispose();
                GisaDataSetHelper.ManageDatasetConstraints(true);
            }

        }
Пример #35
0
        public void LoadListData(DataRow dr, bool selectFirstItem)
        {
            long loadListDataTime = DateTime.Now.Ticks;
            Cursor oldCursor = null;
            try
            {
                oldCursor = lstVwPaginated.Cursor;
                lstVwPaginated.Parent.TopLevelControl.Cursor = Cursors.WaitCursor;

                try
                {
                    GisaDataSetHelper.ManageDatasetConstraints(false);
                    lstVwPaginated.BeginUpdate();

                    bool deadlockOccurred = true;
                    while (deadlockOccurred)
                    {
                        GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
                        try
                        {
                            long calculate = DateTime.Now.Ticks;
                            CalculateOrderedItems(ho.Connection);
                            Debug.WriteLine("<<CalculateOrderedItems>> total " + new TimeSpan(DateTime.Now.Ticks - calculate).ToString());


                            // selectedItemTag virá preenchido se se pretender selecionar 
                            // um item específico após a população do lista
                            if (dr != null)
                            {
                                int pageNr = GetPageForItemTag(dr, this.ItemsCountLimit, ho.Connection);
                                currentPageNr = pageNr < 1 ? 1 : pageNr;
                            }

                            long count = DateTime.Now.Ticks;
                            pagesCount = CountPages(ItemsCountLimit, out this.TotalElementosCount, ho.Connection);
                            Debug.WriteLine("<<countItems>> total " + new TimeSpan(DateTime.Now.Ticks - count).ToString());

                            long obterElementos = 0;
                            obterElementos = DateTime.Now.Ticks;
                            GetItems(currentPageNr, ItemsCountLimit, ho.Connection);

                            Debug.WriteLine("<<obterElementos>> total " + new TimeSpan(DateTime.Now.Ticks - obterElementos).ToString());

                            //limpar
                            long delete = DateTime.Now.Ticks;
                            DeleteTemporaryResults(ho.Connection);
                            Debug.WriteLine("<<DeleteTemporaryResults>> total " + new TimeSpan(DateTime.Now.Ticks - delete).ToString());

                            deadlockOccurred = false;
                        }
                        catch (Exception ex)
                        {
                            Trace.WriteLine(ex);
                            if (DBAbstractDataLayer.DataAccessRules.ExceptionHelper.isDeadlockException(ex))
                                deadlockOccurred = true;
                            else
                                throw;
                        }
                        finally
                        {
                            ho.Dispose();
                        }
                    }
                    long adicionarElementosLista = DateTime.Now.Ticks;
                    AddItemsToList();
                    Debug.WriteLine("<<adicionarElementosLista>> total " + new TimeSpan(DateTime.Now.Ticks - adicionarElementosLista).ToString());
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    throw;
                }
                finally
                {
                    lstVwPaginated.EndUpdate();

                    try
                    {
                        GisaDataSetHelper.ManageDatasetConstraints(true);
                    }
                    catch (ConstraintException ex)
                    {
                        IDbConnection conn = GisaDataSetHelper.GetTempConnection();
                        conn.Open();

                        Trace.WriteLine("<EnforceContraints>");
                        Trace.WriteLine(ex.ToString());
                        GisaDataSetHelper.FixDataSet(GisaDataSetHelper.GetInstance(), conn);

                        conn.Close();
#if DEBUG
                        throw;
#endif
                    }
                    catch (Exception ex)
                    {
                        Trace.WriteLine(ex);
                        throw;
                    }
                }
            }
            finally
            {
                lstVwPaginated.Parent.TopLevelControl.Cursor = oldCursor;
            }

            refreshNavigationState();

            if (lstVwPaginated.Items.Count > 0)
            {
                if (dr != null)
                {
                    // Se, por alguma razão, acontecer o item procurado não 
                    // chegar a ser encontrado também não será selecionado 
                    // nenhum item
                    lstVwPaginated.selectItem(GUIHelper.GUIHelper.findListViewItemByTag(dr, lstVwPaginated));
                }
                else if (selectFirstItem && lstVwPaginated.Items.Count == 1)
                    lstVwPaginated.selectItem(lstVwPaginated.Items[0]);
            }

            Debug.WriteLine("<<LoadListData>> total " + new TimeSpan(DateTime.Now.Ticks - loadListDataTime).ToString());
        }
        public void LoadData()
        {
            currentODSimples = new List <ObjDigSimples>();
            docSimplesSemOD  = new List <SubDocumento>();
            var tnrID = currentNivel.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().First().IDTipoNivelRelacionado;

            // só é considerado válido um contexto definido por um nivel documental
            if (currentNivel.IDTipoNivel != TipoNivel.DOCUMENTAL)
            {
                mContexto = ObjetoDigitalFedoraHelper.Contexto.nenhum;
                return;
            }

            mContexto = IdentifyViewMode(currentNivel);

            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                GisaDataSetHelper.ManageDatasetConstraints(false);

                // carregar a informação da bd consuante o tipo nivel selecionado
                if (tnrID == (long)TipoNivelRelacionado.SD)
                {
                    var nUpperRow = currentNivel.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().Single().NivelRowByNivelRelacaoHierarquicaUpper;
                    DBAbstractDataLayer.DataAccessRules.FedoraRule.Current.LoadObjDigitalData(GisaDataSetHelper.GetInstance(), nUpperRow.ID, nUpperRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().First().IDTipoNivelRelacionado, ho.Connection);
                }
                else
                {
                    DBAbstractDataLayer.DataAccessRules.FedoraRule.Current.LoadObjDigitalData(GisaDataSetHelper.GetInstance(), currentNivel.ID, tnrID, ho.Connection);
                }

                GisaDataSetHelper.ManageDatasetConstraints(true);
            }
            catch (Exception e)
            {
                // TODO: apanhar a excepção provocada por uma falha com a comunicação com o servidor
                Trace.WriteLine(e);
                throw;
            }
            finally
            {
                ho.Dispose();
            }

            List <string> pidsParaApagar = new List <string>(); // por algum motivo, no repositório, o objeto composto tem na sua estrutura ods simples que já foram apagados

            var frdRow  = currentNivel.GetFRDBaseRows().Single();
            var imgRows = new List <GISADataset.SFRDImagemRow>();

            imgRows.AddRange(frdRow.GetSFRDImagemRows().Where(r => r.Tipo.Equals(FedoraHelper.typeFedora)));

            if (imgRows.Count == 0)
            {
                if (tnrID == (long)TipoNivelRelacionado.SD) // Identificar, caso exista, o OD Composto no documento/processo do subdocumento
                {
                    var nUpperRow = currentNivel.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().Single().NivelRowByNivelRelacaoHierarquicaUpper;
                    // determinar se o documento/processo tem um OD composto associado
                    var imgRowsUpper = nUpperRow.GetFRDBaseRows().Single().GetSFRDImagemRows().Where(r => r.Tipo.Equals(FedoraHelper.typeFedora)).ToList();

                    if (imgRowsUpper.Count != 1)
                    {
                        return;                          // não existe nenhum OD composto para o OD simples associado ao subdocumento
                    }
                    // o documento/processo tem um OD associado. Determinar se esse OD é composto
                    var odRowUpper = imgRowsUpper[0].GetSFRDImagemObjetoDigitalRows().Single().ObjetoDigitalRow;

                    if (odRowUpper.GetObjetoDigitalRelacaoHierarquicaRowsByObjetoDigitalObjetoDigitalRelacaoHierarquicaUpper().Count() > 0)
                    {
                        // o OD é composto
                        currentODComp = SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.LoadID(odRowUpper.pid, null) as ObjDigComposto;
                        currentObjetoDigitalRowComp = odRowUpper;

                        if (currentODComp == null)
                        {
                            return;                        // não se conseguiu obter o OD do servidor...
                        }
                        // clona o próprio e todos os seus simples
                        currentODComp.original = currentODComp.Clone();
                    }
                }
                else if (tnrID == (long)TipoNivelRelacionado.D) // documento/processo sem ODs associados directamente mas com subdocumentos com ODs simples
                {
                    GetSubDocsImgRows(imgRows);
                    GetODRows(imgRows);
                }
            }
            else if (imgRows.Count == 1) // existe 1 OD associado mas não se sabe se é simples ou composto
            {
                var odRow = imgRows[0].GetSFRDImagemObjetoDigitalRows().Single().ObjetoDigitalRow;
                var od    = SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.LoadID(odRow.pid, null);

                if (od == null)
                {
                    ObjectNotFound(odRow.pid);
                    return;
                }

                od.publicado = odRow.Publicado;

                if (tnrID == (long)TipoNivelRelacionado.SD) // o OD é garantidamente simples
                {
                    PermissoesHelper.LoadObjDigitalPermissions(currentNivel, SessionHelper.GetGisaPrincipal().TrusteeUserOperator.TrusteeRow);
                    currentObjetoDigitalRow = odRow;
                    currentODSimples        = new List <ObjDigSimples>()
                    {
                        od as ObjDigSimples
                    };

                    var nUpperRow = currentNivel.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().Single().NivelRowByNivelRelacaoHierarquicaUpper;
                    // determinar se o documento/processo tem um OD composto associado
                    var imgRowsUpper = nUpperRow.GetFRDBaseRows().Single().GetSFRDImagemRows().Where(r => r.Tipo.Equals(FedoraHelper.typeFedora)).ToList();

                    if (imgRowsUpper.Count == 1)
                    {
                        // o documento/processo tem um OD associado. Determinar se esse OD é composto
                        var odRowUpper = imgRowsUpper[0].GetSFRDImagemObjetoDigitalRows().Single().ObjetoDigitalRow;

                        if (odRowUpper.GetObjetoDigitalRelacaoHierarquicaRowsByObjetoDigitalObjetoDigitalRelacaoHierarquicaUpper().Count() > 0)
                        {
                            // o OD é composto
                            currentODComp = SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.LoadID(odRowUpper.pid, null) as ObjDigComposto;
                            currentObjetoDigitalRowComp = odRowUpper;

                            if (currentODComp == null)
                            {
                                ObjectNotFound(odRowUpper.pid); return;
                            }                                                                      // não se conseguiu obter o OD do servidor...

                            ((ObjDigSimples)od).parentDocumentTitle = nUpperRow.GetNivelDesignadoRows().Single().Designacao;
                            //currentODComp.publicado = currentObjetoDigitalRowComp.Publicado;
                            currentODComp.objSimples[currentODComp.objSimples.FindIndex(obj => obj.pid == od.pid)] = od as ObjDigSimples;

                            // clona o próprio e todos os seus simples
                            currentODComp.original = currentODComp.Clone();
                        }
                    }
                }
                else if (tnrID == (long)TipoNivelRelacionado.D) // se a UI selecionada for um documento/processo também tem que se ter em conta os OD simples de subdocumentos
                {
                    if (od.GetType() == typeof(ObjDigSimples))
                    {
                        currentObjetoDigitalRow = imgRows.Single().GetSFRDImagemObjetoDigitalRows().Single().ObjetoDigitalRow;
                        GetSubDocsImgRows(imgRows);
                        GetODRows(imgRows);
                    }
                    else
                    {
                        currentODComp = od as ObjDigComposto;
                        currentObjetoDigitalRowComp = odRow;
                        currentODComp.objSimples.ForEach(odSimples =>
                        {
                            var odSimplesRow = GisaDataSetHelper.GetInstance().ObjetoDigital.Cast <GISADataset.ObjetoDigitalRow>().SingleOrDefault(r => r.pid.Equals(odSimples.pid));
                            if (odSimplesRow != null)
                            {
                                odSimples.guiorder  = odSimplesRow.GUIOrder;
                                odSimples.publicado = odSimplesRow.Publicado;
                            }
                            else if (odSimples.serverState == ServerState.Deleted)
                            {
                                pidsParaApagar.Add(odSimples.pid);
                            }
                        });

                        if (pidsParaApagar.Count > 0)
                        {
                            FedoraHelper.FixObjetoDigital(ref currentODComp, pidsParaApagar, frdRow, ref currentObjetoDigitalRowComp, ref currentObjetoDigitalRow);
                        }
                    }
                }
                else
                {
                    if (od.GetType() == typeof(ObjDigSimples))
                    {
                        currentODSimples = new List <ObjDigSimples>()
                        {
                            od as ObjDigSimples
                        };
                        currentObjetoDigitalRow = odRow;
                    }
                    else
                    {
                        currentODComp = od as ObjDigComposto;
                        currentObjetoDigitalRowComp = odRow;
                    }
                }

                od.original = od.Clone();
            }
            else
            {
                // caso onde estão associados vários simples soltos e garantidamente a UI selecionada não é um subdocumento (um subdocumento só pode ter um OD simples associado)
                Trace.Assert(tnrID != (long)TipoNivelRelacionado.SD);
                GetSubDocsImgRows(imgRows);
                GetODRows(imgRows);
            }

            // preencher o estado publicado nos objetos digitais
            if (currentODComp != null)
            {
                var odRow = default(GISADataset.ObjetoDigitalRow);
                currentODComp.objSimples.ToList().ForEach(odSimples =>
                {
                    odRow = GisaDataSetHelper.GetInstance().ObjetoDigital.Cast <GISADataset.ObjetoDigitalRow>().SingleOrDefault(r => r.pid.Equals(odSimples.pid));
                    odSimples.publicado = odRow.Publicado;
                });

                odRow = GisaDataSetHelper.GetInstance().ObjetoDigital.Cast <GISADataset.ObjetoDigitalRow>().Single(r => r.pid.Equals(currentODComp.pid));
                currentODComp.publicado = odRow.Publicado;
            }
            else
            {
                currentODSimples.ToList().ForEach(odSimples =>
                {
                    var odRow           = GisaDataSetHelper.GetInstance().ObjetoDigital.Cast <GISADataset.ObjetoDigitalRow>().Single(r => r.pid.Equals(odSimples.pid));
                    odSimples.publicado = odRow.Publicado;
                });
            }

            // obter documentos simples sem objeto digital para efeitos de ordenação
            GetSubDocsSemODs();
        }
Пример #37
0
        public void LoadData()
        {
            currentODSimples = new List<ObjDigSimples>();
            docSimplesSemOD = new List<SubDocumento>();
            var tnrID = currentNivel.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().First().IDTipoNivelRelacionado;

            // só é considerado válido um contexto definido por um nivel documental
            if (currentNivel.IDTipoNivel != TipoNivel.DOCUMENTAL)
            {
                mContexto = ObjetoDigitalFedoraHelper.Contexto.nenhum;
                return;
            }

            mContexto = IdentifyViewMode(currentNivel);

            GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
            try
            {
                GisaDataSetHelper.ManageDatasetConstraints(false);

                // carregar a informação da bd consuante o tipo nivel selecionado
                if (tnrID == (long)TipoNivelRelacionado.SD)
                {
                    var nUpperRow = currentNivel.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().Single().NivelRowByNivelRelacaoHierarquicaUpper;
                    DBAbstractDataLayer.DataAccessRules.FedoraRule.Current.LoadObjDigitalData(GisaDataSetHelper.GetInstance(), nUpperRow.ID, nUpperRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().First().IDTipoNivelRelacionado, ho.Connection);
                }
                else
                    DBAbstractDataLayer.DataAccessRules.FedoraRule.Current.LoadObjDigitalData(GisaDataSetHelper.GetInstance(), currentNivel.ID, tnrID, ho.Connection);

                GisaDataSetHelper.ManageDatasetConstraints(true);
            }
            catch (Exception e)
            {
                // TODO: apanhar a excepção provocada por uma falha com a comunicação com o servidor
                Trace.WriteLine(e);
                throw;
            }
            finally
            {
                ho.Dispose();
            }

            List<string> pidsParaApagar = new List<string>(); // por algum motivo, no repositório, o objeto composto tem na sua estrutura ods simples que já foram apagados

            var frdRow = currentNivel.GetFRDBaseRows().Single();
            var imgRows = new List<GISADataset.SFRDImagemRow>();
            imgRows.AddRange(frdRow.GetSFRDImagemRows().Where(r => r.Tipo.Equals(FedoraHelper.typeFedora)));

            if (imgRows.Count == 0)
            {
                if (tnrID == (long)TipoNivelRelacionado.SD) // Identificar, caso exista, o OD Composto no documento/processo do subdocumento
                {
                    var nUpperRow = currentNivel.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().Single().NivelRowByNivelRelacaoHierarquicaUpper;
                    // determinar se o documento/processo tem um OD composto associado
                    var imgRowsUpper = nUpperRow.GetFRDBaseRows().Single().GetSFRDImagemRows().Where(r => r.Tipo.Equals(FedoraHelper.typeFedora)).ToList();

                    if (imgRowsUpper.Count != 1) return; // não existe nenhum OD composto para o OD simples associado ao subdocumento

                    // o documento/processo tem um OD associado. Determinar se esse OD é composto
                    var odRowUpper = imgRowsUpper[0].GetSFRDImagemObjetoDigitalRows().Single().ObjetoDigitalRow;

                    if (odRowUpper.GetObjetoDigitalRelacaoHierarquicaRowsByObjetoDigitalObjetoDigitalRelacaoHierarquicaUpper().Count() > 0)
                    {
                        // o OD é composto
                        currentODComp = SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.LoadID(odRowUpper.pid, null) as ObjDigComposto;
                        currentObjetoDigitalRowComp = odRowUpper;

                        if (currentODComp == null) return; // não se conseguiu obter o OD do servidor...

                        // clona o próprio e todos os seus simples
                        currentODComp.original = currentODComp.Clone();
                    }
                }
                else if (tnrID == (long)TipoNivelRelacionado.D) // documento/processo sem ODs associados directamente mas com subdocumentos com ODs simples 
                {
                    GetSubDocsImgRows(imgRows);
                    GetODRows(imgRows);
                }
            }
            else if (imgRows.Count == 1) // existe 1 OD associado mas não se sabe se é simples ou composto
            {
                var odRow = imgRows[0].GetSFRDImagemObjetoDigitalRows().Single().ObjetoDigitalRow;
                var od = SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.LoadID(odRow.pid, null);

                if (od == null)
                {
                    ObjectNotFound(odRow.pid);
                    return;
                }

                od.publicado = odRow.Publicado;

                if (tnrID == (long)TipoNivelRelacionado.SD) // o OD é garantidamente simples
                {
                    PermissoesHelper.LoadObjDigitalPermissions(currentNivel, SessionHelper.GetGisaPrincipal().TrusteeUserOperator.TrusteeRow);
                    currentObjetoDigitalRow = odRow;
                    currentODSimples = new List<ObjDigSimples>() { od as ObjDigSimples };

                    var nUpperRow = currentNivel.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().Single().NivelRowByNivelRelacaoHierarquicaUpper;
                    // determinar se o documento/processo tem um OD composto associado
                    var imgRowsUpper = nUpperRow.GetFRDBaseRows().Single().GetSFRDImagemRows().Where(r => r.Tipo.Equals(FedoraHelper.typeFedora)).ToList();

                    if (imgRowsUpper.Count == 1)
                    {
                        // o documento/processo tem um OD associado. Determinar se esse OD é composto
                        var odRowUpper = imgRowsUpper[0].GetSFRDImagemObjetoDigitalRows().Single().ObjetoDigitalRow;

                        if (odRowUpper.GetObjetoDigitalRelacaoHierarquicaRowsByObjetoDigitalObjetoDigitalRelacaoHierarquicaUpper().Count() > 0)
                        {
                            // o OD é composto
                            currentODComp = SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.LoadID(odRowUpper.pid, null) as ObjDigComposto;
                            currentObjetoDigitalRowComp = odRowUpper;

                            if (currentODComp == null) { ObjectNotFound(odRowUpper.pid); return; } // não se conseguiu obter o OD do servidor...

                            ((ObjDigSimples)od).parentDocumentTitle = nUpperRow.GetNivelDesignadoRows().Single().Designacao;
                            //currentODComp.publicado = currentObjetoDigitalRowComp.Publicado;
                            currentODComp.objSimples[currentODComp.objSimples.FindIndex(obj => obj.pid == od.pid)] = od as ObjDigSimples;

                            // clona o próprio e todos os seus simples
                            currentODComp.original = currentODComp.Clone();
                        }
                    }
                }
                else if (tnrID == (long)TipoNivelRelacionado.D) // se a UI selecionada for um documento/processo também tem que se ter em conta os OD simples de subdocumentos
                {
                    if (od.GetType() == typeof(ObjDigSimples))
                    {
                        currentObjetoDigitalRow = imgRows.Single().GetSFRDImagemObjetoDigitalRows().Single().ObjetoDigitalRow;
                        GetSubDocsImgRows(imgRows);
                        GetODRows(imgRows);
                    }
                    else
                    {
                        currentODComp = od as ObjDigComposto;
                        currentObjetoDigitalRowComp = odRow;
                        currentODComp.objSimples.ForEach(odSimples =>
                        {
                            var odSimplesRow = GisaDataSetHelper.GetInstance().ObjetoDigital.Cast<GISADataset.ObjetoDigitalRow>().SingleOrDefault(r => r.pid.Equals(odSimples.pid));
                            if (odSimplesRow != null)
                            {
                                odSimples.guiorder = odSimplesRow.GUIOrder;
                                odSimples.publicado = odSimplesRow.Publicado;
                            }
                            else if (odSimples.serverState == ServerState.Deleted)
                                pidsParaApagar.Add(odSimples.pid);
                        });

                        if (pidsParaApagar.Count > 0)
                            FedoraHelper.FixObjetoDigital(ref currentODComp, pidsParaApagar, frdRow, ref currentObjetoDigitalRowComp, ref currentObjetoDigitalRow);
                    }
                }
                else
                {
                    if (od.GetType() == typeof(ObjDigSimples))
                    {
                        currentODSimples = new List<ObjDigSimples>() { od as ObjDigSimples };
                        currentObjetoDigitalRow = odRow;
                    }
                    else
                    {
                        currentODComp = od as ObjDigComposto;
                        currentObjetoDigitalRowComp = odRow;
                    }
                }

                od.original = od.Clone();
            }
            else
            {
                // caso onde estão associados vários simples soltos e garantidamente a UI selecionada não é um subdocumento (um subdocumento só pode ter um OD simples associado)
                Trace.Assert(tnrID != (long)TipoNivelRelacionado.SD);
                GetSubDocsImgRows(imgRows);
                GetODRows(imgRows);
            }

            // preencher o estado publicado nos objetos digitais
            if (currentODComp != null)
            {
                var odRow = default(GISADataset.ObjetoDigitalRow);
                currentODComp.objSimples.ToList().ForEach(odSimples =>
                {
                    odRow = GisaDataSetHelper.GetInstance().ObjetoDigital.Cast<GISADataset.ObjetoDigitalRow>().SingleOrDefault(r => r.pid.Equals(odSimples.pid));
                    odSimples.publicado = odRow.Publicado;
                });

                odRow = GisaDataSetHelper.GetInstance().ObjetoDigital.Cast<GISADataset.ObjetoDigitalRow>().Single(r => r.pid.Equals(currentODComp.pid));
                currentODComp.publicado = odRow.Publicado;
            }
            else
            {
                currentODSimples.ToList().ForEach(odSimples =>
                {
                    var odRow = GisaDataSetHelper.GetInstance().ObjetoDigital.Cast<GISADataset.ObjetoDigitalRow>().Single(r => r.pid.Equals(odSimples.pid));
                    odSimples.publicado = odRow.Publicado;
                });
            }

            // obter documentos simples sem objeto digital para efeitos de ordenação
            GetSubDocsSemODs();
        }
Пример #38
0
        public void ActivateDetalhesUnidadesFisicas()
		{
			if (PesquisaList1.GetSelectedRows.Count() == 1)
			{
                List<UFRule.UFsAssociadas> ufsAssociadas = new List<UFRule.UFsAssociadas>();
                string ID = ((GISADataset.FRDBaseRow)PesquisaList1.SelectedRow).ID.ToString();

				GisaDataSetHelper.ManageDatasetConstraints(false);

				long calc = DateTime.Now.Ticks;
				GisaDataSetHelper.HoldOpen ho = new GisaDataSetHelper.HoldOpen(GisaDataSetHelper.GetConnection());
				try
				{
                    long t1 = DateTime.Now.Ticks;
					ufsAssociadas = PesquisaRule.Current.LoadDetalhesUF(GisaDataSetHelper.GetInstance(), ID, ho.Connection);
                    Debug.WriteLine("<<t1>>: " + new TimeSpan(DateTime.Now.Ticks - t1).ToString());
				}
				catch (Exception ex)
				{
					Trace.WriteLine(ex.ToString());
					throw ex;
				}
				finally
				{
					ho.Dispose();
				}

                GisaDataSetHelper.ManageDatasetConstraints(true);

                long t2 = DateTime.Now.Ticks;
                dataGridView1.DataSource = null;
                dataGridView1.ResetOrder();
                UFsRelacionadasDataTable.BeginLoadData();
                UFsRelacionadasDataTable.Clear();
                foreach (var ufAssociada in ufsAssociadas)
                {
                    var row = UFsRelacionadasDataTable.NewRow();
                    row[CODIGO] = ufAssociada.Codigo;
                    row[DESIGNACAO] = ufAssociada.Designacao;
                    row[PRODUCAO] = GISA.Utils.GUIHelper.FormatDate(ufAssociada.DPInicioAno, ufAssociada.DPInicioMes, ufAssociada.DPInicioDia, ufAssociada.DPInicioAtribuida) + " - " + 
                        GISA.Utils.GUIHelper.FormatDate(ufAssociada.DPFimAno, ufAssociada.DPFimMes, ufAssociada.DPFimDia, ufAssociada.DPFimAtribuida);
                    row[COTA] = ufAssociada.Cota;
                    row[COTADOCUMETO] = ufAssociada.CotaDocumento;
                    UFsRelacionadasDataTable.Rows.Add(row);
                }
                UFsRelacionadasDataTable.EndLoadData();
                UFsRelacionadasDataTable.AcceptChanges();
                this.dataGridView1.DataSource = UFsRelacionadasDataTable;
                Debug.WriteLine("<<t2>>: " + new TimeSpan(DateTime.Now.Ticks - t2).ToString());

                this.dataGridView1.columnClick_refreshData += _ColumnHeaderMouseClick; 

                this.GroupBox3.Text = string.Format("Unidades físicas agregadas ({0})", dataGridView1.Rows.Count);

                pnlUnidadesFisicas.BringToFront();

                this.btnExportUFs.Enabled = dataGridView1.Rows.Count > 0;

				Trace.WriteLine("<<ActivateDetalhesUnidadesFisicas>>: " + new TimeSpan(DateTime.Now.Ticks - calc).ToString());
			}
			else
			{
				ToolBar_ButtonClick(this, new ToolBarButtonClickEventArgs(ToolBarButton2));
			}
		}