Пример #1
0
        private void LoadVersion(int version)
        {
            this.Cursor = Cursors.WaitCursor;
            var objSimples = mCurrentODSimples[0];

            if (version > 0)
            {
                // Mostrar versão historica (e bloquear alterações)
                ObjDigSimples VersaoObjectoDigital = (ObjDigSimples)SessionHelper.AppConfiguration.GetCurrentAppconfiguration().FedoraHelperSingleton.LoadID(objSimples.pid, objSimples.historico[version].timestamp);
                FicheirosOrderManager1.Deactivate();
                ObjectToView(VersaoObjectoDigital);
                grpODTitleAndPub.Enabled = false;
                FicheirosOrderManager1.ActivateReadOnlyMode();
            }
            else
            {
                // Mostar versão original (desbloquear alterações)
                FicheirosOrderManager1.Deactivate();
                ObjectToView(objSimples);
                grpODTitleAndPub.Enabled = true;
                if (FedoraHelper.HasObjDigWritePermission(objSimples.pid))
                {
                    FicheirosOrderManager1.DeactivateReadOnlyMode();
                }
            }

            this.Cursor = Cursors.Default;
        }
Пример #2
0
        private void DocumentoSimplesOrderManager1_NewInvoked(object sender, EventArgs e)
        {
            var frm    = new frmObjetoDigitalSimples();
            var result = frm.ShowDialog();

            if (result == DialogResult.Cancel)
            {
                return;
            }

            var odSimples = new ObjDigSimples();

            odSimples.pid             = "-1";
            odSimples.gisa_id         = "";
            odSimples.titulo          = frm.Titulo;
            odSimples.publicado       = frm.Publicado;
            odSimples.fich_associados = frm.imagens;
            odSimples.state           = State.added;

            var item = AddODSimplesToList(odSimples);

            DocumentoSimplesOrderManager1.addNewItem(item);

            UpdateODCompostoStatePublicado();
            UpdateGrpODComposto();
        }
        private void CreateDatabaseObjDigSimplesSolto(ObjDigSimples odSimples)
        {
            Debug.Assert(odSimples.guiorder > 0);
            var odRow = GisaDataSetHelper.GetInstance().ObjetoDigital.AddObjetoDigitalRow(odSimples.pid, odSimples.titulo, odSimples.publicado, odSimples.guiorder, new byte[] { }, 0);

            //PermissoesHelper.AddNewObjDigGrantPermissions(odRow, currentNivel);

            FedoraHelper.RelateODtoUI(odSimples, odRow, currentNivel.GetFRDBaseRows().Single());

            newObjects.Add(odRow, odSimples);
        }
        private static void UpdateNvlDocSimplesOrderNr(ObjDigSimples odSimples)
        {
            if (odSimples.gisa_id != null && odSimples.gisa_id.Length > 0)
            {
                var nds = GisaDataSetHelper.GetInstance().NivelDocumentoSimples.Cast <GISADataset.NivelDocumentoSimplesRow>().SingleOrDefault(r => r.RowState != DataRowState.Deleted && r.ID == FedoraHelper.GetGisaID(odSimples.gisa_id));

                if (nds != null)
                {
                    nds.GUIOrder = odSimples.guiorder;
                }
            }
        }
Пример #5
0
        public void Load(ObjDigSimples objecto)
        {
            this.objSimples = objecto;

            if (objSimples != null)
            {
                versionBar.Minimum = 0;
                versionBar.Maximum = Math.Max(objSimples.historico.Count - 1, 0);
                versionBar.Value   = 0;
                UpdateVersionLabels(false);
                VersionChanged(this, versionBar.Value);
                this.Enabled = true;
            }
            else
            {
                this.Enabled = false;
            }
        }
Пример #6
0
        private static void UpdateObjSimples(ObjDigComposto odComposto, ObjDigSimples odSimples, List <Anexo> anexos, string titulo, bool publicado)
        {
            if (anexos.Count != odSimples.fich_associados.Count)
            {
                odSimples.fich_associados.Clear();
                odSimples.fich_associados.AddRange(anexos);
                odSimples.state = odSimples.state != State.added ? State.modified : State.added;

                if (odComposto != null)
                {
                    odComposto.state = State.poked;
                }
            }
            else
            {
                for (int i = 0; i < anexos.Count; i++)
                {
                    if (!anexos[i].url.Equals(odSimples.fich_associados[i].url))
                    {
                        odSimples.fich_associados[i] = anexos[i];
                        odSimples.state = odSimples.state != State.added ? State.modified : State.added;

                        if (odComposto != null && odComposto.state == State.unchanged)
                        {
                            odComposto.state = State.poked;
                        }
                    }
                }
            }

            if (!odSimples.titulo.Equals(titulo) || odSimples.publicado != publicado)
            {
                odSimples.titulo    = titulo.Length > 0 ? titulo : odSimples.titulo;
                odSimples.publicado = publicado;
                odSimples.state     = odSimples.state != State.added ? State.modified : State.added;

                if (odComposto != null)
                {
                    odComposto.state = odComposto.state != State.added ? State.modified : State.added;
                }
            }
        }
Пример #7
0
        private void ObjectToView(ObjDigSimples objDigital)
        {
            txtTitulo.Text      = objDigital.titulo;
            chkPublicar.Checked = objDigital.publicado;

            var itemsToBeAdded = new List <ListViewItem>();

            objDigital.fich_associados.ForEach(f =>
            {
                var datastream = f as Anexo;
                var item       = FicheirosOrderManager1.CreateItem(datastream.url, datastream);
                itemsToBeAdded.Add(item);
            });

            if (itemsToBeAdded.Count > 0)
            {
                FicheirosOrderManager1.populateItems(itemsToBeAdded);
                FicheirosOrderManager1.selectFirst();
            }
        }
        private void AddOrRemoveODRelations(ObjDigComposto odComp, ObjDigSimples odSimples, GISADataset.ObjetoDigitalRow odRow)
        {
            var frdRow = currentNivel.GetFRDBaseRows().Single();

            if (odComp.state == State.added)
            {
                var imgODRow = odRow.GetSFRDImagemObjetoDigitalRows().SingleOrDefault(r => r.IDFRDBase == frdRow.ID);
                if (imgODRow != null) // esta row é nula no caso dos ODs Simples associados a subdocumentos
                {
                    imgODRow.SFRDImagemRowParent.Delete();
                    imgODRow.Delete();
                }
                GisaDataSetHelper.GetInstance().ObjetoDigitalRelacaoHierarquica.AddObjetoDigitalRelacaoHierarquicaRow(odRow, currentObjetoDigitalRowComp, new byte[] { }, 0);
            }
            else if (odComp.state == State.deleted)
            {
                if (odRow.GetSFRDImagemObjetoDigitalRows().Count() == 0) // se se tratar de um od simples sem estar relacionado com um subdocumento cria-se relacao com a UI selecionada
                {
                    FedoraHelper.RelateODtoUI(odSimples, odRow, currentNivel.GetFRDBaseRows().Single());
                }
            }
        }
Пример #9
0
        private ListViewItem AddODSimplesToList(ObjDigSimples objSimples)
        {
            var hasReadPermission = true;

            if (objSimples.state != State.added)
            {
                hasReadPermission = FedoraHelper.HasObjDigReadPermission(objSimples.pid);
            }

            var item = DocumentoSimplesOrderManager1.CreateItem(FedoraHelper.GetDesignacaoUI(objSimples.pid), objSimples.titulo, objSimples.state == State.added ? "" : objSimples.pid, objSimples.publicado, objSimples);

            // marcar os objetos simples para os quais não existe permissão de leitura
            if (!hasReadPermission)
            {
                item.ForeColor = Color.Gray;
            }

            if (objSimples.state == State.notFound)
            {
                item.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, FontStyle.Italic, System.Drawing.GraphicsUnit.Point, System.Convert.ToByte(0));
            }

            return(item);
        }
        private void CreateDatabaseObjDigSimples(ObjDigComposto odComp, GISADataset.ObjetoDigitalRow odRowComp, ObjDigSimples odSimples)
        {
            Debug.Assert(odComp != null);
            Debug.Assert(odSimples != null);
            Debug.Assert(odRowComp != null && odRowComp.RowState != DataRowState.Deleted);

            var orderNr = odComp.objSimples.IndexOf(odSimples);
            var odRow   = GisaDataSetHelper.GetInstance().ObjetoDigital.AddObjetoDigitalRow(odSimples.pid, odSimples.titulo, odSimples.publicado, (orderNr + 1), new byte[] { }, 0);


            GisaDataSetHelper.GetInstance().ObjetoDigitalRelacaoHierarquica.AddObjetoDigitalRelacaoHierarquicaRow(odRow, odRowComp, new byte[] { }, 0);
            //PermissoesHelper.AddNewObjDigGrantPermissions(odRow, currentNivel);

            newObjects.Add(odRow, odSimples);
        }
Пример #11
0
        public void ViewToModel()
        {
            if (mViewMode == ObjetoDigitalFedoraHelper.Contexto.objetosDigitais)
            {
                // neste modo não deveria haver qualquer mudança neste ponto
                if (disableSave)
                {
                    return;
                }

                if (mCurrentODComp == null)
                {
                    var hasChanges = false;
                    UpdateObjectsList(ref mCurrentODSimples, out hasChanges);

                    if (chkKeepODComposto.Checked && mCurrentODSimples.Count > 0)
                    {
                        mCurrentODComp       = new ObjDigComposto();
                        mCurrentODComp.state = State.added;
                        mCurrentODComp.pid   = "-1";
                        mCurrentODComp.objSimples.AddRange(mCurrentODSimples);
                        mCurrentODComp.titulo = mTitulo;
                        UpdateODSimplesParentTitle(mTitulo);
                        mCurrentODComp.publicado = chkPublicar.Checked;
                    }
                }
                else
                {
                    // actualizar ODs simples sem se considerar o OD Composto
                    var hasChanges = false;
                    UpdateObjectsList(ref mCurrentODComp.objSimples, out hasChanges);
                    if (hasChanges)
                    {
                        mCurrentODComp.state = State.modified;
                    }

                    mCurrentODComp.publicado = chkPublicar.Checked;

                    if (!chkKeepODComposto.Checked)
                    {
                        // foi decidido não manter o OD Composto
                        mCurrentODComp.state = State.deleted;
                        UpdateODSimplesParentTitle("");
                    }
                    else if (!mCurrentODComp.titulo.Equals(txtTitulo.Text))
                    {
                        mCurrentODComp.titulo = txtTitulo.Text;
                        mCurrentODComp.state  = State.modified;
                    }
                }
            }
            else if (mViewMode == ObjetoDigitalFedoraHelper.Contexto.imagens)
            {
                var items = FicheirosOrderManager1.Items();
                if (mCurrentODSimples.Count == 0)
                {
                    if (items.Count == 0)
                    {
                        return;
                    }
                    else
                    {
                        var odSimples = new ObjDigSimples();
                        odSimples.state = State.added;
                        odSimples.pid   = "-1";
                        odSimples.fich_associados.AddRange(items.Select(i => i.Tag as Anexo));
                        odSimples.nextDatastreamId = 1;
                        odSimples.gisa_id          = "-1";
                        odSimples.titulo           = txtTitulo.Text.Trim().Length == 0 ? mTitulo : txtTitulo.Text.Trim();
                        odSimples.publicado        = chkPublicar.Checked;

                        if (mCurrentODComp != null)
                        {
                            mCurrentODComp.state = State.modified;
                            // o objeto digital será adicionado ao composto no ModelToView do SlavePanelFedora
                            //mCurrentODComp.objSimples.Add(odSimples);
                        }

                        mCurrentODSimples = new List <ObjDigSimples>()
                        {
                            odSimples
                        };
                    }
                }
                else
                {
                    var odSimples = mCurrentODSimples[0];

                    if (items.Count == 0)
                    {
                        // objeto simples sem ficheiros
                        odSimples.state = State.deleted;
                        if (mCurrentODComp != null)
                        {
                            mCurrentODComp.state = ((ObjDigComposto)mCurrentODComp).objSimples.Count(od => od.state != State.deleted) > 1 ? State.modified : State.deleted;
                        }
                    }
                    else
                    {
                        // actualizar a ordem dos ficheiros dentro do objeto digital simples
                        var anexos = items.Select(i => i.Tag as Anexo).ToList();
                        UpdateObjSimples(mCurrentODComp, odSimples, anexos, txtTitulo.Text, chkPublicar.Checked);
                        // actualizar estado publicado do documento composto caso exista

                        if (mCurrentODComp != null)
                        {
                            mCurrentODComp.publicado = mCurrentODComp.objSimples.FirstOrDefault(od => od.publicado) != null;
                        }
                    }
                }
            }
        }