Ejemplo n.º 1
0
        public bool AddObject(ObjDigital objDigital)
        {
            try 
            { 
                string newPid = manager.getNextPID("1", serverNamespace)[0];
                if (objDigital.pid == "-1") objDigital.pid = newPid;
                FoxmlExporter foxml;
                if (objDigital.GetType() == typeof(ObjDigSimples)) foxml = new FoxmlExporter(objDigital as ObjDigSimples, gisaOperator, newPid, serverNamespace);
                else foxml = new FoxmlExporter(objDigital as ObjDigComposto, gisaOperator, newPid, ((ObjDigComposto)objDigital).objSimples, serverNamespace);

                if (Ingest(foxml, newPid) != null)
                {
                    Trace.WriteLine(newPid + " foi ingerido.");
                    objDigital.pid = newPid;
                    objDigital.state = State.unchanged;
                    return true;
                }

                Trace.WriteLine(newPid + " não foi ingerido.");
                return false;
            }
            catch (Exception ex) 
            { 
                Trace.WriteLine(ex.ToString());
                return false;
            }
        }
Ejemplo n.º 2
0
        private string Ingest(FoxmlExporter xml, string identifier)
        {
            StringWriter sw = new StringWriter();
            XmlTextWriter xw = new XmlTextWriter(sw);
            xml.FOXML.WriteTo(xw);
            System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
            byte[] obj = encoding.GetBytes(sw.ToString());
            string newPid = null;

            try
            {
                newPid = manager.ingest(obj, "info:fedora/fedora-system:FOXML-1.1", "Ingestão do documento " + identifier);
                return newPid;
            }
            catch (Exception ex) { 
                Trace.WriteLine(ex.ToString());
                return null;
            }
        }