using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OSGeo.MapGuide; namespace DotNetHarness { public partial class ReaderResponseDialog : Form { private ReaderResponseDialog() { InitializeComponent(); _wktRW = new MgWktReaderWriter(); _agfRW = new MgAgfReaderWriter(); } private MgReader _reader; private MgWktReaderWriter _wktRW; private MgAgfReaderWriter _agfRW; public ReaderResponseDialog(MgReader reader) : this() { _reader = reader; } protected override void OnLoad(EventArgs e) { for (int i = 0; i < _reader.GetPropertyCount(); i++) { string name = _reader.GetPropertyName(i); grdResults.Columns.Add(name, name); } int count = 0; try { this.Cursor = Cursors.WaitCursor; while (_reader.ReadNext()) { count++; object[] values = new object[_reader.GetPropertyCount()]; for (int i = 0; i < _reader.GetPropertyCount(); i++) { if (_reader.IsNull(i)) { values[i] = null; } else { int pt = _reader.GetPropertyType(i); switch (pt) { case MgPropertyType.Blob: values[i] = "BLOB VALUE"; break; case MgPropertyType.Boolean: values[i] = _reader.GetBoolean(i); break; case MgPropertyType.Byte: values[i] = _reader.GetByte(i); break; case MgPropertyType.Clob: values[i] = "CLOB VALUE"; break; case MgPropertyType.DateTime: var mdt = _reader.GetDateTime(i); values[i] = mdt.ToString(); break; case MgPropertyType.Decimal: case MgPropertyType.Double: values[i] = _reader.GetDouble(i); break; case MgPropertyType.Feature: values[i] = "NESTED FEATURE READER"; break; case MgPropertyType.Geometry: MgByteReader agf = _reader.GetGeometry(i); MgGeometry geom = _agfRW.Read(agf); values[i] = _wktRW.Write(geom); break; case MgPropertyType.Int16: values[i] = _reader.GetInt16(i); break; case MgPropertyType.Int32: values[i] = _reader.GetInt32(i); break; case MgPropertyType.Int64: values[i] = _reader.GetInt64(i); break; case MgPropertyType.Raster: values[i] = "RASTER IMAGE"; break; case MgPropertyType.Single: values[i] = _reader.GetSingle(i); break; case MgPropertyType.String: values[i] = _reader.GetString(i); break; } } } grdResults.Rows.Add(values); } } finally { this.Cursor = Cursors.Default; _reader.Close(); toolStripStatusLabel1.Text = count + " features returned"; } } } }