Beispiel #1
0
		public void VisitChildrenChains()
		{
			Assert.IsTrue(ds.Nivel.Rows.Count >= 2);
			Assert.IsTrue(ds.RelacaoHierarquica.Rows.Count >= 1);

			Nivel.VisitChildChains(ds, r1, new MockVisitor(r1, r2));
		}
Beispiel #2
0
        public static GISADataset.RelacaoHierarquicaRow GetPrimeiraRelacaoEncontrada(GISADataset.NivelRow nivelRow)
        {
            GISADataset.RelacaoHierarquicaRow[] rhRows = null;
            GISADataset.RelacaoHierarquicaRow   rhRow  = null;
            try
            {
                rhRows = nivelRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica();
                if (rhRows.Length > 0)
                {
                    return(rhRows[0]);
                }

                rhRows = Nivel.GetSelf(GisaDataSetHelper.GetInstance(), nivelRow);
                if (rhRows.Length == 0)
                {
                    return(null);
                }

                rhRow = rhRows[0];
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw;
            }
            return(rhRow);
        }
Beispiel #3
0
		public void VisitParentChains()
		{
			Assert.IsTrue(ds.Nivel.Rows.Count >= 2);
			Assert.IsTrue(ds.RelacaoHierarquica.Rows.Count >= 1);

			Nivel.VisitParentChains(ds, r2, new MockVisitor(r2, r1));
		}
Beispiel #4
0
		public void GetChildNivel()
		{
			Assert.IsTrue(ds.Nivel.Rows.Count >= 2);
			Assert.IsTrue(ds.RelacaoHierarquica.Rows.Count >= 1);

			DataRow[] Children = Nivel.GetChildren(ds, r1);
			Assert.AreEqual(1, Children.Length);
			Assert.AreSame(r2, Children[0]);
		}
Beispiel #5
0
		public void GetParentNivel()
		{
			Assert.IsTrue(ds.Nivel.Rows.Count >= 2);
			Assert.IsTrue(ds.RelacaoHierarquica.Rows.Count >= 1);

			DataRow[] Parents = Nivel.GetParents(ds, r2);
			Assert.AreEqual(1, Parents.Length);
			Assert.AreSame(r1, Parents[0]);
		}
Beispiel #6
0
        public static bool IsNivelEntidadeDetentora(GISADataset.NivelRow nRow)
        {
            if (Nivel.GetSelf(GisaDataSetHelper.GetInstance(), nRow).Length == 0)
            {
                return(true);
            }

            return(false);
        }
Beispiel #7
0
		// reimplementar para relatorios detalhados
        protected virtual void AddExtraDetails(Nivel nvl, Document doc, float indentation)
        {
		}
Beispiel #8
0
 protected virtual void ImprimeSubNiveis(Nivel nvl, Document doc, float indentation)
 {
     foreach (Nivel nvlLower in nvl.Lowers)
     {
         if (nvlLower.IDTipoNivel == TipoNivel.DOCUMENTAL)
             AddNivelEstrutural(doc, nvlLower, (float)(indentation + 0.5), this.SmallerBodyFont);
     }
 }
Beispiel #9
0
        private void AddNivelEstrutural(Document doc, Nivel nvl, float indentation, iTextSharp.text.Font font, List<Nivel> niveisContexto, bool isContext)
        {
            Table detailsTable;

            string nivelStr = string.Empty;
            nivelStr = string.Format("{0}: {1}", nvl.TipoNivelRelacionado, nvl.Designacao);

            Paragraph p;
            p = new Paragraph(CentimeterToPoint(0.5f), nivelStr, font);
            p.IndentationLeft = CentimeterToPoint(0 + indentation);
            p.SpacingBefore = 5f;
            doc.Add(p);

            if (niveisContexto != null && niveisContexto.Count > 0)
            {
                detailsTable = CreateTable(indentation);
                AddNewCell(detailsTable, "");
                AddNewCell(detailsTable, "Contexto:", this.HeaderFont);
                AddNewCell(detailsTable, "");
                AddTable(doc, detailsTable);

                float innerIndentation = indentation + 1.0f;
                
                foreach (Nivel nContexto in niveisContexto)
                {
                    innerIndentation = (float)(innerIndentation + 0.5f);
                    AddNivelEstrutural(doc, nContexto, innerIndentation, ContentFont, true);
                }
            }

            iTextSharp.text.Font hFont = null;
            if (isContext)
                hFont = this.ContentFont;
            else
                hFont = this.HeaderFont;

            // imprimir os produtores do nível (só no caso de este ser uma série ou um documento solto)
            if (nvl.Produtores.Count > 0)
            {
                string entProdutoras = string.Empty;
                List<Chunk> chunks = new List<Chunk>();
                foreach (Nivel prod in nvl.Produtores)
                {
                    if (chunks.Count > 0)
                        chunks.Add(new Chunk(Environment.NewLine, ContentFont));

                    // só imprime a designação e o TipoNivelRelacionado do nivel "produtor" caso este seja controlado
                    if (prod.Designacao != null && prod.Designacao.Length > 0)
                    {
                        if (prod.TipoNivelRelacionado.Length == 0)
                            chunks.Add(new Chunk("Desconhecido", ContentItalicFont));
                        else
                            chunks.Add(new Chunk(prod.TipoNivelRelacionado, ContentFont));

                        chunks.Add(new Chunk(string.Format(" — {0}", prod.Designacao), ContentFont));
                    }
                }

                detailsTable = CreateTable(indentation);
                AddNewCell(detailsTable, "");
                AddNewCell(detailsTable, "Entidades Produtoras:", hFont);
                AddNewCell(detailsTable, chunks);
                AddTable(doc, detailsTable);
            }

            string datasProducao = GISA.Utils.GUIHelper.FormatDateInterval(
                GISA.Utils.GUIHelper.FormatDate(nvl.InicioAno, nvl.InicioMes, nvl.InicioDia, nvl.InicioAtribuida),
                GISA.Utils.GUIHelper.FormatDate(nvl.FimAno, nvl.FimMes, nvl.FimDia, nvl.FimAtribuida));            
            
            if (IsDetalhado())
                datasProducao = nvl.InicioTexto + " " + datasProducao;

            detailsTable = CreateTable(indentation);
            AddNewCell(detailsTable, "");
            AddNewCell(detailsTable, "Datas de produção:", hFont);
            AddNewCell(detailsTable, datasProducao, this.ContentFont);
            AddTable(doc, detailsTable);

            detailsTable = CreateTable(indentation);
            AddNewCell(detailsTable, "");
            if (nvl.CodigosCompletos.Count > 0)
            {
                List<string> codigos = new List<string>();
                foreach (string codigoCompleto in nvl.CodigosCompletos)
                    codigos.Add(codigoCompleto);

                AddNewCell(detailsTable, "Código(s) de referência:", hFont);
                AddNewCell(detailsTable, codigos, this.ContentFont);
            }
            else
            {
                AddNewCell(detailsTable, "Código parcial:", hFont);
                AddNewCell(detailsTable, nvl.Codigo, this.ContentFont);
            }
            AddTable(doc, detailsTable);

            if (!isContext)
                AddExtraDetails(nvl, doc, indentation);            

            ImprimeSubNiveis(nvl, doc, indentation);

            if (!isContext)
                DoRemovedEntries(1);
        }
Beispiel #10
0
        public static void ensureUniqueCodigo(PersistencyHelper.PreConcArguments args)
        {
            PersistencyHelper.EnsureUniqueCodigoNivelPreConcArguments pcArgs = null;
            pcArgs = (PersistencyHelper.EnsureUniqueCodigoNivelPreConcArguments)args;
            GISADataset.NivelRow              nRow  = (GISADataset.NivelRow)(GisaDataSetHelper.GetInstance().Nivel.Select("ID=" + pcArgs.nRowID.ToString())[0]);
            GISADataset.NivelDesignadoRow     ndRow = (GISADataset.NivelDesignadoRow)(GisaDataSetHelper.GetInstance().NivelDesignado.Select("ID=" + pcArgs.ndRowID.ToString())[0]);
            GISADataset.RelacaoHierarquicaRow rhRow = null;

            if (GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", pcArgs.rhRowID, pcArgs.rhRowIDUpper)).Length > 0)
            {
                rhRow = (GISADataset.RelacaoHierarquicaRow)(GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", pcArgs.rhRowID, pcArgs.rhRowIDUpper))[0]);
            }

            // Se o nível em questão for uma entidade detentora
            if (rhRow == null && nRow.TipoNivelRow.ID == TipoNivel.LOGICO)
            {
                if (DBAbstractDataLayer.DataAccessRules.NivelRule.Current.isUniqueCodigo(nRow.Codigo, nRow.ID, pcArgs.tran, pcArgs.testOnlyWithinNivel))
                {
                    pcArgs.successful = true;
                }
                else
                {
                    var cod = nRow.Codigo;
                    System.Data.DataSet tempgisaBackup1 = pcArgs.gisaBackup;
                    PersistencyHelper.BackupRow(ref tempgisaBackup1, ndRow);
                    pcArgs.gisaBackup = tempgisaBackup1;
                    System.Data.DataSet tempgisaBackup2 = pcArgs.gisaBackup;
                    PersistencyHelper.BackupRow(ref tempgisaBackup2, nRow);
                    pcArgs.gisaBackup = tempgisaBackup2;
                    ndRow.RejectChanges();
                    PermissoesHelper.UndoAddNivelGrantPermissions(nRow);
                    nRow.RejectChanges();
                    pcArgs.message = string.Format(
                        "Não é possível completar a operação porque não é permitido " + Environment.NewLine +
                        "que duas unidades de informação tenham o mesmo código " + Environment.NewLine +
                        "parcial ({0}) no mesmo nivel de descrição.", cod);
                }
            }
            else
            {
                // antes de obter o código verificar se adição de um novo nível ainda é possível (por razões
                // de concorrência é necessário garantir que tanto o nível acima mantém-se na base de dados
                // até o save estar terminado)
                bool upperRelationExists;
                if (rhRow.IDUpper < 0)
                {
                    upperRelationExists = true;
                }
                else
                {
                    upperRelationExists = NivelRule.Current.isNivelDeleted(rhRow.IDUpper, args.tran);
                }

                if (!upperRelationExists)
                {
                    var frdRow = GisaDataSetHelper.GetInstance().FRDBase.Cast <GISADataset.FRDBaseRow>().Single(r => r.ID == pcArgs.frdBaseID);
                    Nivel.DeleteInDataSet(frdRow, false, pcArgs.gisaBackup);
                    Nivel.DeleteInDataSet(nRow, false, pcArgs.gisaBackup);

                    pcArgs.message = "Não foi possível criar/editar a unidade informacional uma" + Environment.NewLine + "vez que a unidade superior foi apagada por outro utilizador.";
                }
                else
                {
                    if (DBAbstractDataLayer.DataAccessRules.NivelRule.Current.isUniqueCodigo(nRow.Codigo, nRow.ID, pcArgs.tran, pcArgs.testOnlyWithinNivel, rhRow.NivelRowByNivelRelacaoHierarquicaUpper.ID))
                    {
                        pcArgs.successful = true;
                    }
                    else
                    {
                        var cod = nRow.Codigo;
                        if (nRow.RowState == DataRowState.Modified)
                        {
                            nRow.RejectChanges();
                            GisaDataSetHelper.GetInstance().IndexFRDCA.Cast <GISADataset.IndexFRDCARow>()
                            .Where(r => r.RowState != DataRowState.Unchanged).ToList().ForEach(r => r.RejectChanges());
                        }
                        else if (nRow.RowState == DataRowState.Added)
                        {
                            var frdRow = GisaDataSetHelper.GetInstance().FRDBase.Cast <GISADataset.FRDBaseRow>().Single(r => r.ID == pcArgs.frdBaseID);
                            Nivel.DeleteInDataSet(frdRow, false, pcArgs.gisaBackup);
                            Nivel.DeleteInDataSet(nRow, false, pcArgs.gisaBackup);
                        }
                        pcArgs.message = string.Format(
                            "Não é possível completar a operação porque não é permitido " + Environment.NewLine +
                            "que duas unidades de informação tenham o mesmo código " + Environment.NewLine +
                            "parcial ({0}) no mesmo nivel de descrição.", cod);
                    }
                }
            }
        }
Beispiel #11
0
		private int CompareDesignacao(GISADataset.RelacaoHierarquicaRow rhRow1, GISADataset.RelacaoHierarquicaRow rhRow2)
		{
			string designacao1 = Nivel.GetDesignacao(rhRow1.NivelRowByNivelRelacaoHierarquica);
			string designacao2 = Nivel.GetDesignacao(rhRow2.NivelRowByNivelRelacaoHierarquica);
			return string.Compare(designacao1, designacao2, true);
		}
Beispiel #12
0
		protected Nivel CreateNivelIfNonExistent(long IDNivel, bool addEntry) {
			Nivel nvl;
			nvl = GetExistentNivel(IDNivel);
            if (nvl == null)
            {
                nvl = new Nivel();
                nvl.IDNivel = IDNivel;
                niveis.Add(IDNivel, nvl);
                if (addEntry)
                    DoAddedEntries(1);
            }

			return nvl;
		}
Beispiel #13
0
        protected virtual void DefineTopNiveis(Nivel nvl, long IDUpperNivel)
        {
            // séries e documentos soltos são usados como ponto de partida;
            // no caso de o nivel actual ter um produtor associado acima, então trata-se de uma série ou documento
            // solto
            if (prodHT.ContainsKey(IDUpperNivel))
            {
                if (!topNiveis.Contains(nvl))
                    topNiveis.Add(nvl);

                nvl.AddProdutor((Nivel)prodHT[IDUpperNivel]);
            }
            else
                CreateNivelIfNonExistent(IDUpperNivel);

            nvl.IDNivelUpper = IDUpperNivel;
        }
Beispiel #14
0
        // carregar nível que serviu de ponto de partida para o inventário/catálogo
        protected virtual void LoadTopNivel(ref IDataReader reader)
        {
            Nivel nvl = null;
            long IDNivel;
            long IDUpperNivel = 0;
            while (reader.Read())
            {
                IDNivel = System.Convert.ToInt64(reader.GetValue(0));
                IDUpperNivel = System.Convert.ToInt64(reader.GetValue(1));

                nvl = CreateNivelIfNonExistent(IDNivel, true);
                // a atribuição do valor a este membro tem que se feita antes do DefineTopNiveis
                nvl.isContext = true;

                nvlContexto = nvl;

                if (codCompletos.Contains(IDNivel))
                {
                    nvl.CodigosCompletos = new ArrayList();
                    foreach (string cod in ((List<string>)codCompletos[IDNivel]))
                        nvl.CodigosCompletos.Add(cod);
                }

                nvl.Codigo = reader.GetValue(2).ToString();
                nvl.IDTipoNivel = System.Convert.ToInt64(reader.GetValue(3));
                nvl.TipoNivelRelacionado = this.mParameters[1].ToString();
                nvl.Designacao = reader.GetValue(5).ToString();
                nvl.InicioTexto = reader.GetValue(6).ToString();
                nvl.InicioAno = reader.GetValue(7).ToString();
                nvl.InicioMes = reader.GetValue(8).ToString();
                nvl.InicioDia = reader.GetValue(9).ToString();
                if (reader.GetValue(10) != DBNull.Value)
                    nvl.InicioAtribuida = GisaDataSetHelper.GetDBNullableBoolean(ref reader, 10);
                nvl.FimAno = reader.GetValue(11).ToString();
                nvl.FimMes = reader.GetValue(12).ToString();
                nvl.FimDia = reader.GetValue(13).ToString();
                if (reader.GetValue(14) != DBNull.Value)
                    nvl.FimAtribuida = GisaDataSetHelper.GetDBNullableBoolean(ref reader, 14);
                if (IsDetalhado())
                {
                    nvl.InfoAdicional = new Dictionary<ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet, ArrayList>();
                    ArrayList info;
                    int i = 15;
                    foreach (ReportParameterRelInvCatPesqDet rp in this.mFields)
                    {
                        if (rp.RetType == ReportParameter.ReturnType.TextOnly)
                        {
                            info = new ArrayList();
                            info.Add(new List<string>() { reader.GetValue(i).ToString() });
                            nvl.InfoAdicional.Add(rp.Campo, info);
                            i++;
                        }
                    }
                }
            }
            reader.NextResult();
        }
Beispiel #15
0
		public void GetDesignacao()
		{
			Assert.IsTrue(ds.Nivel.Rows.Count >= 2);
			string Designacao = Nivel.GetDesignacao((GISADataset.NivelRow)(ds.Nivel.Rows[0]));
			Assert.IsTrue(Designacao.Length > 0);
		}
Beispiel #16
0
			public void AddLower(Nivel nvl) {
				Lowers.Add(nvl);
				if (!nvl.Uppers.Contains(this)) {
					nvl.Uppers.Add(this);
				}
			}
Beispiel #17
0
            public void AddProdutor(Nivel nvl) {
				if (!this.Produtores.Contains(nvl)) {
                    this.Produtores.Add(nvl);
				}
			}
Beispiel #18
0
		// o valor de retorno é usado para determinar se deve ser adicionado um separador entre o nivel actual e o seguinte.
		// devolve verdadeiro se produziu algum nível documental ou se se tratar do ultimo nivel estrutural dentro de um determinado nivel
		protected void AddNivelEstrutural(Document doc, Nivel nvl, float indentation) {
			AddNivelEstrutural(doc, nvl, indentation, this.BodyFont, null, false);
		}
Beispiel #19
0
 protected void AddNivelEstrutural(Document doc, Nivel nvl, float indentation, List<Nivel> niveisContexto)
 {
     AddNivelEstrutural(doc, nvl, indentation, this.BodyFont, niveisContexto, false);
 }
Beispiel #20
0
 private void AddNivelEstrutural(Document doc, Nivel nvl, float indentation, iTextSharp.text.Font font, bool isContext)
 {
     AddNivelEstrutural(doc, nvl, indentation, font, null, isContext);
 }
        protected override void AddExtraDetails(Nivel nvl, Document doc, float indentation)
        {
			System.Text.StringBuilder agregados;
            ArrayList info;
            Table detailsTable;

            // percorrer a lista de campos selecionados pelo utilizador respeitando a ordem que aparecem na interface
            foreach (ReportParameterRelInvCatPesqDet param in this.mFields)
            {
                ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet campo = param.Campo;
                if (param.RetType == ReportParameter.ReturnType.TextOnly)
                {
                    info = nvl.InfoAdicional[campo];
                    List<string> campos = new List<string>();

                    if (((List<string>)info[0])[0].Length > 0)
                    {
                        detailsTable = CreateTable(indentation);
                        AddNewCell(detailsTable, "");
                        AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                        AddNewCell(detailsTable, ((List<string>)info[0])[0], this.ContentFont);
                        AddTable(doc, detailsTable);
                    }
                }
                else
                {
                    agregados = new System.Text.StringBuilder();
                    switch (campo)
                    {
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.Autores:
                            AddInfoToRel(param, doc, indentation, nvl.Autores);
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.HistAdministrativaBiografica:
                            if (nvl.HistAdministrativaBiografica.Count > 0)
                            {
                                if (nvl.IDTipoNivel == TipoNivel.ESTRUTURAL)
                                {
                                    System.Text.StringBuilder infos = new System.Text.StringBuilder();                                    

                                    foreach (DictionaryEntry myDE in nvl.HistAdministrativaBiografica)
                                    {
                                        if (myDE.Value.ToString().Length > 0)
                                            infos.AppendLine(myDE.Key.ToString() + ": " + myDE.Value.ToString());
                                    }

                                    if (infos.Length > 0)
                                    {
                                        detailsTable = CreateTable(indentation);
                                        AddNewCell(detailsTable, "");
                                        AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                        AddNewCell(detailsTable, infos.ToString(), this.ContentFont);
                                        AddTable(doc, detailsTable);
                                    }
                                }
                                else
                                {
                                    if (nvl.HistAdministrativaBiografica[0].ToString().Length > 0)
                                    {
                                        detailsTable = CreateTable(indentation);
                                        AddNewCell(detailsTable, "");
                                        AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                        AddNewCell(detailsTable, nvl.HistAdministrativaBiografica[0].ToString(), this.ContentFont);
                                        AddTable(doc, detailsTable);
                                    }
                                }
                            }
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.TipologiaInformacional:
                            AddInfoToRel(param, doc, indentation, nvl.Tipologias);
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.Indexacao:
                            AddInfoToRel(param, doc, indentation, nvl.Conteudos);
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.Diplomas:
                            if (nvl.Diplomas.Count > 0)
                            {
                                List<string> paragraphs = new List<string>();
                                foreach (string diploma in nvl.Diplomas)
                                    paragraphs.Add("• " + diploma);

                                detailsTable = CreateTable(indentation);
                                AddNewCell(detailsTable, "");
                                AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                AddNewCell(detailsTable, paragraphs, this.ContentFont);
                                AddTable(doc, detailsTable);
                            }
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.Modelos:
                            if (nvl.Modelos.Count > 0)
                            {
                                List<string> paragraphs = new List<string>();
                                foreach (string modelo in nvl.Modelos)
                                    paragraphs.Add("• " + modelo);

                                detailsTable = CreateTable(indentation);
                                AddNewCell(detailsTable, "");
                                AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                AddNewCell(detailsTable, paragraphs, this.ContentFont);
                                AddTable(doc, detailsTable);
                            }
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.DiplomaLegal:
                            if (nvl.Diplomas.Count > 0)
                            {
                                List<string> paragraphs = new List<string>();
                                foreach (string diploma in nvl.Diplomas)
                                    paragraphs.Add("• " + diploma);

                                detailsTable = CreateTable(indentation);
                                AddNewCell(detailsTable, "");
                                AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                AddNewCell(detailsTable, paragraphs, this.ContentFont);
                                AddTable(doc, detailsTable);
                            }
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.CotaDocumento:
                            AddInfoToRel(param, doc, indentation, nvl.CotaDocumento);
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.UFsAssociadas:
                            if (nvl.UnidadesFisicas.Count > 0)
                            {
                                System.Text.StringBuilder infos;
                                bool addFieldName = true;
                                foreach (List<string> uf in nvl.UnidadesFisicas)
                                {
                                    infos = new System.Text.StringBuilder();
                                    detailsTable = CreateTable(indentation);
                                    AddNewCell(detailsTable, "");
                                    if (addFieldName)
                                    {
                                        AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                        addFieldName = false;
                                    }
                                    else
                                        AddNewCell(detailsTable, "");

                                    infos.AppendLine("• " + uf[0]);
                                    infos.AppendLine("Código: " + uf[1]);
                                    if (uf[2].Length > 0)
                                        infos.AppendLine("Cota: " + uf[2]);
                                    infos.AppendLine("Tipo: " + uf[6]);
                                    infos.AppendLine(string.Format("Dimensões: {0} x {1} x {2} {3}", uf[3], uf[4], uf[5], uf[7]));


                                    AddNewCell(detailsTable, infos.ToString(), this.ContentFont);
                                    AddTable(doc, detailsTable);
                                }
                            }
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.TradicaoDocumental:
                            AddInfoToRel(param, doc, indentation, nvl.TradicaoDocumental);
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.Ordenacao:
                            AddInfoToRel(param, doc, indentation, nvl.Ordenacao);
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.ObjectosDigitais:
                            if (nvl.ObjectosDigitais.Count > 0)
                            {
                                System.Text.StringBuilder infos;
                                bool addFieldName = true;
                                foreach (List<string> od in nvl.ObjectosDigitais)
                                {
                                    infos = new System.Text.StringBuilder();
                                    detailsTable = CreateTable(indentation);
                                    AddNewCell(detailsTable, "");
                                    if (addFieldName)
                                    {
                                        AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                        addFieldName = false;
                                    }
                                    else
                                        AddNewCell(detailsTable, "");

                                    infos.AppendLine("• " + od[0]);
                                    infos.AppendLine("Descrição: " + od[1]);
                                    infos.AppendLine("Caminho: " + od[2]);

                                    AddNewCell(detailsTable, infos.ToString(), this.ContentFont);
                                    AddTable(doc, detailsTable);
                                }
                            }
                            if (nvl.ObjectosDigitaisFedora.Count > 0)
                            {
                                System.Text.StringBuilder infos;
                                bool addFieldName = true;
                                foreach (List<string> od in nvl.ObjectosDigitaisFedora)
                                {
                                    infos = new System.Text.StringBuilder();
                                    detailsTable = CreateTable(indentation);
                                    AddNewCell(detailsTable, "");
                                    if (addFieldName)
                                    {
                                        AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                        addFieldName = false;
                                    }
                                    else
                                        AddNewCell(detailsTable, "");

                                    infos.AppendLine("• " + od[0]);
                                    infos.AppendLine("PID: " + od[1]);

                                    AddNewCell(detailsTable, infos.ToString(), this.ContentFont);
                                    AddTable(doc, detailsTable);
                                }
                            }
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.Lingua:
                            AddInfoToRel(param, doc, indentation, nvl.Lingua);
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.Alfabeto:
                            AddInfoToRel(param, doc, indentation, nvl.Alfabeto);
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.FormaSuporteAcondicionamento:
                            AddInfoToRel(param, doc, indentation, nvl.FormaSuporteAcond);
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.MaterialSuporte:
                            AddInfoToRel(param, doc, indentation, nvl.MaterialSuporte);
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.TecnicaRegisto:
                            AddInfoToRel(param, doc, indentation, nvl.TecnicaRegisto);
                            break;

                        #region Licença de obra
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.LO_RequerentesIniciais:
                            if (nvl.LO_RequerentesIniciais.Count > 0)
                            {
                                List<string> paragraphs = new List<string>();
                                foreach (string LO_RequerentesIniciais in nvl.LO_RequerentesIniciais)
                                    paragraphs.Add("• " + LO_RequerentesIniciais);

                                detailsTable = CreateTable(indentation);
                                AddNewCell(detailsTable, "");
                                AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                AddNewCell(detailsTable, paragraphs, this.ContentFont);
                                AddTable(doc, detailsTable);
                            }
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.LO_RequerentesAverbamentos:
                            if (nvl.LO_RequerentesAverbamentos.Count > 0)
                            {
                                List<string> paragraphs = new List<string>();
                                foreach (string LO_RequerentesAverbamentos in nvl.LO_RequerentesAverbamentos)
                                    paragraphs.Add("• " + LO_RequerentesAverbamentos);

                                detailsTable = CreateTable(indentation);
                                AddNewCell(detailsTable, "");
                                AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                AddNewCell(detailsTable, paragraphs, this.ContentFont);
                                AddTable(doc, detailsTable);
                            }
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.LO_DesignacaoNumPoliciaAct:
                            if (nvl.LO_DesignacaoNumPoliciaAct.Count > 0)
                            {
                                List<string> paragraphs = new List<string>();
                                foreach (string LO_DesignacaoNumPoliciaAct in nvl.LO_DesignacaoNumPoliciaAct)
                                    paragraphs.Add("• " + LO_DesignacaoNumPoliciaAct);

                                detailsTable = CreateTable(indentation);
                                AddNewCell(detailsTable, "");
                                AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                AddNewCell(detailsTable, paragraphs, this.ContentFont);
                                AddTable(doc, detailsTable);
                            }
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.LO_DesignacaoNumPoliciaAntigo:
                            if (nvl.LO_DesignacaoNumPoliciaAntigo.Count > 0)
                            {
                                List<string> paragraphs = new List<string>();
                                foreach (string LO_DesignacaoNumPoliciaAntigo in nvl.LO_DesignacaoNumPoliciaAntigo)
                                    paragraphs.Add("• " + LO_DesignacaoNumPoliciaAntigo);

                                detailsTable = CreateTable(indentation);
                                AddNewCell(detailsTable, "");
                                AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                AddNewCell(detailsTable, paragraphs, this.ContentFont);
                                AddTable(doc, detailsTable);
                            }
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.LO_TecnicoObra:
                            if (nvl.LO_TecnicoObra.Count > 0)
                            {
                                List<string> paragraphs = new List<string>();
                                foreach (string LO_TecnicoObra in nvl.LO_TecnicoObra)
                                    paragraphs.Add("• " + LO_TecnicoObra);

                                detailsTable = CreateTable(indentation);
                                AddNewCell(detailsTable, "");
                                AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                AddNewCell(detailsTable, paragraphs, this.ContentFont);
                                AddTable(doc, detailsTable);
                            }
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.LO_AtestHabit:
                            if (nvl.LO_AtestHabit.Count > 0)
                            {
                                List<string> paragraphs = new List<string>();
                                foreach (string LO_AtestHabit in nvl.LO_AtestHabit)
                                    paragraphs.Add("• " + LO_AtestHabit);

                                detailsTable = CreateTable(indentation);
                                AddNewCell(detailsTable, "");
                                AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                AddNewCell(detailsTable, paragraphs, this.ContentFont);
                                AddTable(doc, detailsTable);
                            }
                            break;
                        case ReportParameterRelInvCatPesqDet.CamposRelInvCatPesqDet.LO_DataLicConst:
                            if (nvl.LO_DataLicConst.Count > 0)
                            {
                                List<string> paragraphs = new List<string>();
                                foreach (string LO_DataLicConst in nvl.LO_DataLicConst)
                                    paragraphs.Add("• " + LO_DataLicConst);

                                detailsTable = CreateTable(indentation);
                                AddNewCell(detailsTable, "");
                                AddNewCell(detailsTable, GetParameterName(param) + ":", this.HeaderFont);
                                AddNewCell(detailsTable, paragraphs, this.ContentFont);
                                AddTable(doc, detailsTable);
                            }
                            break;
                        #endregion
                    }
                }
            }
		}
Beispiel #22
0
        private void AddNivelContexto(Document doc, Nivel nvl, float indentation, iTextSharp.text.Font font)
        {
            Table detailsTable;

            string nivelStr = string.Empty;
            nivelStr = string.Format("{0}: {1}", nvl.TipoNivelRelacionado, nvl.Designacao);

            Paragraph p;
            p = new Paragraph(CentimeterToPoint(0.5f), nivelStr, font);
            p.IndentationLeft = CentimeterToPoint(0 + indentation);
            p.SpacingBefore = 5f;
            doc.Add(p);

            string datasProducao = GISA.Utils.GUIHelper.FormatDateInterval(
                GISA.Utils.GUIHelper.FormatDate(nvl.InicioAno, nvl.InicioMes, nvl.InicioDia, nvl.InicioAtribuida),
                GISA.Utils.GUIHelper.FormatDate(nvl.FimAno, nvl.FimMes, nvl.FimDia, nvl.FimAtribuida));            
            
            if (IsDetalhado())
                datasProducao = nvl.InicioTexto + " " + datasProducao;

            detailsTable = CreateTable(indentation);
            AddNewCell(detailsTable, "");
            AddNewCell(detailsTable, "Datas de produção:", this.HeaderFont);
            AddNewCell(detailsTable, datasProducao, this.ContentFont);
            AddTable(doc, detailsTable);

            detailsTable = CreateTable(indentation);
            AddNewCell(detailsTable, "");
            if (nvl.CodigosCompletos.Count > 0)
            {
                List<string> codigos = new List<string>();
                foreach (string codigoCompleto in nvl.CodigosCompletos)
                    codigos.Add(codigoCompleto);

                AddNewCell(detailsTable, "Código(s) de referência:", this.HeaderFont);
                AddNewCell(detailsTable, codigos, this.ContentFont);
            }
            else
            {
                AddNewCell(detailsTable, "Código parcial:", this.HeaderFont);
                AddNewCell(detailsTable, nvl.Codigo, this.ContentFont);
            }
            AddTable(doc, detailsTable);
            
            AddExtraDetails(nvl, doc, indentation);
            
            DoRemovedEntries(1);
        }
Beispiel #23
0
        // utilizado no contexto das eliminações
        public static void verifyIfCanDeleteRH(PersistencyHelper.PreConcArguments args)
        {
            PersistencyHelper.canDeleteRHRowPreConcArguments cdrhPca = null;
            cdrhPca = (PersistencyHelper.canDeleteRHRowPreConcArguments)args;

            GISADataset.NivelRow nRow      = (GISADataset.NivelRow)(GisaDataSetHelper.GetInstance().Nivel.Select("ID=" + cdrhPca.nRowID.ToString())[0]);
            GISADataset.NivelRow nUpperRow = null;
            if (GisaDataSetHelper.GetInstance().Nivel.Select("ID=" + cdrhPca.nUpperRowID.ToString()).Length > 0)
            {
                nUpperRow = (GISADataset.NivelRow)(GisaDataSetHelper.GetInstance().Nivel.Select("ID=" + cdrhPca.nUpperRowID.ToString())[0]);
            }
            GISADataset.RelacaoHierarquicaRow rhRow = null;
            if (GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", cdrhPca.rhRowID, cdrhPca.rhRowIDUpper)).Length > 0)
            {
                rhRow = (GISADataset.RelacaoHierarquicaRow)(GisaDataSetHelper.GetInstance().RelacaoHierarquica.Select(string.Format("ID={0} AND IDUpper={1}", cdrhPca.rhRowID, cdrhPca.rhRowIDUpper))[0]);
            }

            // Permitir apenas a eliminação de folhas e de níveis cuja
            // a funcionalidade eliminação não elimina o nível propriamente
            // dito mas sim a sua relação com o nível superior
            int  parentCount          = 0;
            int  directChildCount     = 0;
            bool moreThenOneParent    = false;
            bool notExistsDirectChild = false;

            parentCount          = DBAbstractDataLayer.DataAccessRules.NivelRule.Current.getParentCount(cdrhPca.nRowID.ToString(), cdrhPca.tran);
            directChildCount     = DBAbstractDataLayer.DataAccessRules.NivelRule.Current.getDirectChildCount(cdrhPca.nRowID.ToString(), string.Empty, cdrhPca.tran);
            moreThenOneParent    = parentCount > 1;
            notExistsDirectChild = directChildCount == 0;

            Trace.WriteLine("parentCount: " + parentCount.ToString());
            Trace.WriteLine("directChildCount: " + directChildCount.ToString());

            if (!(!(TipoNivel.isNivelOrganico(nRow) && TipoNivel.isNivelOrganico(nUpperRow)) && (TipoNivel.isNivelOrganico(nRow) || (TipoNivel.isNivelOrganico(nUpperRow) && moreThenOneParent) || (notExistsDirectChild))))
            {
                string filter = string.Format("rh.IDTipoNivelRelacionado != {0:d}", TipoNivelRelacionado.UF);
                parentCount          = DBAbstractDataLayer.DataAccessRules.NivelRule.Current.getParentCount(cdrhPca.nRowID.ToString(), cdrhPca.tran);
                directChildCount     = DBAbstractDataLayer.DataAccessRules.NivelRule.Current.getDirectChildCount(cdrhPca.nRowID.ToString(), filter, cdrhPca.tran);
                moreThenOneParent    = parentCount > 1;
                notExistsDirectChild = directChildCount == 0;

                Trace.WriteLine("parentCount: " + parentCount.ToString());
                Trace.WriteLine("directChildCount: " + directChildCount.ToString());

                cdrhPca.deleteSuccessful = false;
                cdrhPca.continueSave     = false;

                if (!(!(TipoNivel.isNivelOrganico(nRow) && TipoNivel.isNivelOrganico(nUpperRow)) && (TipoNivel.isNivelOrganico(nRow) || (TipoNivel.isNivelOrganico(nUpperRow) && moreThenOneParent) || (notExistsDirectChild))))
                {
                    cdrhPca.message = "Só é possível eliminar os níveis que não tenham outros níveis directamente associados";
                }
                else
                {
                    cdrhPca.message = "Existem unidades físicas associadas a este nível não podendo por isso ser eliminado.";
                }
            }
            else
            {
                //ToDo: simplificar este IF: o facto de rhrow ser nothing indica o caso onde é necessario executar o
                // o método DeleteInDataSet
                if (rhRow != null)
                {
                    System.Data.DataSet tempgisaBackup1 = cdrhPca.gisaBackup;
                    PersistencyHelper.BackupRow(ref tempgisaBackup1, rhRow);
                    cdrhPca.gisaBackup = tempgisaBackup1;
                    rhRow.Delete();
                }
                else
                {
                    Nivel.DeleteInDataSet(nRow, false, cdrhPca.gisaBackup); // é possível que esta linha não seja já precisa uma vez que o cleandeleteddata seguinte irá limpar do DS de trabalho as linhas que já não existam
                }
            }
        }
Beispiel #24
0
			protected override GISADataset.RelacaoHierarquicaRow[] GetNextNivelRows(GISADataset CurrentDataSet, GISADataset.NivelRow CurrentNivel)
			{
				return Nivel.GetChildren(CurrentDataSet, CurrentNivel);
			}