Beispiel #1
0
 internal void Write(System.Xml.XmlWriter writer, ODataPersistenceEngineAsync engine)
 {
     writer.WriteStartElement("url", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
     if (Value.Name[0] == '$')
         writer.WriteString(Value.Name);
     else
         writer.WriteString(engine.GetUri(Value).ToString());
     writer.WriteEndElement();
 }
Beispiel #2
0
 public int WriteTo(System.IO.StreamWriter sw, ODataPersistenceEngineAsync engine)
 {
     long position = sw.BaseStream.Position;
     if (!isRoot)
     {
         foreach (KeyValuePair<string, string> header in headers)
             sw.WriteLine(header.Key + ": " + header.Value);
     }
     //MemoryStream ms;
     //StreamWriter msw;
     //ms = new MemoryStream();
     //msw = new StreamWriter(ms);
     //msw.NewLine = sw.NewLine;
     //int length = 0;
     //foreach (Change change in Changes)
     //{
     //    length += ("--changeset_" + Id + "\n").Length;
     //    length += ("Content-Type: application/http" + "\n").Length;
     //    if (change.Expression.Name != null && change.Expression.Name[0] == '$')
     //        length += (change.Method + " " + engine.GetUri(change.Expression).AbsolutePath.Substring(((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.AbsolutePath.Length) + " HTTP/1.1").Length + sw.NewLine.Length;
     //    else
     //        length += (change.Method + " " + engine.GetUri(change.Expression) + " HTTP/1.1").Length + sw.NewLine.Length;
     //    length += ("Host: " + ((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.Host + (((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.Port == 80 ? "" : ":" + ((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.Port) + "\n").Length;
     //    length += change.WriteTo(msw, engine);
     //}
     //length += ("--changeset_" + Id + "--\n").Length;
     //length += 2;
     //sw.WriteLine("Content-Length: " + length);
     sw.WriteLine();
     sw.Flush();
     //msw.Close();
     foreach (Change change in Changes)
     {
         sw.WriteLine("--changeset_" + Id);
         sw.WriteLine("Content-Type: application/http");
         sw.WriteLine("Content-Transfer-Encoding: binary");
         sw.WriteLine();
         if (change.Expression.Name != null && change.Expression.Name[0] == '$')
             sw.WriteLine(change.Method + " " + engine.GetUri(change.Expression).AbsolutePath.Substring(((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.AbsolutePath.Length ) + " HTTP/1.1");
         else
             sw.WriteLine(change.Method + " " + engine.GetUri(change.Expression) + " HTTP/1.1");
         sw.WriteLine("Host: " + ((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.Host + (((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.Port == 80 ? "" : ":" + ((ODataPersistenceProvider)engine.FactoryAsync).ConnectionString.Port));
         sw.Flush();
         change.WriteTo(sw, engine);
         //sw.WriteLine();
         sw.WriteLine();
     }
     sw.WriteLine("--changeset_" + Id + "--");
     sw.WriteLine();
     sw.Flush();
     return (int)(sw.BaseStream.Length - position);
 }
Beispiel #3
0
        public int WriteTo(StreamWriter s, ODataPersistenceEngineAsync engine)
        {
            MemoryStream ms = new MemoryStream();
            XmlWriter writer = XmlWriter.Create(ms, new XmlWriterSettings() { Encoding = s.Encoding, Indent = true, NewLineChars = s.NewLine });
            if (Link != null)
                headers["Content-Type"] = "application/xml";
            else
                headers["Content-Type"] = "application/atom+xml;type=entry";
            foreach (KeyValuePair<string, string> item in Headers)
            {
                s.WriteLine(item.Key + ": " + item.Value);
            }

            switch (Mode)
            {
                case ChangeMode.Insert:
                    if (Link == null)
                        Entry.Write(writer, engine);
                    else
                        Link.Write(writer, engine);
                    writer.Flush();
                    s.WriteLine("Content-Length: " + (ms.Length + 1));
                    s.WriteLine();
                    s.Flush();
                    ms.Position = 0;
                    Util.Write(ms, s.BaseStream);
                    return (int)ms.Length;
                case ChangeMode.Update:
                    Entry.Write(writer, engine);
                    writer.Flush();
                    s.WriteLine("Content-Length: " + (ms.Length + 1));
                    ms.Position = 0;
                    Util.Write(ms, s.BaseStream);
                    return (int)ms.Length;
                case ChangeMode.Delete:
                    if (Entry != null)
                        Entry.Write(writer, engine);
                    else
                        Link.Write(writer, engine);
                    writer.Flush();
                    break;
                default:
                    break;
            }
            return 0;
        }
Beispiel #4
0
        public int WriteTo(System.IO.StreamWriter sw, ODataPersistenceEngineAsync engine)
        {
            long position = sw.BaseStream.Position;
            if (!isRoot)
                foreach (KeyValuePair<string, string> header in headers)
                    sw.WriteLine(header.Key + ": " + header.Value);
            MemoryStream ms;
            StreamWriter msw;
            ms = new MemoryStream();
            msw = new StreamWriter(ms);
            msw.NewLine = sw.NewLine;
            int length = 0;
            foreach (IOperation change in Operations)
            {
                length += ("--batch_" + Id + "\n").Length;
                length += change.WriteTo(msw, engine);
            }
            length += ("--batch_" + Id + "--\n").Length;
            msw.Flush();
            if (!isRoot)
            {
                sw.WriteLine("Content-Length: " + length);
                sw.WriteLine();
            }
            sw.Flush();
            foreach (IOperation change in Operations)
            {
                sw.WriteLine("--batch_" + Id);
                sw.Flush();
                change.WriteTo(sw, engine);
            }
            sw.Write("--batch_" + Id + "--");
            //sw.WriteLine();
            sw.Flush();
            return (int)(sw.BaseStream.Length - position);

        }
Beispiel #5
0
 public ODataCommandProcessor(ODataPersistenceEngineAsync engine)
 {
     this.engine = engine;
     boundary = "batch_" + Guid.NewGuid();
 }
Beispiel #6
0
Datei: Get.cs Projekt: npenin/uss
 public int WriteTo(System.IO.StreamWriter s, ODataPersistenceEngineAsync engine)
 {
     throw new NotImplementedException();
 }
Beispiel #7
0
        internal void Write(System.Xml.XmlWriter writer, ODataPersistenceEngineAsync engine)
        {
            writer.WriteStartElement("entry", "http://www.w3.org/2005/Atom");
            writer.WriteAttributeString("xmlns", "m", "http://www.w3.org/2000/xmlns/", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
            writer.WriteAttributeString("xmlns", "http://www.w3.org/2005/Atom");
            writer.WriteAttributeString("xmlns", "d", "http://www.w3.org/2000/xmlns/", "http://schemas.microsoft.com/ado/2007/08/dataservices");

            //writer.WriteElementString("id", "http://www.w3.org/2005/Atom", Identity);

            writer.WriteStartElement("category", "http://www.w3.org/2005/Atom");
            writer.WriteAttributeString("scheme", "http://schemas.microsoft.com/ado/2007/08/dataservices/scheme");
            writer.WriteAttributeString("term", Category);
            writer.WriteEndElement();

            writer.WriteStartElement("title", "http://www.w3.org/2005/Atom");
            //writer.WriteAttributeString("type", "text");
            writer.WriteEndElement();

            writer.WriteStartElement("updated", "http://www.w3.org/2005/Atom");
            writer.WriteString(DateTime.UtcNow.ToString("o"));
            writer.WriteEndElement();

            writer.WriteStartElement("author", "http://www.w3.org/2005/Atom");
            writer.WriteStartElement("name", "http://www.w3.org/2005/Atom");
            writer.WriteEndElement();
            writer.WriteEndElement();
            writer.WriteStartElement("id", "http://www.w3.org/2005/Atom");
            writer.WriteEndElement();


            writer.WriteStartElement("content", "http://www.w3.org/2005/Atom");
            writer.WriteAttributeString("type", "application/xml");
            writer.WriteStartElement("properties", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");

            foreach (var item in DataValues)
            {
                item.Write(writer);
            }

            //End of properties
            writer.WriteEndElement();
            //End of content
            writer.WriteEndElement();

            //End of entry
            writer.WriteEndElement();
        }