Author: husted
Date: Wed Jun 22 14:43:40 2005
New Revision: 192999

URL: http://svn.apache.org/viewcvs?rev=192999&view=rev
Log:
OVR-13
OVR-12
* Add new files to go with r192994.

Added:
    struts/sandbox/trunk/overdrive/Nexus/Core/Validators/CollectionProcessor.cs
    struts/sandbox/trunk/overdrive/Nexus/Core/Validators/DateTimeProcessor.cs
    struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IProcessor.cs
    struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Processor.cs
    struts/sandbox/trunk/overdrive/Nexus/Core/Validators/StringProcessor.cs

Added: 
struts/sandbox/trunk/overdrive/Nexus/Core/Validators/CollectionProcessor.cs
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Validators/CollectionProcessor.cs?rev=192999&view=auto
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Validators/CollectionProcessor.cs 
(added)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Validators/CollectionProcessor.cs 
Wed Jun 22 14:43:40 2005
@@ -0,0 +1,74 @@
+using System.Collections;
+
+namespace Nexus.Core.Validators
+{
+       public class CollectionProcessor : Processor
+       {
+               public override bool IsEmpty (object v)
+               {
+                       ICollection c = v as ICollection;
+                       return ((c != null) && (c.Count > 0));
+               }
+
+               public override bool ConvertInput (IProcessorContext incoming)
+               {
+                       incoming.Target = incoming.Source;
+                       return true;
+               }
+
+               public override bool FormatOutput (IProcessorContext outgoing)
+               {
+                       outgoing.Target = outgoing.Source;
+                       return true;
+               }
+
+       }
+
+       #region Notes
+
+       /*
+                       /// <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
+}
\ No newline at end of file

Added: struts/sandbox/trunk/overdrive/Nexus/Core/Validators/DateTimeProcessor.cs
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Validators/DateTimeProcessor.cs?rev=192999&view=auto
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Validators/DateTimeProcessor.cs 
(added)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Validators/DateTimeProcessor.cs 
Wed Jun 22 14:43:40 2005
@@ -0,0 +1,117 @@
+using System;
+
+namespace Nexus.Core.Validators
+{
+       /// <summary>
+       /// Convert and format DateTime fields.
+       /// </summary>
+       public class DateTimeProcessor : Processor
+       {
+               #region IProcessor
+
+               public override bool IsEmpty (object source)
+               {
+                       SByte dbNull = 0;
+                       return ((null == source) || (DBNull.Value.Equals 
(source)) || (dbNull.Equals (source) || String.Empty.Equals (source)));
+               }
+
+               public override bool ConvertInput (IProcessorContext incoming)
+               {
+                       bool okay = false;
+                       string source = incoming.Source as string;
+
+                       if (IsStringEmpty (source))
+                       {
+                               DateTime t = DateTime_Convert (source);
+                               bool isDateTimeEmpty = DateTime_Empty.Equals 
(t);
+                               okay = !isDateTimeEmpty;
+                               incoming.Target = t;
+                       }
+                       else
+                       {
+                               incoming.Target = null; // FIXME: We could use 
DateTime_Empty here,
+                               okay = true; //  but there was an issue with 
iBATIS (is there still?)
+                       }
+
+                       return okay;
+               }
+
+               public override bool FormatOutput (IProcessorContext outgoing)
+               {
+                       bool okay = false;
+                       object source = outgoing.Source;
+
+                       if (IsEmpty (source))
+                       {
+                               outgoing.Target = String.Empty;
+                               okay = true;
+                       }
+                       else
+                       {
+                               string target = DateTime_Format (source);
+                               outgoing.Target = target;
+                               okay = IsStringEmpty (target);
+                       }
+                       return okay;
+               }
+
+               #endregion
+
+               private bool IsStringEmpty (string v)
+               {
+                       return ((v != null) && (!String.Empty.Equals (v)));
+               }
+
+               private DateTime DateTime_Empty = DateTime.MinValue;
+
+               private DateTime DateTime_Convert (string source)
+               {
+                       DateTime t = DateTime_Empty;
+                       try
+                       {
+                               t = Convert.ToDateTime (source);
+                       }
+                       catch (InvalidCastException e)
+                       {
+                               e = e; // silly assignment
+                       }
+                       catch (FormatException e)
+                       {
+                               e = e; // silly assignment
+                       }
+                       return t;
+
+               }
+
+               private string DateTime_Format (object source)
+               {
+                       DateTime t = DateTime_Empty;
+                       try
+                       {
+                               t = (DateTime) source;
+                       }
+                       catch (InvalidCastException e)
+                       {
+                               e = e;
+                       }
+                       if (DateTime_Empty.Equals (t)) return String.Empty;
+                       else return t.ToString (DataFormat);
+               }
+
+
+               /*
+               public bool IsMyType (Type dataType)
+               {
+                       bool v = (typeof (DateTime)).IsAssignableFrom 
(dataType);
+                       return v;
+               }
+
+               public bool IsMyField(IFieldContext field)
+               {
+                       bool v = (field.ProcessorID.Equals(ID));
+                       return v;
+               }
+               */
+
+       }
+}
\ No newline at end of file

Added: struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IProcessor.cs
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IProcessor.cs?rev=192999&view=auto
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IProcessor.cs (added)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Validators/IProcessor.cs Wed Jun 
22 14:43:40 2005
@@ -0,0 +1,16 @@
+namespace Nexus.Core.Validators
+{
+       /// <summary>
+       /// Convert or Format a standard or custom DataType.
+       /// </summary>
+       public interface IProcessor
+       {
+               string Alert { get; set; }
+               string DataFormat { get; set; }
+               string ID { get; set; }
+
+               bool IsEmpty (object source);
+               bool ConvertInput (IProcessorContext incoming);
+               bool FormatOutput (IProcessorContext outgoing);
+       }
+}
\ No newline at end of file

Added: struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Processor.cs
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Processor.cs?rev=192999&view=auto
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Processor.cs (added)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Validators/Processor.cs Wed Jun 
22 14:43:40 2005
@@ -0,0 +1,35 @@
+namespace Nexus.Core.Validators
+{
+       /// <summary>
+       /// Implement common properties.
+       /// </summary>
+       public abstract class Processor : IProcessor
+       {
+               private string _Alert;
+               public string Alert
+               {
+                       get { return _Alert; }
+                       set { _Alert = value; }
+               }
+
+               private string _DataFormat;
+               public string DataFormat
+               {
+                       get { return _DataFormat; }
+                       set { _DataFormat = value; }
+               }
+
+               private string _ID;
+               public string ID
+               {
+                       get { return _ID; }
+                       set { _ID = value; }
+               }
+
+               public abstract bool IsEmpty (object source);
+
+               public abstract bool ConvertInput (IProcessorContext incoming);
+
+               public abstract bool FormatOutput (IProcessorContext outgoing);
+       }
+}
\ No newline at end of file

Added: struts/sandbox/trunk/overdrive/Nexus/Core/Validators/StringProcessor.cs
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/Validators/StringProcessor.cs?rev=192999&view=auto
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/Validators/StringProcessor.cs 
(added)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/Validators/StringProcessor.cs Wed 
Jun 22 14:43:40 2005
@@ -0,0 +1,58 @@
+using System;
+
+namespace Nexus.Core.Validators
+{
+       public class StringProcessor : Processor
+       {
+               #region IProcessor 
+
+               public override bool IsEmpty (object v)
+               {
+                       return ((v != null) && (!String_Empty.Equals (v)));
+               }
+
+               public override bool ConvertInput (IProcessorContext incoming)
+               {
+                       string source = incoming.Source as string;
+                       incoming.Target = String_Convert (source);
+                       return true;
+               }
+
+               public override bool FormatOutput (IProcessorContext outgoing)
+               {
+                       object source = outgoing.Source;
+                       outgoing.Target = String_Format (source);
+                       return true;
+               }
+
+               #endregion
+
+               private string String_Empty = String.Empty;
+
+               private string String_Convert (string source)
+               {
+                       bool isNull = (source == null);
+                       return isNull ? String_Empty : source;
+                       // If null, return empty string rather than null        
                
+               }
+
+               private string String_Format (object source)
+               {
+                       string t = String_Empty;
+                       if (source == null) return t;
+                       string format = (DataFormat == null) ? t : DataFormat;
+                       if (format.Equals (t)) return source.ToString ();
+                       return String.Format (format, source);
+               }
+
+               /*
+               private bool IsMyType (Type dataType)
+               {
+                       bool v = (typeof (string).IsAssignableFrom (dataType));
+                       return v;
+               }
+               */
+
+
+       }
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to