@joebigelow / wix / commits / 4a8dc1f4

Redesign CustomTable tuples to enable file resolution in Core

Rob Mensching committed Jun 3, 2020 at 02:04 UTC 4a8dc1f4d55278abdff056bb2a332ffec0f60c90
6 files changed +253 -186
src/WixToolset.Data/Tuples/TupleDefinitions.cs
+8 -4
@@ -144,8 +144,9 @@ namespace WixToolset.Data
144 WixComplexReference,
145 WixComponentGroup,
146 WixComponentSearch,
147 - WixCustomRow,
147 WixCustomTable,
148 + WixCustomTableCell,
149 + WixCustomTableColumn,
150 WixDeltaPatchFile,
151 WixDeltaPatchSymbolPaths,
152 WixDependencyProvider,
@@ -613,12 +614,15 @@ namespace WixToolset.Data
614 case TupleDefinitionType.WixComponentSearch:
615 return TupleDefinitions.WixComponentSearch;
616
616 - case TupleDefinitionType.WixCustomRow:
617 - return TupleDefinitions.WixCustomRow;
618 -
617 case TupleDefinitionType.WixCustomTable:
618 return TupleDefinitions.WixCustomTable;
619
620 + case TupleDefinitionType.WixCustomTableCell:
621 + return TupleDefinitions.WixCustomTableCell;
622 +
623 + case TupleDefinitionType.WixCustomTableColumn:
624 + return TupleDefinitions.WixCustomTableColumn;
625 +
626 case TupleDefinitionType.WixDeltaPatchFile:
627 return TupleDefinitions.WixDeltaPatchFile;
628
src/WixToolset.Data/Tuples/WixCustomRowTuple.cs deleted
-56
@@ -1,56 +0,0 @@
1 -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 -
3 -namespace WixToolset.Data
4 -{
5 - using WixToolset.Data.Tuples;
6 -
7 - public static partial class TupleDefinitions
8 - {
9 - public static readonly IntermediateTupleDefinition WixCustomRow = new IntermediateTupleDefinition(
10 - TupleDefinitionType.WixCustomRow,
11 - new[]
12 - {
13 - new IntermediateFieldDefinition(nameof(WixCustomRowTupleFields.Table), IntermediateFieldType.String),
14 - new IntermediateFieldDefinition(nameof(WixCustomRowTupleFields.FieldData), IntermediateFieldType.String),
15 - },
16 - typeof(WixCustomRowTuple));
17 - }
18 -}
19 -
20 -namespace WixToolset.Data.Tuples
21 -{
22 - public enum WixCustomRowTupleFields
23 - {
24 - Table,
25 - FieldData,
26 - }
27 -
28 - public class WixCustomRowTuple : IntermediateTuple
29 - {
30 - public const char FieldSeparator = '\x85';
31 -
32 - public WixCustomRowTuple() : base(TupleDefinitions.WixCustomRow, null, null)
33 - {
34 - }
35 -
36 - public WixCustomRowTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.WixCustomRow, sourceLineNumber, id)
37 - {
38 - }
39 -
40 - public IntermediateField this[WixCustomRowTupleFields index] => this.Fields[(int)index];
41 -
42 - public string Table
43 - {
44 - get => (string)this.Fields[(int)WixCustomRowTupleFields.Table];
45 - set => this.Set((int)WixCustomRowTupleFields.Table, value);
46 - }
47 -
48 - public string FieldData
49 - {
50 - get => (string)this.Fields[(int)WixCustomRowTupleFields.FieldData];
51 - set => this.Set((int)WixCustomRowTupleFields.FieldData, value);
52 - }
53 -
54 - public string[] FieldDataSeparated => this.FieldData.Split(FieldSeparator);
55 - }
56 -}
src/WixToolset.Data/Tuples/WixCustomTableCellTuple.cs new
+68
@@ -0,0 +1,68 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixToolset.Data
4 +{
5 + using WixToolset.Data.Tuples;
6 +
7 + public static partial class TupleDefinitions
8 + {
9 + public static readonly IntermediateTupleDefinition WixCustomTableCell = new IntermediateTupleDefinition(
10 + TupleDefinitionType.WixCustomTableCell,
11 + new[]
12 + {
13 + new IntermediateFieldDefinition(nameof(WixCustomTableCellTupleFields.TableRef), IntermediateFieldType.String),
14 + new IntermediateFieldDefinition(nameof(WixCustomTableCellTupleFields.ColumnRef), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(WixCustomTableCellTupleFields.RowId), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(WixCustomTableCellTupleFields.Data), IntermediateFieldType.String),
17 + },
18 + typeof(WixCustomTableCellTuple));
19 + }
20 +}
21 +
22 +namespace WixToolset.Data.Tuples
23 +{
24 + public enum WixCustomTableCellTupleFields
25 + {
26 + TableRef,
27 + ColumnRef,
28 + RowId,
29 + Data,
30 + }
31 +
32 + public class WixCustomTableCellTuple : IntermediateTuple
33 + {
34 + public WixCustomTableCellTuple() : base(TupleDefinitions.WixCustomTableCell, null, null)
35 + {
36 + }
37 +
38 + public WixCustomTableCellTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.WixCustomTableCell, sourceLineNumber, id)
39 + {
40 + }
41 +
42 + public IntermediateField this[WixCustomTableCellTupleFields index] => this.Fields[(int)index];
43 +
44 + public string TableRef
45 + {
46 + get => (string)this.Fields[(int)WixCustomTableCellTupleFields.TableRef];
47 + set => this.Set((int)WixCustomTableCellTupleFields.TableRef, value);
48 + }
49 +
50 + public string ColumnRef
51 + {
52 + get => (string)this.Fields[(int)WixCustomTableCellTupleFields.ColumnRef];
53 + set => this.Set((int)WixCustomTableCellTupleFields.ColumnRef, value);
54 + }
55 +
56 + public string RowId
57 + {
58 + get => (string)this.Fields[(int)WixCustomTableCellTupleFields.RowId];
59 + set => this.Set((int)WixCustomTableCellTupleFields.RowId, value);
60 + }
61 +
62 + public string Data
63 + {
64 + get => (string)this.Fields[(int)WixCustomTableCellTupleFields.Data];
65 + set => this.Set((int)WixCustomTableCellTupleFields.Data, value);
66 + }
67 + }
68 +}
src/WixToolset.Data/Tuples/WixCustomTableColumnTuple.cs new
+173
@@ -0,0 +1,173 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixToolset.Data
4 +{
5 + using WixToolset.Data.Tuples;
6 +
7 + public static partial class TupleDefinitions
8 + {
9 + public static readonly IntermediateTupleDefinition WixCustomTableColumn = new IntermediateTupleDefinition(
10 + TupleDefinitionType.WixCustomTableColumn,
11 + new[]
12 + {
13 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.TableRef), IntermediateFieldType.String),
14 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.Name), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.Type), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.Attributes), IntermediateFieldType.Number),
17 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.Width), IntermediateFieldType.Number),
18 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.MinValue), IntermediateFieldType.String),
19 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.MaxValue), IntermediateFieldType.String),
20 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.KeyTable), IntermediateFieldType.String),
21 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.KeyColumn), IntermediateFieldType.String),
22 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.Category), IntermediateFieldType.String),
23 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.Set), IntermediateFieldType.String),
24 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.Description), IntermediateFieldType.String),
25 + new IntermediateFieldDefinition(nameof(WixCustomTableColumnTupleFields.Modularize), IntermediateFieldType.Number)
26 + },
27 + typeof(WixCustomTableColumnTuple));
28 + }
29 +}
30 +
31 +namespace WixToolset.Data.Tuples
32 +{
33 + using System;
34 +
35 + public enum WixCustomTableColumnTupleFields
36 + {
37 + TableRef,
38 + Name,
39 + Type,
40 + Attributes,
41 + Width,
42 + MinValue,
43 + MaxValue,
44 + KeyTable,
45 + KeyColumn,
46 + Category,
47 + Set,
48 + Description,
49 + Modularize,
50 + }
51 +
52 + [Flags]
53 + public enum WixCustomTableColumnTupleAttributes
54 + {
55 + None,
56 + PrimaryKey,
57 + Localizable,
58 + Nullable,
59 + Unreal,
60 + }
61 +
62 + public enum WixCustomTableColumnModularizeType
63 + {
64 + None,
65 + Column,
66 + CompanionFile,
67 + Condition,
68 + ControlEventArgument,
69 + ControlText,
70 + Icon,
71 + Property,
72 + SemicolonDelimited,
73 + }
74 +
75 + public class WixCustomTableColumnTuple : IntermediateTuple
76 + {
77 + public WixCustomTableColumnTuple() : base(TupleDefinitions.WixCustomTableColumn, null, null)
78 + {
79 + }
80 +
81 + public WixCustomTableColumnTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.WixCustomTableColumn, sourceLineNumber, id)
82 + {
83 + }
84 +
85 + public IntermediateField this[WixCustomTableColumnTupleFields index] => this.Fields[(int)index];
86 +
87 + public string TableRef
88 + {
89 + get => (string)this.Fields[(int)WixCustomTableColumnTupleFields.TableRef];
90 + set => this.Set((int)WixCustomTableColumnTupleFields.TableRef, value);
91 + }
92 +
93 + public string Name
94 + {
95 + get => (string)this.Fields[(int)WixCustomTableColumnTupleFields.Name];
96 + set => this.Set((int)WixCustomTableColumnTupleFields.Name, value);
97 + }
98 +
99 + public IntermediateFieldType Type
100 + {
101 + get => (IntermediateFieldType)this.Fields[(int)WixCustomTableColumnTupleFields.Type].AsNumber();
102 + set => this.Set((int)WixCustomTableColumnTupleFields.Type, (int)value);
103 + }
104 +
105 + public WixCustomTableColumnTupleAttributes Attributes
106 + {
107 + get => (WixCustomTableColumnTupleAttributes)this.Fields[(int)WixCustomTableColumnTupleFields.Attributes].AsNumber();
108 + set => this.Set((int)WixCustomTableColumnTupleFields.Attributes, (int)value);
109 + }
110 +
111 + public int Width
112 + {
113 + get => (int)this.Fields[(int)WixCustomTableColumnTupleFields.Width];
114 + set => this.Set((int)WixCustomTableColumnTupleFields.Width, value);
115 + }
116 +
117 + public long? MinValue
118 + {
119 + get => (long?)this.Fields[(int)WixCustomTableColumnTupleFields.MinValue];
120 + set => this.Set((int)WixCustomTableColumnTupleFields.MinValue, value);
121 + }
122 +
123 + public long? MaxValue
124 + {
125 + get => (long?)this.Fields[(int)WixCustomTableColumnTupleFields.MaxValue];
126 + set => this.Set((int)WixCustomTableColumnTupleFields.MaxValue, value);
127 + }
128 +
129 + public string KeyTable
130 + {
131 + get => (string)this.Fields[(int)WixCustomTableColumnTupleFields.KeyTable];
132 + set => this.Set((int)WixCustomTableColumnTupleFields.KeyTable, value);
133 + }
134 +
135 + public int? KeyColumn
136 + {
137 + get => (int?)this.Fields[(int)WixCustomTableColumnTupleFields.KeyColumn];
138 + set => this.Set((int)WixCustomTableColumnTupleFields.KeyColumn, value);
139 + }
140 +
141 + public string Category
142 + {
143 + get => (string)this.Fields[(int)WixCustomTableColumnTupleFields.Category];
144 + set => this.Set((int)WixCustomTableColumnTupleFields.Category, value);
145 + }
146 +
147 + public string Set
148 + {
149 + get => (string)this.Fields[(int)WixCustomTableColumnTupleFields.Set];
150 + set => this.Set((int)WixCustomTableColumnTupleFields.Set, value);
151 + }
152 +
153 + public string Description
154 + {
155 + get => (string)this.Fields[(int)WixCustomTableColumnTupleFields.Description];
156 + set => this.Set((int)WixCustomTableColumnTupleFields.Description, value);
157 + }
158 +
159 + public WixCustomTableColumnModularizeType? Modularize
160 + {
161 + get => (WixCustomTableColumnModularizeType?)this.Fields[(int)WixCustomTableColumnTupleFields.Modularize].AsNullableNumber();
162 + set => this.Set((int)WixCustomTableColumnTupleFields.Modularize, (int?)value);
163 + }
164 +
165 + public bool PrimaryKey => (this.Attributes & WixCustomTableColumnTupleAttributes.PrimaryKey) == WixCustomTableColumnTupleAttributes.PrimaryKey;
166 +
167 + public bool Localizable => (this.Attributes & WixCustomTableColumnTupleAttributes.Localizable) == WixCustomTableColumnTupleAttributes.Localizable;
168 +
169 + public bool Nullable => (this.Attributes & WixCustomTableColumnTupleAttributes.Nullable) == WixCustomTableColumnTupleAttributes.Nullable;
170 +
171 + public bool Unreal => (this.Attributes & WixCustomTableColumnTupleAttributes.Unreal) == WixCustomTableColumnTupleAttributes.Unreal;
172 + }
173 +}
src/WixToolset.Data/Tuples/WixCustomTableTuple.cs
+4 -88
@@ -10,18 +10,7 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixCustomTable,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.ColumnCount), IntermediateFieldType.Number),
13 new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.ColumnNames), IntermediateFieldType.String),
15 - new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.ColumnTypes), IntermediateFieldType.String),
16 - new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.PrimaryKeys), IntermediateFieldType.String),
17 - new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.MinValues), IntermediateFieldType.String),
18 - new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.MaxValues), IntermediateFieldType.String),
19 - new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.KeyTables), IntermediateFieldType.String),
20 - new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.KeyColumns), IntermediateFieldType.String),
21 - new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.Categories), IntermediateFieldType.String),
22 - new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.Sets), IntermediateFieldType.String),
23 - new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.Descriptions), IntermediateFieldType.String),
24 - new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.Modularizations), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixCustomTableTupleFields.Unreal), IntermediateFieldType.Bool),
15 },
16 typeof(WixCustomTableTuple));
@@ -32,23 +21,14 @@ namespace WixToolset.Data.Tuples
21 {
22 public enum WixCustomTableTupleFields
23 {
35 - ColumnCount,
24 ColumnNames,
37 - ColumnTypes,
38 - PrimaryKeys,
39 - MinValues,
40 - MaxValues,
41 - KeyTables,
42 - KeyColumns,
43 - Categories,
44 - Sets,
45 - Descriptions,
46 - Modularizations,
25 Unreal,
26 }
27
28 public class WixCustomTableTuple : IntermediateTuple
29 {
30 + public const char ColumnNamesSeparator = '\x85';
31 +
32 public WixCustomTableTuple() : base(TupleDefinitions.WixCustomTable, null, null)
33 {
34 }
@@ -59,82 +39,18 @@ namespace WixToolset.Data.Tuples
39
40 public IntermediateField this[WixCustomTableTupleFields index] => this.Fields[(int)index];
41
62 - public int ColumnCount
63 - {
64 - get => (int)this.Fields[(int)WixCustomTableTupleFields.ColumnCount];
65 - set => this.Set((int)WixCustomTableTupleFields.ColumnCount, value);
66 - }
67 -
42 public string ColumnNames
43 {
44 get => (string)this.Fields[(int)WixCustomTableTupleFields.ColumnNames];
45 set => this.Set((int)WixCustomTableTupleFields.ColumnNames, value);
46 }
47
74 - public string ColumnTypes
75 - {
76 - get => (string)this.Fields[(int)WixCustomTableTupleFields.ColumnTypes];
77 - set => this.Set((int)WixCustomTableTupleFields.ColumnTypes, value);
78 - }
79 -
80 - public string PrimaryKeys
81 - {
82 - get => (string)this.Fields[(int)WixCustomTableTupleFields.PrimaryKeys];
83 - set => this.Set((int)WixCustomTableTupleFields.PrimaryKeys, value);
84 - }
85 -
86 - public string MinValues
87 - {
88 - get => (string)this.Fields[(int)WixCustomTableTupleFields.MinValues];
89 - set => this.Set((int)WixCustomTableTupleFields.MinValues, value);
90 - }
91 -
92 - public string MaxValues
93 - {
94 - get => (string)this.Fields[(int)WixCustomTableTupleFields.MaxValues];
95 - set => this.Set((int)WixCustomTableTupleFields.MaxValues, value);
96 - }
97 -
98 - public string KeyTables
99 - {
100 - get => (string)this.Fields[(int)WixCustomTableTupleFields.KeyTables];
101 - set => this.Set((int)WixCustomTableTupleFields.KeyTables, value);
102 - }
103 -
104 - public string KeyColumns
105 - {
106 - get => (string)this.Fields[(int)WixCustomTableTupleFields.KeyColumns];
107 - set => this.Set((int)WixCustomTableTupleFields.KeyColumns, value);
108 - }
109 -
110 - public string Categories
111 - {
112 - get => (string)this.Fields[(int)WixCustomTableTupleFields.Categories];
113 - set => this.Set((int)WixCustomTableTupleFields.Categories, value);
114 - }
115 -
116 - public string Sets
117 - {
118 - get => (string)this.Fields[(int)WixCustomTableTupleFields.Sets];
119 - set => this.Set((int)WixCustomTableTupleFields.Sets, value);
120 - }
121 -
122 - public string Descriptions
123 - {
124 - get => (string)this.Fields[(int)WixCustomTableTupleFields.Descriptions];
125 - set => this.Set((int)WixCustomTableTupleFields.Descriptions, value);
126 - }
127 -
128 - public string Modularizations
129 - {
130 - get => (string)this.Fields[(int)WixCustomTableTupleFields.Modularizations];
131 - set => this.Set((int)WixCustomTableTupleFields.Modularizations, value);
132 - }
133 -
48 public bool Unreal
49 {
50 get => (bool)this.Fields[(int)WixCustomTableTupleFields.Unreal];
51 set => this.Set((int)WixCustomTableTupleFields.Unreal, value);
52 }
53 +
54 + public string[] ColumnNamesSeparated => this.ColumnNames.Split(ColumnNamesSeparator);
55 }
56 }
src/WixToolset.Data/WindowsInstaller/WindowsInstallerTableDefinitions.cs
-38
@@ -1733,42 +1733,6 @@ namespace WixToolset.Data.WindowsInstaller
1733 tupleIdIsPrimaryKey: false
1734 );
1735
1736 - public static readonly TableDefinition WixCustomRow = new TableDefinition(
1737 - "WixCustomRow",
1738 - TupleDefinitions.WixCustomRow,
1739 - new[]
1740 - {
1741 - new ColumnDefinition("Table", ColumnType.String, 62, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1742 - new ColumnDefinition("FieldData", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1743 - },
1744 - unreal: true,
1745 - tupleIdIsPrimaryKey: false
1746 - );
1747 -
1748 - public static readonly TableDefinition WixCustomTable = new TableDefinition(
1749 - "WixCustomTable",
1750 - TupleDefinitions.WixCustomTable,
1751 - new[]
1752 - {
1753 - new ColumnDefinition("Table", ColumnType.String, 62, primaryKey: true, nullable: false, ColumnCategory.Unknown),
1754 - new ColumnDefinition("ColumnCount", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1755 - new ColumnDefinition("ColumnNames", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1756 - new ColumnDefinition("ColumnTypes", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1757 - new ColumnDefinition("PrimaryKeys", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1758 - new ColumnDefinition("MinValues", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1759 - new ColumnDefinition("MaxValues", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1760 - new ColumnDefinition("KeyTables", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1761 - new ColumnDefinition("KeyColumns", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1762 - new ColumnDefinition("Categories", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1763 - new ColumnDefinition("Sets", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1764 - new ColumnDefinition("Descriptions", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1765 - new ColumnDefinition("Modularizations", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1766 - new ColumnDefinition("BootstrapperApplicationData", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown),
1767 - },
1768 - unreal: true,
1769 - tupleIdIsPrimaryKey: true
1770 - );
1771 -
1736 public static readonly TableDefinition WixDirectory = new TableDefinition(
1737 "WixDirectory",
1738 null,
@@ -2325,8 +2289,6 @@ namespace WixToolset.Data.WindowsInstaller
2289 WixComplexReference,
2290 WixComponentGroup,
2291 WixControl,
2328 - WixCustomRow,
2329 - WixCustomTable,
2292 WixDirectory,
2293 WixEnsureTable,
2294 WixFeatureGroup,