コード例 #1
0
        public override FieldError ValidateValue(StringBuilder data)
        {
            FieldError error = null;
            string     str   = data.ToString();

            if (minLength >= 0 && data.Length < minLength)
            {
                error = DataTypeHelper.GenerateFieldError(X12ErrorCode.DeDataElementTooShortCode,
                                                          X12ErrorCode.GetDataElementErrorDescription(X12ErrorCode.DeDataElementTooShortCode), str);
            }

            if (maxLength >= 0 && data.Length > maxLength)
            {
                error = DataTypeHelper.GenerateFieldError(X12ErrorCode.DeDataElementTooLongCode,
                                                          X12ErrorCode.GetDataElementErrorDescription(X12ErrorCode.DeDataElementTooLongCode), str);
            }

            if (mAllowedValues != null && mAllowedValues.Count > 0 && !mAllowedValues.ContainsKey(str))
            {
                //error = DataTypeHelper.GenerateFieldError(X12ErrorCode.DeInvalidCodeValueCode,
                //  X12ErrorCode.GetDataElementErrorDescription(X12ErrorCode.DeInvalidCodeValueCode), str);

                StringBuilder allowedList = new StringBuilder();
                Dictionary <string, string> .KeyCollection keyColl = mAllowedValues.Keys;
                allowedList.Append('{');
                foreach (string key in keyColl)
                {
                    if (allowedList.Length > 1)
                    {
                        allowedList.Append(", ");
                    }

                    allowedList.Append(key);
                }
                allowedList.Append('}');

                string errorDescription = "Value {0} not found in list of possible values {1}";
                errorDescription = string.Format(errorDescription, str, allowedList.ToString());

                error = DataTypeHelper.GenerateFieldError(X12ErrorCode.DeInvalidCodeValueCode,
                                                          errorDescription, str);
            }
            else
            {
                CharSet charSet = CharSetFactory.GetCharSetClass(CharSetFactory.ExtendedCharSetIndex);

                for (int i = 0; i < data.Length; i++)
                {
                    if (!charSet.IsMember(data[i]))
                    {
                        error = DataTypeHelper.GenerateFieldError(X12ErrorCode.DeInvalidCharacterInDataElementCode,
                                                                  X12ErrorCode.GetDataElementErrorDescription(X12ErrorCode.DeInvalidCharacterInDataElementCode), data.ToString());
                        break;
                    }
                }
            }

            return(error);
        }
コード例 #2
0
        /*
         * All characters are allowed, however length restriction needs to be obeyed
         * Leading spaces are allowed only for min length restriction
         */
        public override FieldError ValidateValue(StringBuilder data)
        {
            FieldError error           = null;
            string     str             = data.ToString();
            bool       isLeadingSpace  = data.Length > 0 && data[0] == ' ';
            bool       isTrailingSpace = data.Length > 0 && data[data.Length - 1] == ' ' && data.ToString().Trim().Length != 0;

            if (minLength >= 0 && data.Length < minLength)
            {
                error = DataTypeHelper.GenerateFieldError(X12ErrorCode.DeDataElementTooShortCode,
                                                          X12ErrorCode.GetDataElementErrorDescription(X12ErrorCode.DeDataElementTooShortCode), str);
            }

            else if (maxLength >= 0 && data.Length > maxLength)
            {
                error = DataTypeHelper.GenerateFieldError(X12ErrorCode.DeDataElementTooLongCode,
                                                          X12ErrorCode.GetDataElementErrorDescription(X12ErrorCode.DeDataElementTooLongCode), str);
            }

            else if ((isTrailingSpace || isLeadingSpace) && minLength >= 0 && data.Length > minLength &&
                     false)
            {
                error = DataTypeHelper.GenerateFieldError(X12ErrorCode.DeInvalidCharacterInDataElementCode,
                                                          //X12ErrorCode.X12DataElementLeadingOrTrailingSpaceFoundDescription,
                                                          X12ErrorCode.GetDataElementErrorDescription(X12ErrorCode.DeInvalidCharacterInDataElementCode),
                                                          data.ToString());
            }

            else //no min max error
            {
                //todo Get this from the environment context
                CharSet charSet = CharSetFactory.GetCharSetClass(CharSetFactory.ExtendedCharSetIndex);

                for (int i = 0; i < data.Length; i++)
                {
                    if (!charSet.IsMember(data[i]))
                    {
                        error = DataTypeHelper.GenerateFieldError(X12ErrorCode.DeInvalidCharacterInDataElementCode,
                                                                  X12ErrorCode.GetDataElementErrorDescription(X12ErrorCode.DeInvalidCharacterInDataElementCode),
                                                                  data.ToString());
                        break;
                    }
                }
            }

            return(error);
        }