示例#1
0
        private static string WriteToLua(WDBSheet sheet, string templateContent, string[] assemblyNames, EntryConfig config)
        {
            StringContextContainer context = new StringContextContainer();

            context.Add("__sheet__", sheet);
            string content = TemplateEngine.Generate(context, templateContent, assemblyNames, config);

            context.Remove("__sheet__");
            return(content);
        }
示例#2
0
        private static bool VerifySheet(WDBSheet sheet)
        {
            List <string> errors = (List <string>)context.Get(WDBContextIENames.CONTEXT_ERRORS_NAME);

            if (string.IsNullOrEmpty(sheet.Name))
            {
                errors.Add(WDBVerifyConst.VERIFY_SHEET_NAME_EMPTY_ERR);
                return(false);
            }
            if (!Regex.IsMatch(sheet.Name, WDBVerifyConst.VERIFY_SHEET_NAME_REGEX))
            {
                errors.Add(string.Format(WDBVerifyConst.VERIFY_SHEET_NAME_REGEX_ERR, sheet.Name));
                return(false);
            }

            if (sheet.FieldCount == 0)
            {
                errors.Add(string.Format(WDBVerifyConst.VERIFY_SHEET_NO_FIELD_ERR, sheet.Name));
                return(false);
            }
            if (sheet.LineCount == 0)
            {
                errors.Add(string.Format(WDBVerifyConst.VERIFY_SHEET_NO_ROW_ERR, sheet.Name));
                return(false);
            }
            bool result = true;

            for (int i = 0; i < sheet.FieldCount; ++i)
            {
                WDBField       field       = sheet.GetFieldAtIndex(i);
                WDBFieldVerify fieldVerify = new WDBFieldVerify()
                {
                    FieldType        = field.FieldType,
                    FieldPlatform    = field.FieldPlatform,
                    ValueValidations = field.ValueValidations,
                };
                fieldVerifyDic.Add(field, fieldVerify);
                if (!VerifyField(field))
                {
                    result = false;
                }
            }
            if (!result)
            {
                return(false);
            }

            context.Add(WDBContextIENames.CONTEXT_SHEET_NAME, sheet);
            for (int i = 0; i < sheet.LineCount; ++i)
            {
                WDBLine line = sheet.GetLineAtIndex(i);
                if (line.CellCount != sheet.FieldCount)
                {
                    result = false;
                    errors.Add(string.Format(WDBVerifyConst.VERIFY_SHEET_FIELD_ROW_ERR, sheet.FieldCount, line.Row));
                }
            }
            if (result)
            {
                for (int i = 0; i < sheet.FieldCount; ++i)
                {
                    WDBField       field       = sheet.GetFieldAtIndex(i);
                    WDBFieldVerify fieldVerify = fieldVerifyDic[field];
                    context.Add(WDBContextIENames.CONTEXT_FIELD_NAME, field);
                    context.Add(WDBContextIENames.CONTEXT_FIELD_VERIFY_NAME, fieldVerify);

                    for (int j = 0; j < sheet.LineCount; ++j)
                    {
                        WDBLine line = sheet.GetLineAtIndex(j);
                        WDBCell cell = line.GetCellByIndex(i);
                        context.Add(WDBContextIENames.CONTEXT_LINE_NAME, line);
                        if (cell.Col != field.Col)
                        {
                            result = false;
                            errors.Add(string.Format(WDBVerifyConst.VERIFY_CELL_COL_NOTSAME_ERR, cell.Row, cell.Col));
                        }
                        else if (fieldVerify.ValueValidations != null && fieldVerify.ValueValidations.Length > 0)
                        {
                            context.Add(WDBContextIENames.CONTEXT_CELL_NAME, cell);

                            foreach (var cellValidation in fieldVerify.ValueValidations)
                            {
                                context.InjectTo(cellValidation);
                                if (!cellValidation.Verify())
                                {
                                    result = false;
                                }
                            }
                            context.Remove(WDBContextIENames.CONTEXT_CELL_NAME);
                        }
                        context.Remove(WDBContextIENames.CONTEXT_LINE_NAME);
                    }
                    context.Remove(WDBContextIENames.CONTEXT_FIELD_NAME);
                    context.Remove(WDBContextIENames.CONTEXT_FIELD_VERIFY_NAME);
                }
            }
            context.Remove(WDBContextIENames.CONTEXT_SHEET_NAME);

            return(result);
        }
示例#3
0
        public bool Verify(ref List <string> errors)
        {
            if (string.IsNullOrEmpty(Name))
            {
                errors.Add(WDBConst.VERIFY_SHEET_NAME_EMPTY_ERR);
                return(false);
            }
            if (!Regex.IsMatch(Name, WDBConst.VERIFY_SHEET_NAME_REGEX))
            {
                errors.Add(string.Format(WDBConst.VERIFY_SHEET_NAME_REGEX_ERR, Name));
                return(false);
            }

            if (FieldCount == 0)
            {
                errors.Add(string.Format(WDBConst.VERIFY_SHEET_NO_FIELD_ERR, Name));
                return(false);
            }
            if (RowCount == 0)
            {
                errors.Add(string.Format(WDBConst.VERIFY_SHEET_NO_ROW_ERR, Name));
                return(false);
            }

            bool result = true;

            foreach (var field in fields)
            {
                if (!field.Verify(ref errors))
                {
                    if (result)
                    {
                        result = false;
                    }
                }
            }
            if (!result)
            {
                return(false);
            }

            StringContextContainer context = new StringContextContainer();

            context.Add(WDBConst.CONTEXT_SHEET_NAME, this);
            context.Add(WDBConst.CONTEXT_ERRORS_NAME, errors);
            foreach (var row in rows)
            {
                if (row.CellCount != FieldCount)
                {
                    if (result)
                    {
                        result = false;
                    }
                    errors.Add(string.Format(WDBConst.VERIFY_SHEET_FIELD_ROW_ERR, FieldCount, row.Row));
                }
            }

            if (!result)
            {
                return(false);
            }

            for (int i = 0; i < fields.Count; ++i)
            {
                var field = fields[i];
                context.Add(WDBConst.CONTEXT_FIELD_NAME, field);
                foreach (var row in rows)
                {
                    var cell = row.GetCellByIndex(i);
                    if (cell.Col != field.Col)
                    {
                        if (result)
                        {
                            result = false;
                        }
                        errors.Add(string.Format(WDBConst.VERIFY_CELL_COL_NOTSAME_ERR, cell.Row, cell.Col));
                    }
                    else
                    {
                        context.Add(WDBConst.CONTEXT_CELL_NAME, cell);
                        foreach (var cellValidation in field.Validations)
                        {
                            context.InjectTo(cellValidation);
                        }
                        context.Remove(WDBConst.CONTEXT_CELL_NAME);
                    }
                }
                context.Remove(WDBConst.CONTEXT_FIELD_NAME);
            }
            return(errors.Count == 0);
        }