public static void Serialize(object obj, Stream stream, WritingFormat writingFormat = WritingFormat.InOneLine)
        {
            Type t = obj.GetType();

            using (StgWriter writer = new StgTextWriter(stream, writingFormat))
            {
                writer.WriteStgStart();
                if (!t.IsValueType && t != typeof(string) && !t.IsArray)
                {
                    writer.WriteObjectStart(t.Name);
                    foreach (var item in t.GetProperties())
                    {
                        if (item.PropertyType.IsArray)
                        {
                            writer.WriteArray(item.Name, (Array)item.GetValue(obj));
                        }
                        else if (item.PropertyType == typeof(string))
                        {
                            writer.WriteString(item.Name, (string)item.GetValue(obj));
                        }
                        else
                        {
                            writer.WriteValueType(item.Name, (ValueType)item.GetValue(obj));
                        }
                    }
                    foreach (var item in t.GetFields())
                    {
                        if (item.FieldType.IsArray)
                        {
                            writer.WriteArray(item.Name, (Array)item.GetValue(obj));
                        }
                        else if (item.FieldType == typeof(string))
                        {
                            writer.WriteString(item.Name, (string)item.GetValue(obj));
                        }
                        else
                        {
                            writer.WriteValueType(item.Name, (ValueType)item.GetValue(obj));
                        }
                    }
                    writer.WriteObjectEnd();
                }
                else if (t.IsValueType)
                {
                    writer.WriteValueType(nameof(obj), (ValueType)obj);
                }
                else if (t.IsArray)
                {
                    writer.WriteArray(nameof(obj), (Array)obj);
                }
                else
                {
                    writer.WriteString(nameof(obj), (string)obj);
                }
                writer.WriteStgEnd();
            }
        }
Example #2
0
 public static void SerializeObject(object obj, Stream stream, WritingFormat writingFormat)
 {
     if (stream != null)
     {
         StgSerializer.Serialize(obj, stream, writingFormat);
     }
     else
     {
         throw new NullReferenceException();
     }
 }
Example #3
0
 //ctor
 public StgTextWriter(StreamWriter writer, WritingFormat writingFormat)
 {
     InnerWriter   = writer;
     WritingFormat = writingFormat;
 }
Example #4
0
 //ctor
 public StgTextWriter(Stream stream, WritingFormat writingFormat)
 {
     InnerWriter   = new StreamWriter(stream);
     WritingFormat = writingFormat;
 }
Example #5
0
        public ActionResult UploadEdit(string[] FormatTags, string[] Pseudonyms, HttpPostedFileBase file, FormCollection form, [Bind(Include = "ProfileID, Title, LikesOn," +
                                                                                                                                               "CommentsOn, CritiqueOn, DescriptionText")] Writing doc)
        {
            String FileExt = Path.GetExtension(file.FileName).ToUpper();

            if (CheckExtEdit(FileExt))
            {
                AccessPermission ap = new AccessPermission()
                {
                    PublicAccess    = form["PublicAccess"] != null ? true : false,
                    FriendAccess    = form["FriendAccess"] != null ? true : false,
                    PublisherAccess = form["PublisherAccess"] != null ? true : false,
                    MinorAccess     = form["MinorAccess"] != null ? true : false
                };
                db.AccessPermissions.Add(ap);
                db.SaveChanges();

                if (!ModelState.IsValid)
                {
                    Stream       str        = file.InputStream;
                    BinaryReader Br         = new BinaryReader(str);
                    Byte[]       FileData   = Br.ReadBytes((Int32)str.Length);
                    string       html       = string.Empty;
                    string[]     namestring = file.FileName.Split('.');

                    if (FileExt == ".PDF" || FileExt == "PDF")
                    {
                        SautinSoft.PdfFocus f = new SautinSoft.PdfFocus();
                        f.OpenPdf(FileData);

                        if (f.PageCount > 0)
                        {
                            f.HtmlOptions.IncludeImageInHtml = true;
                            f.HtmlOptions.Title = "Simple text";
                            html = f.ToHtml();
                        }
                    }
                    else if (FileExt == ".DOCX" || FileExt == "DOCX" || FileExt == ".DOC" || FileExt == "DOC")
                    {
                        html = ConvertToHtml(Path.GetFullPath(file.FileName));
                    }
                    else
                    {
                        ViewBag.FileStatus = "Model Invalid";
                        return(View());
                    }

                    Writing wr = new Writing()
                    {
                        ProfileID          = Int32.Parse(form["ProfileID"]),
                        AccessPermissionID = ap.AccessPermissionID,
                        Title      = form["Title"],
                        AddDate    = DateTime.Now,
                        EditDate   = null,
                        LikesOn    = form["LikesOn"] != null ? true : false,
                        CommentsOn = form["CommentsOn"] != null ? true : false,
                        CritiqueOn = form["CritiqueOn"] != null ? true : false,
                        UsePseudonymsInAdditionToUsername = form["UsePseudonymsInAdditionToUsername"] != null ? true : false,
                        DocType         = ".HTML",
                        DescriptionText = form["DescriptionText"],
                        Document        = Encoding.Unicode.GetBytes(html),
                        WritingFileName = namestring[0] + ".html"
                    };
                    db.Writings.Add(wr);
                    db.SaveChanges();

                    int id = wr.WritingID;

                    ap                 = db.AccessPermissions.Find(ap.AccessPermissionID);
                    ap.WritingID       = id;
                    db.Entry(ap).State = EntityState.Modified;
                    db.SaveChanges();

                    if (FormatTags != null)
                    {
                        foreach (var selection in FormatTags)
                        {
                            WritingFormat wf = new WritingFormat()
                            {
                                WritingID = id,
                                FormatID  = Int32.Parse(selection)
                            };
                            db.WritingFormats.Add(wf);
                            db.SaveChanges();
                        }
                    }

                    if (Pseudonyms != null)
                    {
                        foreach (var selection in Pseudonyms)
                        {
                            WritingPseudonym wp = new WritingPseudonym()
                            {
                                WritingID   = id,
                                PseudonymID = Int32.Parse(selection)
                            };
                            db.WritingPseudonyms.Add(wp);
                            db.SaveChanges();
                        }
                    }


                    return(RedirectToAction("Index", "Home", new { @id = id }));
                }
                else
                {
                    ViewBag.FileStatus = "File Type Not valid: Valid file type for edit is currently .PDF";
                    return(View());
                }
            }
            else
            {
                ViewBag.FileStatus = "Invalid file format.";
                return(View());
            }
        }
Example #6
0
        public ActionResult Store(string[] FormatTags, string[] Pseudonyms, HttpPostedFileBase file, FormCollection form, [Bind(Include = "ProfileID, Title, LikesOn," +
                                                                                                                                          "CommentsOn, CritiqueOn, DescriptionText")] Writing doc)
        {
            String FileExt = Path.GetExtension(file.FileName).ToUpper();

            if (CheckExt(FileExt))
            {
                AccessPermission ap = new AccessPermission()
                {
                    PublicAccess    = form["PublicAccess"] != null ? true : false,
                    FriendAccess    = form["FriendAccess"] != null ? true : false,
                    PublisherAccess = form["PublisherAccess"] != null ? true : false,
                    MinorAccess     = form["MinorAccess"] != null ? true : false
                };
                db.AccessPermissions.Add(ap);
                db.SaveChanges();

                if (!ModelState.IsValid)
                {
                    Stream       str      = file.InputStream;
                    BinaryReader Br       = new BinaryReader(str);
                    Byte[]       FileData = Br.ReadBytes((Int32)str.Length);

                    Writing wr = new Writing()
                    {
                        ProfileID          = Int32.Parse(form["ProfileID"]),
                        AccessPermissionID = ap.AccessPermissionID,
                        Title      = form["Title"],
                        AddDate    = DateTime.Now,
                        EditDate   = null,
                        LikesOn    = form["LikesOn"] != null ? true : false,
                        CommentsOn = form["CommentsOn"] != null ? true : false,
                        CritiqueOn = form["CritiqueOn"] != null ? true : false,
                        UsePseudonymsInAdditionToUsername = form["UsePseudonymsInAdditionToUsername"] != null ? true : false,
                        DocType         = FileExt,
                        DescriptionText = form["DescriptionText"],
                        Document        = FileData,
                        WritingFileName = file.FileName
                    };
                    db.Writings.Add(wr);
                    db.SaveChanges();

                    int id = wr.WritingID;

                    ap                 = db.AccessPermissions.Find(ap.AccessPermissionID);
                    ap.WritingID       = id;
                    db.Entry(ap).State = EntityState.Modified;
                    db.SaveChanges();

                    if (FormatTags != null)
                    {
                        foreach (var selection in FormatTags)
                        {
                            WritingFormat wf = new WritingFormat()
                            {
                                WritingID = id,
                                FormatID  = Int32.Parse(selection)
                            };
                            db.WritingFormats.Add(wf);
                            db.SaveChanges();
                        }
                    }

                    if (Pseudonyms != null)
                    {
                        foreach (var selection in Pseudonyms)
                        {
                            WritingPseudonym wp = new WritingPseudonym()
                            {
                                WritingID   = id,
                                PseudonymID = Int32.Parse(selection)
                            };
                            db.WritingPseudonyms.Add(wp);
                            db.SaveChanges();
                        }
                    }


                    return(RedirectToAction("Index", "Home", new { @id = id }));
                }
                else
                {
                    ViewBag.FileStatus = "Model Invalid";
                    return(View());
                }
            }
            else
            {
                ViewBag.FileStatus = "Invalid file format.";
                return(View());
            }
        }