Thanks James :-), i'll pull it down and test shortly.

I'm trying to decide whether to feel psyched or a bit self conscious about
having my name in the code base anywhere.  i'm leaning toward the later ;-).
On Wed, Aug 26, 2009 at 12:30 PM, James Gregory <[email protected]>wrote:

> I've just committed a change that should hopefully fix this. There's now a
> test in your honor ;) *ShouldHandleEverettsWeirdMapping*
>
> On Wed, Aug 26, 2009 at 1:20 PM, Everett Muniz <[email protected]>wrote:
>
>> I've included the classes I'm mapping along with the intermediate classes
>> in the inheritance hierarchy.
>>
>>     public abstract class ColorSource
>>     {
>>         public ColorSource()
>>         {
>>         }
>>
>>         public abstract Color GetColorFrom(IRecord record);
>>     }
>>
>>     public class ConstantColorSource : ColorSource
>>     {
>>         public const string ColorPartOutOfRangeMessage = "{0} is less than
>> 0 or greater than 255.";
>>
>>         protected internal ConstantColorSource()
>>         {
>>         }
>>
>>         internal ConstantColorSource(int alpha, int red, int green, int
>> blue)
>>         {
>>             if (!WholeNumber.IsByteValue(alpha))
>>                 throw new
>> ArgumentException(String.Format(ColorPartOutOfRangeMessage, "alpha"),
>> "alpha");
>>             if (!WholeNumber.IsByteValue(red))
>>                 throw new
>> ArgumentException(String.Format(ColorPartOutOfRangeMessage, "red"), "red");
>>             if (!WholeNumber.IsByteValue(green))
>>                 throw new
>> ArgumentException(String.Format(ColorPartOutOfRangeMessage, "green"),
>> "green");
>>             if (!WholeNumber.IsByteValue(blue))
>>                 throw new
>> ArgumentException(String.Format(ColorPartOutOfRangeMessage, "blue"),
>> "blue");
>>
>>             this.Alpha = alpha;
>>             this.Blue = blue;
>>             this.Green = green;
>>             this.Red = red;
>>         }
>>
>>         internal ConstantColorSource(int red, int green, int blue)
>>             : this(Byte.MaxValue, red, green, blue)
>>         {
>>         }
>>
>>         internal ConstantColorSource(Color color)
>>         {
>>             this.Alpha = color.A;
>>             this.Red = color.R;
>>             this.Green = color.G;
>>             this.Blue = color.B;
>>         }
>>
>>         public virtual int Alpha { get; private set; }
>>
>>         public virtual int Blue { get; private set; }
>>
>>         public virtual int Green { get; private set; }
>>
>>         public virtual int Red { get; private set; }
>>
>>         public override Color GetColorFrom(IRecord record)
>>         {
>>             return Color.FromArgb(this.Alpha, this.Red, this.Green,
>> this.Blue);
>>         }
>>     }
>>
>>     public abstract class DataBoundColorSource : ColorSource
>>     {
>>         protected internal DataBoundColorSource()
>>         {
>>         }
>>
>>         public DataBoundColorSource(RecordAccessor recordAccessor)
>>         {
>>             if (recordAccessor == null)
>>                 throw new ArgumentNullException("recordAccessor",
>> "recordAccessor is null.");
>>             this.RecordAccessor = recordAccessor;
>>         }
>>
>>         public virtual RecordAccessor RecordAccessor { get; private set; }
>>     }
>>
>>     public abstract class ColorMapColorSource : DataBoundColorSource
>>     {
>>         protected internal ColorMapColorSource()
>>         {
>>         }
>>
>>         public ColorMapColorSource(ColorMap colorMap, RecordAccessor
>> recordAccessor)
>>             : base(recordAccessor)
>>         {
>>             if (colorMap == null)
>>                 throw new ArgumentNullException("colorMap", "colorMap is
>> null.");
>>             this.ColorMap = colorMap;
>>         }
>>
>>         public virtual ColorMap ColorMap { get; private set; }
>>     }
>>
>>     public class SubstringColorSource : ColorMapColorSource
>>     {
>>         public const string ColorMappingExceptionMessage = "An error was
>> encountered while attempting to locate a color for the value '{0}' in the
>> '{1}' color map.";
>>         public const string RecordAccessExceptionMessage = "An error was
>> encountered while attempting to access the supplied record ({0}).";
>>         public const string ValueNotMappedToValidColorExceptionMessage =
>> "The value '{0}' is not mapped to a valid color in the {1} color map.";
>>
>>         private static readonly TextSelector TextSelector = new
>> TextSelector();
>>
>>         internal SubstringColorSource(int start, int length, ColorMap
>> colorMap, RecordAccessor recordAccessor)
>>             : base(colorMap, recordAccessor)
>>         {
>>             this.Start = start;
>>             this.Length = length;
>>         }
>>
>>         protected internal SubstringColorSource()
>>         {
>>         }
>>
>>         public virtual int Length { get; private set; }
>>
>>         public virtual int Start { get; private set; }
>>
>>         public override Color GetColorFrom(IRecord record)
>>         {
>>             if (record == null)
>>                 throw new ArgumentNullException("record", "record is
>> null.");
>>
>>             var value = TextSelector.Select(getValue(record), this.Start,
>> this.Length);
>>             var color = getColor(value);
>>
>>             if (color.ToArgb() == Color.Empty.ToArgb())
>>             {
>>                 throw new ApplicationException(String.Format(
>>                     ValueNotMappedToValidColorExceptionMessage,
>>                     value,
>>                     this.ColorMap.Name
>>                     ));
>>             }
>>
>>             return color;
>>         }
>>
>>         private Color getColor(string value)
>>         {
>>             try
>>             {
>>                 return this.ColorMap.FindColorBy(value);
>>             }
>>             catch (Exception exception)
>>             {
>>                 throw new ApplicationException(
>>                     String.Format(ColorMappingExceptionMessage, value,
>> this.ColorMap.Name),
>>                     exception
>>                     );
>>             }
>>         }
>>
>>         private string getValue(IRecord record)
>>         {
>>             try
>>             {
>>                 return this.RecordAccessor.GetValueFrom(record);
>>             }
>>             catch (Exception exception)
>>             {
>>                 throw new ApplicationException(
>>                     String.Format(RecordAccessExceptionMessage,
>> record.Schema.ToString()),
>>                     exception
>>                     );
>>             }
>>         }
>>     }
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to