Пример #1
0
        public ActionResult ImportEntry(HttpPostedFileBase fileData)
        {
            try
            {
                if (fileData == null || fileData.FileName == null || fileData.InputStream == null)
                {
                    throw new RFSystemException(this, "No file submitted.");
                }

                var xml      = System.Text.Encoding.UTF8.GetString(RFStreamHelpers.ReadBytes(fileData.InputStream));
                var document = RFXMLSerializer.DeserializeContract(typeof(RFDocument).FullName, xml) as RFDocument;

                if (document == null)
                {
                    return(Error("ImportEntry", "System", null, "Unable to deserialize object."));
                }
                else
                {
                    Context.SaveDocument(document.Key, document.Content);
                    return(RedirectToAction("DataEditor", "System"));
                }
            }
            catch (Exception ex)
            {
                Log.Exception(this, "ImportEntry", ex);
                return(Error("ImportEntry", "System", null, "Error submitting entry: {0}", ex.Message));
            }
        }
Пример #2
0
        public static long ImportCatalogUpdates(IRFProcessingContext context, string path)
        {
            long c = 0;

            foreach (var f in Directory.GetFiles(path, "*.zip").OrderBy(f => f))
            {
                context.SystemLog.Info(typeof(RFCatalogMaintainer), "Importing updates from {0}", f);
                using (var fs = new FileStream(f, FileMode.Open, FileAccess.Read))
                {
                    try
                    {
                        foreach (var entry in ZIPUtils.UnzipArchive(fs))
                        {
                            try
                            {
                                var document = RFXMLSerializer.DeserializeContract(typeof(RFDocument).FullName, new string(Encoding.UTF8.GetChars(entry.Item2))) as RFDocument;
                                if (document != null && context.SaveEntry(document, false, false))
                                {
                                    c++;
                                }
                            }
                            catch (Exception ex)
                            {
                                context.SystemLog.Error(typeof(RFCatalogMaintainer), "Error importing entry {0}: {1}", entry.Item1, ex.Message);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        context.SystemLog.Error(typeof(RFCatalogMaintainer), "Error processing .zip file {0}: {1}", f, ex.Message);
                    }
                }
            }
            return(c);
        }
        public bool SaveDocument(string keyType, string contentType, string keyData, string contentData)
        {
            var key      = RFXMLSerializer.DeserializeContract(keyType, keyData) as RFCatalogKey;
            var content  = RFXMLSerializer.DeserializeContract(contentType, contentData);
            var metadata = new RFMetadata();

            metadata.Properties.Add("Creator", "webuser");
            Context.SaveDocument(key, content, false, CreateUserLogEntry("Save Document", String.Format("Updated document {0}", key.FriendlyString()), null)); // silent
            return(true);
        }
        public bool UpdateDocument(string type, long keyReference, string data)
        {
            var allKeys = Context.GetKeysByType(RFReflectionHelpers.GetTypeByFullName(type));

            if (allKeys.ContainsKey(keyReference))
            {
                var existingDocument = Context.LoadEntry(allKeys[keyReference]) as RFDocument;
                existingDocument.Content = RFXMLSerializer.DeserializeContract(existingDocument.Type, data);
                Context.SaveDocument(existingDocument.Key, existingDocument.Content, false, CreateUserLogEntry("Update Document", String.Format("Saved document {0}", existingDocument.Key.FriendlyString()), null));
            }
            return(true);
        }
Пример #5
0
        public void SerializationTests()
        {
            // type-aware serialization
            var testDoc           = CreateTestDocument();
            var reserializeText   = RFXMLSerializer.DeserializeContract(typeof(TestDocument).FullName, RFXMLSerializer.PrettySerializeContract(testDoc));
            var reserializeBinary = RFXMLSerializer.BinaryDeserializeContract(typeof(TestDocument).FullName, RFXMLSerializer.BinarySerializeContract(testDoc));

            CompareTestDoc(reserializeText as TestDocument);
            CompareTestDoc(reserializeBinary as TestDocument);

            // generic XML serialization, we reserialize to avoid namespace declaration order issues
            var originalXmlString = RFXMLSerializer.BinaryDeserializeXML(RFXMLSerializer.BinarySerializeContract(testDoc));

            Assert.True(originalXmlString.NotBlank());
            Assert.True(originalXmlString.Length > 500);
            var binaryRepresentation  = RFXMLSerializer.BinarySerializeXML(originalXmlString);
            var reserializedXmlString = RFXMLSerializer.BinaryDeserializeXML(binaryRepresentation);

            Assert.Equal(originalXmlString, reserializedXmlString);
        }
Пример #6
0
 public RFCatalogEntry Deserialize()
 {
     return(RFXMLSerializer.DeserializeContract(TypeName, Content) as RFCatalogEntry);
 }