private int GetMaxValue(MSITableColumnCategoryType category) { switch (category) { case MSITableColumnCategoryType.Integer: return 32767; case MSITableColumnCategoryType.DoubleInteger: return 2147483647; case MSITableColumnCategoryType.TimeDate: return 2147483647; default: throw new ApplicationException("Unhandled category: "+ category.ToString()); } }
private bool IsNumeric(MSITableColumnCategoryType category) { switch (category) { case MSITableColumnCategoryType.Integer: case MSITableColumnCategoryType.DoubleInteger: case MSITableColumnCategoryType.TimeDate: return true; default: return false; } }
private string GetNonNullableMsiColumnType(MSITableColumnCategoryType category) { switch (category) { case MSITableColumnCategoryType.Text: return "s0"; case MSITableColumnCategoryType.UpperCase: return "s72"; case MSITableColumnCategoryType.LowerCase: return "s72"; case MSITableColumnCategoryType.Integer: return "i2"; case MSITableColumnCategoryType.DoubleInteger: return "i4"; case MSITableColumnCategoryType.TimeDate: return "i4"; case MSITableColumnCategoryType.Identifier: return "s72"; case MSITableColumnCategoryType.Property: return "s72"; case MSITableColumnCategoryType.Filename: return "s255"; case MSITableColumnCategoryType.WildCardFilename: return "l0"; case MSITableColumnCategoryType.Path: return "s255"; case MSITableColumnCategoryType.Paths: return "s255"; case MSITableColumnCategoryType.AnyPath: return "s255"; case MSITableColumnCategoryType.DefaultDir: return "l255"; case MSITableColumnCategoryType.RegPath: return "l255"; case MSITableColumnCategoryType.Formatted: return "s255"; case MSITableColumnCategoryType.Template: return "l0"; case MSITableColumnCategoryType.Condition: return "s255"; case MSITableColumnCategoryType.GUID: return "s38"; case MSITableColumnCategoryType.Version: return "s32"; case MSITableColumnCategoryType.Language: return "s255"; case MSITableColumnCategoryType.Binary: return "v0"; // case MSITableColumnCategoryType.CustomSource: // return "s72"; case MSITableColumnCategoryType.Cabinet: return "s255"; case MSITableColumnCategoryType.Shortcut: return "s72"; default: throw new ApplicationException("Unhandled category: "+ category.ToString()); } }
private string GetType(MSITableColumnCategoryType category) { if (IsNumeric(category)) { return "int"; } else if (category == MSITableColumnCategoryType.Binary) { return "binary"; } else { return "string"; } }
private string GetMsiColumnType(MSITableColumnCategoryType category, bool nullable) { if (nullable) { return GetNonNullableMsiColumnType(category).ToUpper(); } else { return GetNonNullableMsiColumnType(category); } }