From 903cff9264ce405d00eab2739fcfb461749b4772 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 10 May 2012 23:47:39 +0100
Subject: Add ConsoleTable framework class for future uniform formatting of
console output tables.
Still subject to change - if you use this be prepared to change your output code if/when the methods change.
Make new "attachments show" command use this.
---
OpenSim/Framework/Console/ConsoleTable.cs | 139 ++++++++++++++++++++++++++++++
1 file changed, 139 insertions(+)
create mode 100644 OpenSim/Framework/Console/ConsoleTable.cs
(limited to 'OpenSim/Framework')
diff --git a/OpenSim/Framework/Console/ConsoleTable.cs b/OpenSim/Framework/Console/ConsoleTable.cs
new file mode 100644
index 0000000..be3025b
--- /dev/null
+++ b/OpenSim/Framework/Console/ConsoleTable.cs
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the OpenSimulator Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace OpenSim.Framework.Console
+{
+ ///
+ /// Used to generated a formatted table for the console.
+ ///
+ ///
+ /// Currently subject to change. If you use this, be prepared to change your code when this class changes.
+ ///
+ public class ConsoleTable
+ {
+ ///
+ /// Default number of spaces between table columns.
+ ///
+ public const int DefaultTableSpacing = 2;
+
+ ///
+ /// Table columns.
+ ///
+ public List Columns { get; private set; }
+
+ ///
+ /// Table rows
+ ///
+ public List Rows { get; private set; }
+
+ ///
+ /// Number of spaces to indent the table.
+ ///
+ public int Indent { get; set; }
+
+ ///
+ /// Spacing between table columns
+ ///
+ public int TableSpacing { get; set; }
+
+ public ConsoleTable()
+ {
+ TableSpacing = DefaultTableSpacing;
+ Columns = new List();
+ Rows = new List();
+ }
+
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder();
+ AddToStringBuilder(sb);
+ return sb.ToString();
+ }
+
+ public void AddToStringBuilder(StringBuilder sb)
+ {
+ string formatString = GetFormatString();
+// System.Console.WriteLine("FORMAT STRING [{0}]", formatString);
+
+ // columns
+ sb.AppendFormat(formatString, Columns.ConvertAll(c => c.Header).ToArray());
+
+ // rows
+ foreach (ConsoleTableRow row in Rows)
+ sb.AppendFormat(formatString, row.Cells.ToArray());
+ }
+
+ ///
+ /// Gets the format string for the table.
+ ///
+ private string GetFormatString()
+ {
+ StringBuilder formatSb = new StringBuilder();
+
+ formatSb.Append(' ', Indent);
+
+ for (int i = 0; i < Columns.Count; i++)
+ {
+ formatSb.Append(' ', TableSpacing);
+
+ // Can only do left formatting for now
+ formatSb.AppendFormat("{{{0},-{1}}}", i, Columns[i].Width);
+ }
+
+ formatSb.Append('\n');
+
+ return formatSb.ToString();
+ }
+ }
+
+ public struct ConsoleTableColumn
+ {
+ public string Header { get; set; }
+ public int Width { get; set; }
+
+ public ConsoleTableColumn(string header, int width) : this()
+ {
+ Header = header;
+ Width = width;
+ }
+ }
+
+ public struct ConsoleTableRow
+ {
+ public List Cells { get; private set; }
+
+ public ConsoleTableRow(List cells) : this()
+ {
+ Cells = cells;
+ }
+ }
+}
\ No newline at end of file
--
cgit v1.1
From b0b7b45b943dd94546bcfcf5d3bb871cfe35b507 Mon Sep 17 00:00:00 2001
From: Oren Hurvitz
Date: Thu, 3 May 2012 19:38:35 +0300
Subject: Save the Telehub and its Spawn Points in the OAR
Signed-off-by: BlueWall
---
OpenSim/Framework/RegionSettings.cs | 29 ++++++++++++++++-
.../External/RegionSettingsSerializer.cs | 37 ++++++++++++++++++++--
.../Tests/RegionSettingsSerializerTests.cs | 8 +++++
3 files changed, 71 insertions(+), 3 deletions(-)
(limited to 'OpenSim/Framework')
diff --git a/OpenSim/Framework/RegionSettings.cs b/OpenSim/Framework/RegionSettings.cs
index 4ce3392..011a97a 100644
--- a/OpenSim/Framework/RegionSettings.cs
+++ b/OpenSim/Framework/RegionSettings.cs
@@ -29,6 +29,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using OpenMetaverse;
+using System.Runtime.Serialization;
namespace OpenSim.Framework
{
@@ -71,6 +72,32 @@ namespace OpenSim.Framework
return pos + offset;
}
+
+ ///
+ /// Returns a string representation of this SpawnPoint.
+ ///
+ ///
+ public override string ToString()
+ {
+ return string.Format("{0},{1},{2}", Yaw, Pitch, Distance);
+ }
+
+ ///
+ /// Generate a SpawnPoint from a string
+ ///
+ ///
+ public static SpawnPoint Parse(string str)
+ {
+ string[] parts = str.Split(',');
+ if (parts.Length != 3)
+ throw new ArgumentException("Invalid string: " + str);
+
+ SpawnPoint sp = new SpawnPoint();
+ sp.Yaw = float.Parse(parts[0]);
+ sp.Pitch = float.Parse(parts[1]);
+ sp.Distance = float.Parse(parts[2]);
+ return sp;
+ }
}
public class RegionSettings
@@ -456,7 +483,7 @@ namespace OpenSim.Framework
}
// Connected Telehub object
- private UUID m_TelehubObject;
+ private UUID m_TelehubObject = UUID.Zero;
public UUID TelehubObject
{
get
diff --git a/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs b/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs
index 931898c..f18435d 100644
--- a/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs
+++ b/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs
@@ -30,6 +30,8 @@ using System.Text;
using System.Xml;
using OpenMetaverse;
using OpenSim.Framework;
+using log4net;
+using System.Reflection;
namespace OpenSim.Framework.Serialization.External
{
@@ -187,7 +189,29 @@ namespace OpenSim.Framework.Serialization.External
break;
}
}
-
+
+ xtr.ReadEndElement();
+
+ if (xtr.IsStartElement("Telehub"))
+ {
+ xtr.ReadStartElement("Telehub");
+
+ while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement)
+ {
+ switch (xtr.Name)
+ {
+ case "TelehubObject":
+ settings.TelehubObject = UUID.Parse(xtr.ReadElementContentAsString());
+ break;
+ case "SpawnPoint":
+ string str = xtr.ReadElementContentAsString();
+ SpawnPoint sp = SpawnPoint.Parse(str);
+ settings.AddSpawnPoint(sp);
+ break;
+ }
+ }
+ }
+
xtr.Close();
sr.Close();
@@ -243,7 +267,16 @@ namespace OpenSim.Framework.Serialization.External
xtw.WriteElementString("SunPosition", settings.SunPosition.ToString());
// Note: 'SunVector' isn't saved because this value is owned by the Sun Module, which
// calculates it automatically according to the date and other factors.
- xtw.WriteEndElement();
+ xtw.WriteEndElement();
+
+ xtw.WriteStartElement("Telehub");
+ if (settings.TelehubObject != UUID.Zero)
+ {
+ xtw.WriteElementString("TelehubObject", settings.TelehubObject.ToString());
+ foreach (SpawnPoint sp in settings.SpawnPoints())
+ xtw.WriteElementString("SpawnPoint", sp.ToString());
+ }
+ xtw.WriteEndElement();
xtw.WriteEndElement();
diff --git a/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs b/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
index a61e4af..09b6f6d 100644
--- a/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
+++ b/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
@@ -78,6 +78,10 @@ namespace OpenSim.Framework.Serialization.Tests
true
12
+
+ 00000000-0000-0000-0000-111111111111
+ 1,-2,0.33
+
";
private RegionSettings m_rs;
@@ -116,6 +120,8 @@ namespace OpenSim.Framework.Serialization.Tests
m_rs.TerrainTexture4 = UUID.Parse("00000000-0000-0000-0000-000000000080");
m_rs.UseEstateSun = true;
m_rs.WaterHeight = 23;
+ m_rs.TelehubObject = UUID.Parse("00000000-0000-0000-0000-111111111111");
+ m_rs.AddSpawnPoint(SpawnPoint.Parse("1,-2,0.33"));
}
[Test]
@@ -129,6 +135,8 @@ namespace OpenSim.Framework.Serialization.Tests
Assert.That(deserRs.TerrainTexture2, Is.EqualTo(m_rs.TerrainTexture2));
Assert.That(deserRs.DisablePhysics, Is.EqualTo(m_rs.DisablePhysics));
Assert.That(deserRs.TerrainLowerLimit, Is.EqualTo(m_rs.TerrainLowerLimit));
+ Assert.That(deserRs.TelehubObject, Is.EqualTo(m_rs.TelehubObject));
+ Assert.That(deserRs.SpawnPoints()[0].ToString(), Is.EqualTo(m_rs.SpawnPoints()[0].ToString()));
}
}
}
--
cgit v1.1
From 8b958e7e74d8e4b462c6a59c2854c5072ff8c746 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Sat, 12 May 2012 02:36:56 +0100
Subject: Revert "Save the Telehub and its Spawn Points in the OAR"
This reverts commit b0b7b45b943dd94546bcfcf5d3bb871cfe35b507.
Sorry BlueWall, I wanted to discuss an aspect of the data storage but I couldn't assign bugs in 'patch included' state to myself until I changed mantis just now and I forgot to mention it on irc.
I wouldn't normally revert but thinks get tricky when it comes to data formats.
Essentially, I would like to see the Yaw, Pitch and Distance values as separate XML entities (as used in other aspects such as vectors, quaternions) rather than as a . delimited string
We can discuss this more with Oren in opensimulator.org/mantis/view.php?id=6008
---
OpenSim/Framework/RegionSettings.cs | 29 +----------------
.../External/RegionSettingsSerializer.cs | 37 ++--------------------
.../Tests/RegionSettingsSerializerTests.cs | 8 -----
3 files changed, 3 insertions(+), 71 deletions(-)
(limited to 'OpenSim/Framework')
diff --git a/OpenSim/Framework/RegionSettings.cs b/OpenSim/Framework/RegionSettings.cs
index 011a97a..4ce3392 100644
--- a/OpenSim/Framework/RegionSettings.cs
+++ b/OpenSim/Framework/RegionSettings.cs
@@ -29,7 +29,6 @@ using System;
using System.Collections.Generic;
using System.IO;
using OpenMetaverse;
-using System.Runtime.Serialization;
namespace OpenSim.Framework
{
@@ -72,32 +71,6 @@ namespace OpenSim.Framework
return pos + offset;
}
-
- ///
- /// Returns a string representation of this SpawnPoint.
- ///
- ///
- public override string ToString()
- {
- return string.Format("{0},{1},{2}", Yaw, Pitch, Distance);
- }
-
- ///
- /// Generate a SpawnPoint from a string
- ///
- ///
- public static SpawnPoint Parse(string str)
- {
- string[] parts = str.Split(',');
- if (parts.Length != 3)
- throw new ArgumentException("Invalid string: " + str);
-
- SpawnPoint sp = new SpawnPoint();
- sp.Yaw = float.Parse(parts[0]);
- sp.Pitch = float.Parse(parts[1]);
- sp.Distance = float.Parse(parts[2]);
- return sp;
- }
}
public class RegionSettings
@@ -483,7 +456,7 @@ namespace OpenSim.Framework
}
// Connected Telehub object
- private UUID m_TelehubObject = UUID.Zero;
+ private UUID m_TelehubObject;
public UUID TelehubObject
{
get
diff --git a/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs b/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs
index f18435d..931898c 100644
--- a/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs
+++ b/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs
@@ -30,8 +30,6 @@ using System.Text;
using System.Xml;
using OpenMetaverse;
using OpenSim.Framework;
-using log4net;
-using System.Reflection;
namespace OpenSim.Framework.Serialization.External
{
@@ -189,29 +187,7 @@ namespace OpenSim.Framework.Serialization.External
break;
}
}
-
- xtr.ReadEndElement();
-
- if (xtr.IsStartElement("Telehub"))
- {
- xtr.ReadStartElement("Telehub");
-
- while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement)
- {
- switch (xtr.Name)
- {
- case "TelehubObject":
- settings.TelehubObject = UUID.Parse(xtr.ReadElementContentAsString());
- break;
- case "SpawnPoint":
- string str = xtr.ReadElementContentAsString();
- SpawnPoint sp = SpawnPoint.Parse(str);
- settings.AddSpawnPoint(sp);
- break;
- }
- }
- }
-
+
xtr.Close();
sr.Close();
@@ -267,16 +243,7 @@ namespace OpenSim.Framework.Serialization.External
xtw.WriteElementString("SunPosition", settings.SunPosition.ToString());
// Note: 'SunVector' isn't saved because this value is owned by the Sun Module, which
// calculates it automatically according to the date and other factors.
- xtw.WriteEndElement();
-
- xtw.WriteStartElement("Telehub");
- if (settings.TelehubObject != UUID.Zero)
- {
- xtw.WriteElementString("TelehubObject", settings.TelehubObject.ToString());
- foreach (SpawnPoint sp in settings.SpawnPoints())
- xtw.WriteElementString("SpawnPoint", sp.ToString());
- }
- xtw.WriteEndElement();
+ xtw.WriteEndElement();
xtw.WriteEndElement();
diff --git a/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs b/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
index 09b6f6d..a61e4af 100644
--- a/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
+++ b/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
@@ -78,10 +78,6 @@ namespace OpenSim.Framework.Serialization.Tests
true
12
-
- 00000000-0000-0000-0000-111111111111
- 1,-2,0.33
-
";
private RegionSettings m_rs;
@@ -120,8 +116,6 @@ namespace OpenSim.Framework.Serialization.Tests
m_rs.TerrainTexture4 = UUID.Parse("00000000-0000-0000-0000-000000000080");
m_rs.UseEstateSun = true;
m_rs.WaterHeight = 23;
- m_rs.TelehubObject = UUID.Parse("00000000-0000-0000-0000-111111111111");
- m_rs.AddSpawnPoint(SpawnPoint.Parse("1,-2,0.33"));
}
[Test]
@@ -135,8 +129,6 @@ namespace OpenSim.Framework.Serialization.Tests
Assert.That(deserRs.TerrainTexture2, Is.EqualTo(m_rs.TerrainTexture2));
Assert.That(deserRs.DisablePhysics, Is.EqualTo(m_rs.DisablePhysics));
Assert.That(deserRs.TerrainLowerLimit, Is.EqualTo(m_rs.TerrainLowerLimit));
- Assert.That(deserRs.TelehubObject, Is.EqualTo(m_rs.TelehubObject));
- Assert.That(deserRs.SpawnPoints()[0].ToString(), Is.EqualTo(m_rs.SpawnPoints()[0].ToString()));
}
}
}
--
cgit v1.1