private void GetMinValue(MSITableColumn column, out int minValue, out bool useMinValue) { minValue = column.minvalue; useMinValue = column.minvalueSpecified; if (!useMinValue && IsNumeric(column.category)) { useMinValue = true; minValue = GetMinValue(column.category); } }
private string GetNullability(MSITableColumn column) { string nullability; if (column.nullable) { if (column.key) { nullability = NullableKeyColumn; } else { nullability = NullableColumn; } } else { nullability = NonNullableColumn; } return nullability; }
private string GetValidationCategory(MSITableColumn column) { string columnCategory = null; if (!IsNumeric(column.category)) { columnCategory = column.category.ToString(); } return columnCategory; }
private string GetType(MSITableColumn column) { string currentColumnType; if (column.type != null) { if (column.type.ToString().ToLower().StartsWith("i")) currentColumnType = "int"; else if(column.type.ToString().ToLower().StartsWith("v")) currentColumnType = "binary"; else currentColumnType = "string"; } else if (column.categorySpecified) { currentColumnType = GetType(column.category); } else { Log(Level.Verbose, "Must specify a valid category or type. Defaulting to category type: s0"); currentColumnType = "string"; } return currentColumnType; }
private string GetMsiColumnType(MSITableColumn column) { string columnType; if (column.type != null) { columnType = column.type; } else if (column.categorySpecified) { columnType = GetMsiColumnType(column.category, column.nullable); } else { if (column.nullable) { columnType = "S0"; } else { columnType = "s0"; } } return columnType; }
private void AddToInsertionColumnList(MSITableColumn column, ArrayList columnList) { MSIRowColumnData currentColumn = new MSIRowColumnData(); currentColumn.name = column.name; currentColumn.id = columnList.Count; currentColumn.type = GetType(column); columnList.Add(currentColumn); }
private void AddColumnValidation(string tableName, MSITableColumn column, InstallerTable validationTable) { string nullability = GetNullability(column); string validationCategory = GetValidationCategory(column); int minValue; bool useMinValue; GetMinValue(column, out minValue, out useMinValue); int maxValue; bool useMaxValue; GetMaxValue(column, out maxValue, out useMaxValue); try { validationTable.InsertRecord(tableName, column.name, nullability, (useMinValue ? (object) minValue : null), (useMaxValue ? (object) maxValue : null), column.keytable, (column.keycolumnSpecified ? (object) column.keycolumn : null), validationCategory, column.set, column.description); } catch (Exception) { Log(Level.Warning, "_Validation table record already exists for column: " + column.name); } }