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)); }
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); }
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)); }
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]); }
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]); }
public static bool IsNivelEntidadeDetentora(GISADataset.NivelRow nRow) { if (Nivel.GetSelf(GisaDataSetHelper.GetInstance(), nRow).Length == 0) { return(true); } return(false); }
// reimplementar para relatorios detalhados protected virtual void AddExtraDetails(Nivel nvl, Document doc, float indentation) { }
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); } }
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); }
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); } } } }
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); }
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; }
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; }
// 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(); }
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); }
public void AddLower(Nivel nvl) { Lowers.Add(nvl); if (!nvl.Uppers.Contains(this)) { nvl.Uppers.Add(this); } }
public void AddProdutor(Nivel nvl) { if (!this.Produtores.Contains(nvl)) { this.Produtores.Add(nvl); } }
// 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); }
protected void AddNivelEstrutural(Document doc, Nivel nvl, float indentation, List<Nivel> niveisContexto) { AddNivelEstrutural(doc, nvl, indentation, this.BodyFont, niveisContexto, false); }
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 } } } }
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); }
// 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 } } }
protected override GISADataset.RelacaoHierarquicaRow[] GetNextNivelRows(GISADataset CurrentDataSet, GISADataset.NivelRow CurrentNivel) { return Nivel.GetChildren(CurrentDataSet, CurrentNivel); }