Exemplo n.º 1
0
        public static IList <KeyValuePair <IFreeValueDefinition, FreeValue> > TransformFreeValues(
            IList <KeyValuePair <IFreeValueDefinition, string> > rawFreeValues)
        {
            if (rawFreeValues == null)
            {
                return(Array.Empty <KeyValuePair <IFreeValueDefinition, FreeValue> >());
            }

            return(rawFreeValues.Select(fv =>
            {
                IFreeValueDefinition freeValueDefinition = fv.Key;
                ValueTransformer transformer = freeValueDefinition.Transformer;

                try
                {
                    IList <object> transformed = transformer.Transform(fv.Value);
                    return new KeyValuePair <IFreeValueDefinition, FreeValue>(
                        freeValueDefinition,
                        new FreeValue(fv.Value, transformed));
                }
                catch (ArgParsingException)
                {
                    throw;
                }
                catch
                {
                    throw new ArgParsingException(
                        ArgsParsingErrorCode.TransformValueFailed,
                        fv.Value);
                }
            })
                   .ToArray());
        }
Exemplo n.º 2
0
 public bool IsConflict(IFreeValueDefinition freeValueDefinition)
 {
     if (freeValueDefinition == null)
     {
         throw new ArgumentNullException(nameof(freeValueDefinition));
     }
     return(Name.Equals(freeValueDefinition.Name, StringComparison.OrdinalIgnoreCase));
 }
Exemplo n.º 3
0
 public bool Equals(IFreeValueDefinition other)
 {
     if (other == null)
     {
         return(false);
     }
     return(Id == other.Id);
 }
Exemplo n.º 4
0
        void CheckConflict(IFreeValueDefinition freeValue)
        {
            IFreeValueDefinition conflictFreeValueDefinition =
                freeValues.FirstOrDefault(f => f.IsConflict(freeValue));

            if (conflictFreeValueDefinition == null)
            {
                return;
            }
            throw new ArgumentException(
                      $"The free value definition '{freeValue}' conflicts with '{conflictFreeValueDefinition}'");
        }
Exemplo n.º 5
0
        void ValidateRequiredFreeValues()
        {
            IFreeValueDefinition notPresentedRequiredFreeValue = command.GetRegisteredFreeValues()
                                                                 .Where(fv => fv.IsRequired)
                                                                 .FirstOrDefault(fv => !freeValues.Any(f => f.Key.Equals(fv)));

            if (notPresentedRequiredFreeValue != null)
            {
                throw new ArgParsingException(
                          ArgsParsingErrorCode.RequiredFreeValueNotPresent,
                          $"<{notPresentedRequiredFreeValue.Name}>");
            }
        }
Exemplo n.º 6
0
        void CheckRequiredCompatibility(IFreeValueDefinition freeValue)
        {
            if (!freeValue.IsRequired)
            {
                return;
            }
            IFreeValueDefinition firstNonRequiredFreeValueDefinition =
                freeValues.FirstOrDefault(fv => !fv.IsRequired);

            if (firstNonRequiredFreeValueDefinition == null)
            {
                return;
            }

            throw new InvalidOperationException(
                      $"The definition for <{freeValue.Name}> is required nut a definition [{firstNonRequiredFreeValueDefinition.Name}] before it is not required.");
        }
Exemplo n.º 7
0
 public bool IsConflict(IFreeValueDefinition freeValueDefinition)
 {
     // always return true to avoid registration.
     return(true);
 }
Exemplo n.º 8
0
 public void RegisterFreeValue(IFreeValueDefinition freeValue)
 {
     CheckConflict(freeValue);
     CheckRequiredCompatibility(freeValue);
     freeValues.Add(freeValue);
 }