You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by hu...@apache.org on 2005/06/22 17:42:38 UTC
svn commit: r192943 - in /struts/sandbox/trunk/overdrive/Nexus: Core/
Core/Helpers/ Core/Tables/ Core/Validators/ Web/
Author: husted
Date: Wed Jun 22 08:42:37 2005
New Revision: 192943
URL: http://svn.apache.org/viewcvs?rev=192943&view=rev
Log:
OVR-12
OVR-13
* Refactor IFieldTable, IValidator, and related members before restructuring transformation guantlet.
Modified:
struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/IViewHelper.cs
struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/ViewHelper.cs
struts/sandbox/trunk/overdrive/Nexus/Core/IKeyValueList.cs
struts/sandbox/trunk/overdrive/Nexus/Core/KeyValueList.cs
struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs
struts/sandbox/trunk/overdrive/Nexus/Core/Tables/FieldContext.cs
struts/sandbox/trunk/overdrive/Nexus/Core/Tables/FieldTable.cs
struts/sandbox/trunk/overdrive/Nexus/Core/Tables/IFieldTable.cs
struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs
struts/sandbox/trunk/overdrive/Nexus/Core/Validators/ConvertInput.cs
struts/sandbox/trunk/overdrive/Nexus/Core/Validators/FormatOutput.cs
struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IValidator.cs
struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IValidatorContext.cs
struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Validator.cs
struts/sandbox/trunk/overdrive/Nexus/Core/Validators/ValidatorContext.cs
struts/sandbox/trunk/overdrive/Nexus/Web/WebViewHelper.cs
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/IViewHelper.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/IViewHelper.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/IViewHelper.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/IViewHelper.cs Wed Jun 22 08:42:37 2005
@@ -85,14 +85,14 @@
///
void Read (ICollection controls);
-
+
/// <summary>
/// Store input and output values.
/// </summary>
///
- IRequestContext Context {get;}
+ IRequestContext Context { get; }
+
-
/// <summary>
/// Access result of operation as an IList.
/// </summary>
@@ -103,7 +103,7 @@
/// this method returns a single-value result as a one-entry list.
/// </remarks>
///
- IList Outcome {get;}
+ IList Outcome { get; }
// ----
@@ -160,7 +160,7 @@
/// UI specific implementation may markup the errors as needed.
/// </remarks>
///
- string ErrorsText { get; }
+ string ErrorsText { get; }
/// <summary>
/// Record a list of hint (or advisory) messages,
@@ -188,7 +188,7 @@
/// UI specific implementatiosn may markup the messages as needed.
/// </remarks>
///
- string HintsText { get; }
+ string HintsText { get; }
// ----
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/ViewHelper.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/ViewHelper.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/ViewHelper.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Helpers/ViewHelper.cs Wed Jun 22 08:42:37 2005
@@ -25,7 +25,6 @@
///
public abstract class ViewHelper : IViewHelper
{
-
/// <summary>
/// Default setting for ListSuffix ["_list"].
/// </summary>
@@ -97,17 +96,17 @@
{
IList result = null;
object o = Context.Outcome;
- if (o==null)
+ if (o == null)
{
- result = new ArrayList(1);
+ result = new ArrayList (1);
result.Add (Context.Criteria);
}
else
{
result = o as IList;
- if (result==null)
+ if (result == null)
{
- result = new ArrayList(1);
+ result = new ArrayList (1);
result.Add (o);
}
}
@@ -192,14 +191,8 @@
private bool _NullIfEmpty = NULL_IF_EMPTY;
public bool NullIfEmpty
{
- get
- {
- return _NullIfEmpty;
- }
- set
- {
- _NullIfEmpty = value;
- }
+ get { return _NullIfEmpty; }
+ set { _NullIfEmpty = value; }
}
private string _SelectItemPrompt = SELECT_ITEM_PROMPT;
@@ -240,7 +233,7 @@
public IRequestCommand Command
{
get { return _Command; }
- set { _Command = value; }
+ set { _Command = value; }
}
#endregion
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/IKeyValueList.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/IKeyValueList.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/IKeyValueList.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/IKeyValueList.cs Wed Jun 22 08:42:37 2005
@@ -8,4 +8,4 @@
public interface IKeyValueList : IList
{
}
-}
+}
\ No newline at end of file
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/KeyValueList.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/KeyValueList.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/KeyValueList.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/KeyValueList.cs Wed Jun 22 08:42:37 2005
@@ -7,11 +7,12 @@
/// </summary>
public class KeyValueList : ArrayList, IKeyValueList
{
-
/// <summary>
/// Construct instance without parameters.
/// </summary>
- public KeyValueList() {}
+ public KeyValueList ()
+ {
+ }
/// <summary>
/// Add members of given list to this list.
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/RequestContext.cs Wed Jun 22 08:42:37 2005
@@ -81,12 +81,6 @@
set { this [Tokens.FieldTable] = value; }
}
- public IList FieldSet
- {
- get { return this [Tokens.FieldSet] as IList; }
- set { this [Tokens.FieldSet] = value; }
- }
-
public bool HasOutcome
{
get { return Contains (Command); }
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Tables/FieldContext.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Tables/FieldContext.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Tables/FieldContext.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Tables/FieldContext.cs Wed Jun 22 08:42:37 2005
@@ -37,7 +37,7 @@
get
{
Type v = this [Tokens.DataType] as Type;
- if (v==null) v = typeof(String);
+ if (v == null) v = typeof (String);
return v;
}
set
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Tables/FieldTable.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Tables/FieldTable.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Tables/FieldTable.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Tables/FieldTable.cs Wed Jun 22 08:42:37 2005
@@ -6,7 +6,7 @@
namespace Nexus.Core.Tables
{
/// <summary>
- /// Default implementation of IFieldTable.
+ /// Implement IFieldTable.
/// </summary>
/// <remarks><p>
/// Validator
@@ -21,6 +21,8 @@
[Serializable]
public class FieldTable : Context, IFieldTable
{
+ #region IFieldTable
+
private bool _Strict = false;
public virtual bool Strict
{
@@ -51,49 +53,20 @@
public virtual string Alert (string id)
{
- return Get (id).Alert;
- }
-
- private bool IsStringType (Type dataType)
- {
- bool v = (typeof (string).IsAssignableFrom (dataType));
- return v;
- }
-
- private bool IsCollectionType (Type dataType)
- {
- bool v = (typeof (ICollection)).IsAssignableFrom (dataType);
- return (v);
+ return GetField (id).Alert;
}
- public bool IsRichControl (string name)
- {
- return !(Tokens.INPUT_CONTROL.Equals (name));
- }
-
- public virtual bool Convert (IValidatorContext context)
+ // FIXME: This is begging for a Chain
+ public virtual bool Convert_Execute (IValidatorContext context)
{
bool okay = false;
-
- // FIXME: This is begging for a Chain
-
- #region non DataTypes
-
string id = context.FieldKey;
string source = context.Source as string;
- IFieldContext fieldContext = Get (id);
- if ((fieldContext == null))
- {
- if (Strict)
- throw new ArgumentNullException ("Nexus.Core.FieldTable.Convert", id);
- else
- {
- context.Target = source;
- return true;
- }
- }
+ IFieldContext fieldContext = GetField (id); // enforces Strict
- if (IsRichControl (fieldContext.ControlTypeName))
+ #region Not registered
+
+ if ((fieldContext == null))
{
context.Target = source;
return true;
@@ -101,14 +74,23 @@
#endregion
- #region DataTypes
+ #region Registered
bool processed = false;
- if ((typeof (DateTime) == fieldContext.DataType))
+ // Collection
+ if (IsCollectionType (fieldContext.DataType))
+ {
+ processed = true;
+ context.Target = source; // TODO: Recurse into collection
+ okay = true;
+ }
+
+ // Date
+ if (IsDateType (fieldContext.DataType))
{
processed = true;
- if (IsInput (source))
+ if (IsStringEmpty (source))
{
DateTime t = DateTime_Convert (fieldContext, source);
bool isDateTimeEmpty = DateTime_Empty.Equals (t);
@@ -117,11 +99,12 @@
}
else
{
- context.Target = null; // We could use DateTime_Empty here,
- okay = true; // but there's an issue with iBATIS
+ context.Target = null; // FIXME: We could use DateTime_Empty here,
+ okay = true; // but there was an issue with iBATIS (is there still?)
}
}
+ // String
if (IsStringType (fieldContext.DataType))
{
processed = true;
@@ -139,44 +122,48 @@
return okay;
}
- public virtual bool Format (IValidatorContext context)
+ // FIXME: This is begging for a Chain
+ public virtual bool Format_Execute (IValidatorContext context)
{
bool okay = false;
string id = context.FieldKey;
object source = context.Source;
- IFieldContext fieldContext = Get (id);
+ IFieldContext fieldContext = GetField (id); // Enforces Strict
+
+ #region Not Registered
+
if ((fieldContext == null))
{
- if (Strict)
- throw new ArgumentNullException ("Nexus.Core.FieldTable.Format", id);
+ if (source == null)
+ context.Target = null;
else
{
- if (source == null)
- context.Target = null;
- else
- {
- Type sourceType = source.GetType ();
- if (IsCollectionType (sourceType)) context.Target = source;
- else context.Target = source.ToString ();
- }
- return true;
+ Type sourceType = source.GetType ();
+ if (IsCollectionType (sourceType)) context.Target = source;
+ else context.Target = source.ToString ();
}
+ return true;
}
- if (IsRichControl (fieldContext.ControlTypeName))
+ #endregion
+
+ #region Registered
+
+ bool processed = false;
+
+ // Collection
+ if (IsCollectionType (fieldContext.DataType))
{
- context.Target = source;
- return true;
+ processed = true;
+ context.Target = source; // TODO: Recurse into collection
+ okay = true;
}
- bool processed = false;
- if ((typeof (DateTime) == fieldContext.DataType))
+ // Date
+ if (IsDateType (fieldContext.DataType))
{
processed = true;
- SByte dbNull = 0;
- bool isDateTimeEmpty = ((null == source) || (DBNull.Value.Equals (source)) || (dbNull.Equals (source) || String.Empty.Equals (source)));
- // We could use DateTime_Empty here, but there's an issue with iBATIS
- if (isDateTimeEmpty)
+ if (IsDateEmpty (source))
{
context.Target = String.Empty;
okay = true;
@@ -185,10 +172,11 @@
{
string target = DateTime_Format (fieldContext, source);
context.Target = target;
- okay = IsInput (target);
+ okay = IsStringEmpty (target);
}
}
+ // String
if (IsStringType (fieldContext.DataType))
{
processed = true;
@@ -198,54 +186,115 @@
// TODO: Other types.
+ #endregion
+
if (!processed)
throw new ArgumentOutOfRangeException ("Agility.Nexus.FieldTable.DataType", id);
return okay;
}
- public virtual IFieldContext Get (string id)
+ public virtual IFieldContext GetField (string id)
{
IFieldContext fieldContext = this [id] as IFieldContext;
bool problem = ((fieldContext == null) && (Strict));
if (problem)
- throw new ArgumentNullException ("Agility.Nexus.FieldTable", "Get");
+ throw new ArgumentNullException ("Agility.Nexus.FieldTable", "GetField");
return fieldContext;
}
+ #endregion
- /// <summary>
- /// Determine whether string is null or empty.
- /// </summary>
- /// <param name="v">String to test.</param>
- /// <returns>True if the string is valid input (not null and not empty).</returns>
- ///
- private bool IsInput (string v)
+ // TODO: Create a IDataTrip interface with IsType, IsEmpty, Convert, and Format methods.
+ // The runtime instances could then be injected into FieldTable
+ // or added to a list, for extensibility
+
+ #region Collection Convert/Format
+
+ private bool IsCollectionType (Type dataType)
{
- return ((v != null) && (!String.Empty.Equals (v)));
+ bool v = (typeof (ICollection)).IsAssignableFrom (dataType);
+ return (v);
}
- #region DateTime
+ #region Notes
- // TODO: Create a IDataTrip interface with Convert and Format methods.
- // The runtime instances could then be injected into FieldTable
- // or added to a list, for extensibility
+ /*
+ /// <summary>
+ /// Instantiate from an IDictionary,
+ /// formatting each entry using the FieldTable from a INexusContext,
+ /// and reporting any conversion or formatting errors in the INexusContext.
+ /// </summary>
+ /// <remarks><p>
+ /// The result of a query will come back as a list of IDictionaries,
+ /// using native, unformatted data types.
+ /// This constructor can be used to loop through a list of IDictionaires,
+ /// create a AppContext for each entry, and formatting any values
+ /// along the way. (Dates being the best example.)
+ /// The result is a AppContextList that can be used as a DataGrid
+ /// DataSource (or whatever).
+ /// </p></remarks>
+ /// <param name="dictionary">Values for new object</param>
+ /// <param name="context">Context with FieldTable and error handler</param>
+ public AppContext (IDictionary dictionary, IRequestContext context)
+ {
+ #region Assert parameters
+
+ if (null == dictionary) throw new ArgumentNullException ("dictionary", "AppContext(IDictionary,INexusContext");
+ if (null == context) throw new ArgumentNullException ("context", "AppContext(IDictionary,INexusContext");
+ IFieldTable table = context.FieldTable;
+ if (null == table) throw new ArgumentNullException ("FieldTable", "AppContext(IDictionary,INexusContext");
+
+ #endregion
+
+ IEnumerator keys = dictionary.Keys.GetEnumerator ();
+ while (keys.MoveNext ())
+ {
+ string key = keys.Current as string;
+ IValidatorContext input = new ValidatorContext (); // ISSUE: Spring? [WNE-63]
+ input.FieldKey = key;
+ input.Source = dictionary [key];
+ bool okay = table.Format (input);
+ if (!okay)
+ // OR, do we just want to push convert/format(id) up?
+ context.AddAlertForField (key);
+ this.Add (key, input.Target);
+ }
+ }
+ */
+
+ #endregion
+
+ #endregion
+
+ #region DateTime Convert/Format
private DateTime DateTime_Empty = DateTime.MinValue;
+ private bool IsDateEmpty (object source)
+ {
+ SByte dbNull = 0;
+ return ((null == source) || (DBNull.Value.Equals (source)) || (dbNull.Equals (source) || String.Empty.Equals (source)));
+ }
+
+ private bool IsDateType (Type dataType)
+ {
+ bool v = (typeof (DateTime)).IsAssignableFrom (dataType);
+ return (v);
+ }
+
/// <summary>
/// Substitute default value (MinValue) if conversion fails.
/// </summary>
/// <param name="fieldContext">Our field definition.</param>
/// <param name="input">The string to convert.</param>
/// <returns>A DateTime value, using MinValue to represent failure.</returns>
- public DateTime DateTime_Convert (IFieldContext fieldContext, string input)
+ private DateTime DateTime_Convert (IFieldContext fieldContext, string input)
{
DateTime t = DateTime_Empty;
try
{
- // t = System.Convert.ToDateTime (input);
- t = System.Convert.ToDateTime (input);
+ t = Convert.ToDateTime (input);
}
catch (InvalidCastException e)
{
@@ -265,7 +314,7 @@
/// <param name="fieldContext">Our field definition.</param>
/// <param name="value">The value to format.</param>
/// <returns>Formatted representation or an empty string.</returns>
- public string DateTime_Format (IFieldContext fieldContext, object value)
+ private string DateTime_Format (IFieldContext fieldContext, object value)
{
DateTime t = DateTime_Empty;
try
@@ -282,26 +331,44 @@
#endregion
- #region Utilities
+ #region String Convert/Format
private string String_Empty = String.Empty;
- public string String_Convert (IFieldContext fieldContext, string input)
+ /// <summary>
+ /// Determine whether string is null or empty.
+ /// </summary>
+ /// <param name="v">String to test.</param>
+ /// <returns>True if the string is valid input (not null and not empty).</returns>
+ ///
+ private bool IsStringEmpty (string v)
+ {
+ return ((v != null) && (!String_Empty.Equals (v)));
+ }
+
+ private bool IsStringType (Type dataType)
+ {
+ bool v = (typeof (string).IsAssignableFrom (dataType));
+ return v;
+ }
+
+ private string String_Convert (IFieldContext fieldContext, string input)
{
bool isNull = (input == null);
return isNull ? String_Empty : input;
// If null, return empty string rather than null
-
}
- public string String_Format (IFieldContext fieldContext, object value)
+ private string String_Format (IFieldContext fieldContext, object value)
{
string t = String_Empty;
- bool valid = (value != null);
- string format = (fieldContext.DataFormat != null) ? fieldContext.DataFormat : String.Empty;
- return valid ? String.Format (format, value) : t;
+ if (value == null) return t;
+ string format = (fieldContext.DataFormat == null) ? t : fieldContext.DataFormat;
+ if (format.Equals (t)) return value.ToString ();
+ return String.Format (format, value);
}
#endregion
}
+
}
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Tables/IFieldTable.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Tables/IFieldTable.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Tables/IFieldTable.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Tables/IFieldTable.cs Wed Jun 22 08:42:37 2005
@@ -45,7 +45,7 @@
/// <param name="context">Context to process (including Criteria)</param>
/// <returns>True if nominal</returns>
///
- bool Convert (IValidatorContext context);
+ bool Convert_Execute (IValidatorContext context);
/// <summary>
/// Format and copy values from the main Context into the Criteria,
@@ -54,24 +54,14 @@
/// <param name="context">Context to process (including Criteria)</param>
/// <returns>True if nominal</returns>
///
- bool Format (IValidatorContext context);
+ bool Format_Execute (IValidatorContext context);
/// <summary>
- /// Determine if the control is a simple value or a rich
- /// control, like a drop down list.
- /// </summary>
- /// <param name="name">ID for Control</param>
- /// <returns>True if control is a multivalue control,
- /// like a list</returns>
- ///
- bool IsRichControl (string name);
-
- /// <summary>
- /// Obtain the FieldContext for the given ID.
+ /// Obtain the FieldContext for the given ID, observering Strict setting.
/// </summary>
/// <param name="id">FieldContext ID</param>
/// <returns>FieldContext for ID</returns>
///
- IFieldContext Get (string id);
+ IFieldContext GetField (string id);
}
}
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Tokens.cs Wed Jun 22 08:42:37 2005
@@ -77,6 +77,12 @@
public const string ControlTypeName = "_ControlTypeName";
/// <summary>
+ /// Token for Context property.
+ /// </summary>
+ ///
+ public const string Context = "_Context";
+
+ /// <summary>
/// Token for Criteria property.
/// </summary>
///
@@ -111,12 +117,6 @@
/// </summary>
///
public const string FieldKey = "_FieldKey";
-
- /// <summary>
- /// Token for FieldSet property.
- /// </summary>
- ///
- public const string FieldSet = "_FieldSet";
/// <summary>
/// Token for FieldTable property.
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Validators/ConvertInput.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Validators/ConvertInput.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Validators/ConvertInput.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Validators/ConvertInput.cs Wed Jun 22 08:42:37 2005
@@ -1,3 +1,6 @@
+using System.Collections;
+using Nexus.Core.Tables;
+
namespace Nexus.Core.Validators
{
/// <summary>
@@ -6,10 +9,26 @@
/// </summary>
public class ConvertInput : Validator
{
- public ConvertInput ()
+ public override bool ProcessExecute (IValidatorContext incoming)
{
- Mode = MODE_INPUT;
- }
+ string key = incoming.FieldKey;
+ IRequestContext context = incoming.Context;
+ IDictionary criteria = incoming.Criteria;
+ IFieldTable table = incoming.FieldTable;
+ bool have = (criteria.Contains (key));
+ if (have)
+ {
+ incoming.Source = criteria [key];
+ bool okay = table.Convert_Execute (incoming);
+ if (okay)
+ // set to main context
+ context [key] = incoming.Target;
+ else context.AddAlertForField (key);
+ return STOP;
+ }
+
+ return CONTINUE;
+ }
}
}
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Validators/FormatOutput.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Validators/FormatOutput.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Validators/FormatOutput.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Validators/FormatOutput.cs Wed Jun 22 08:42:37 2005
@@ -1,3 +1,6 @@
+using System.Collections;
+using Nexus.Core.Tables;
+
namespace Nexus.Core.Validators
{
/// <summary>
@@ -6,9 +9,26 @@
/// </summary>
public class FormatOutput : Validator
{
- public FormatOutput ()
+ public override bool ProcessExecute (IValidatorContext outgoing)
{
- Mode = MODE_OUTPUT;
+ string key = outgoing.FieldKey;
+ IRequestContext context = outgoing.Context;
+ IDictionary criteria = outgoing.Criteria;
+ IFieldTable table = outgoing.FieldTable;
+
+ bool have = (context.Contains (key));
+ if (have)
+ {
+ outgoing.Source = context [key];
+ bool okay = table.Format_Execute (outgoing);
+ if (okay)
+ // set to field buffer
+ criteria [key] = outgoing.Target;
+ else context.AddAlertForField (key);
+ return STOP;
+ }
+
+ return CONTINUE;
}
}
}
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IValidator.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IValidator.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IValidator.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IValidator.cs Wed Jun 22 08:42:37 2005
@@ -7,5 +7,7 @@
{
string Template { get; set; }
bool Continue { get; set; }
+ bool ProcessExecute (IValidatorContext context);
+
}
}
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IValidatorContext.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IValidatorContext.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IValidatorContext.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IValidatorContext.cs Wed Jun 22 08:42:37 2005
@@ -1,4 +1,6 @@
+using System.Collections;
using Agility.Core;
+using Nexus.Core.Tables;
namespace Nexus.Core.Validators
{
@@ -9,21 +11,36 @@
public interface IValidatorContext : IContext
{
/// <summary>
- /// The identifer for the field under validation.
+ /// Identify the field under validation.
/// </summary>
///
string FieldKey { get; set; }
/// <summary>
- /// The source value that we to process.
+ /// Record the source value to process.
/// </summary>
///
object Source { get; set; }
/// <summary>
- /// The target value after conversion or formatting.
+ /// Reorod the target value after conversion or formatting.
/// </summary>
///
object Target { get; set; }
+
+ /// <summary>
+ /// Identify the main IRequestContext being processed.
+ /// </summary>
+ IRequestContext Context { get; }
+
+ /// <summary>
+ /// Identify the set of input/output fields being processed.
+ /// </summary>
+ IDictionary Criteria { get; }
+
+ /// <summary>
+ /// Identify the FieldTable being utilized.
+ /// </summary>
+ IFieldTable FieldTable { get; }
}
}
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Validator.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Validator.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Validator.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Validator.cs Wed Jun 22 08:42:37 2005
@@ -11,7 +11,7 @@
/// <remarks>
/// Subclasses must provide a NexusExecute method.
/// </remarks>
- public class Validator : RequestCommand, IValidatorCommand
+ public abstract class Validator : RequestCommand, IValidatorCommand
{
#region Properties
@@ -51,72 +51,6 @@
return combined.Keys;
}
- #region ProcessRelated
-
- public void AssertProcessRelated (IRequestContext context)
- {
- AssertProcessRequired (context);
-
- IFieldTable table = context.FieldTable;
- if (null == table)
- throw new ArgumentNullException ("FieldTable", "BaseValidator.NexusExecute.AssertProcessRelated");
- }
-
- public virtual void ProcessRelated (IRequestContext context, bool mode)
- {
- AssertProcessRelated (context);
-
- IDictionary fields = context.Criteria;
- IFieldTable table = context.FieldTable;
- ICollection related = CombinedIDs (context);
- foreach (string key in related)
- {
- bool have = false;
- bool okay = false;
-
- switch (mode)
- {
- case MODE_INPUT:
- {
- have = (fields.Contains (key));
- if (have)
- {
- string source = fields [key] as string;
- // TODO: Spring?
- IValidatorContext _context = new ValidatorContext (key, source);
- okay = table.Convert (_context);
- if (okay)
- // set to main context
- context [key] = _context.Target;
- }
- break;
- }
-
- case MODE_OUTPUT:
- {
- have = (context.Contains (key));
- if (have)
- {
- object source = context [key];
- // TODO: Spring?
- IValidatorContext _context = new ValidatorContext (key, source);
- okay = table.Format (_context);
- if (okay)
- // set to field buffer
- fields [key] = _context.Target;
- }
- break;
- }
- }
-
- if ((have) && (!okay))
- context.AddAlertForField (key);
-
- } // end while
- }
-
- #endregion
-
#region ProcessRequired
public void AssertProcessRequired (IRequestContext context)
@@ -156,6 +90,35 @@
}
#endregion
+
+ #region ProcessRelated
+
+ public void AssertProcessRelated (IRequestContext context)
+ {
+ AssertProcessRequired (context);
+
+ IFieldTable table = context.FieldTable;
+ if (null == table)
+ throw new ArgumentNullException ("FieldTable", "BaseValidator.NexusExecute.AssertProcessRelated");
+ }
+
+ public abstract bool ProcessExecute (IValidatorContext context);
+
+ public virtual void ProcessRelated (IRequestContext context, bool mode)
+ {
+ AssertProcessRelated (context);
+
+ ICollection related = CombinedIDs (context);
+ foreach (string key in related)
+ {
+ IValidatorContext _context = new ValidatorContext (key, context);
+ ProcessExecute (_context);
+ }
+ }
+
+ #endregion
+
+ // public abstract bool ProcessExecute(ValidatorContext context);
public override bool RequestExecute (IRequestContext context)
{
Modified: struts/sandbox/trunk/overdrive/Nexus/Core/Validators/ValidatorContext.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Validators/ValidatorContext.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Validators/ValidatorContext.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Validators/ValidatorContext.cs Wed Jun 22 08:42:37 2005
@@ -1,5 +1,7 @@
+using System.Collections;
using Agility.Core;
using Nexus.Core;
+using Nexus.Core.Tables;
using Nexus.Core.Validators;
namespace Agility.Nexus.Validators
@@ -19,6 +21,12 @@
Source = source;
}
+ public ValidatorContext (string key, IRequestContext context)
+ {
+ FieldKey = key;
+ this [Tokens.Context] = context;
+ }
+
public string FieldKey
{
get { return this [Tokens.FieldKey] as string; }
@@ -35,6 +43,21 @@
{
get { return this [Tokens.Target]; }
set { this [Tokens.Target] = value; }
+ }
+
+ public IRequestContext Context
+ {
+ get { return this [Tokens.Context] as IRequestContext; }
+ }
+
+ public IDictionary Criteria
+ {
+ get { return Context.Criteria; }
+ }
+
+ public IFieldTable FieldTable
+ {
+ get { return Context.FieldTable; }
}
}
}
Modified: struts/sandbox/trunk/overdrive/Nexus/Web/WebViewHelper.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Web/WebViewHelper.cs?rev=192943&r1=192942&r2=192943&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Web/WebViewHelper.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Web/WebViewHelper.cs Wed Jun 22 08:42:37 2005
@@ -57,21 +57,14 @@
public override string ErrorsText
{
- get
- {
- return HtmlMessageBuilder (Alerts);
- }
+ get { return HtmlMessageBuilder (Alerts); }
}
public override string HintsText
{
- get
- {
- return HtmlMessageBuilder (Hints);
- }
+ get { return HtmlMessageBuilder (Hints); }
}
-
#endregion
#region Bind methods
@@ -246,7 +239,7 @@
private string RootId (string id, string prefix, string suffix)
{
int v = id.LastIndexOf (suffix);
- if (v<1) return id;
+ if (v < 1) return id;
string fore = id.Substring (0, v);
string root = ToColumn (fore, prefix);
return root;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org