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)); } }
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); }
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); }
public RFCatalogEntry Deserialize() { return(RFXMLSerializer.DeserializeContract(TypeName, Content) as RFCatalogEntry); }