summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2013-01-09 01:27:55 +0100
committerMarc-André Lureau <marcandre.lureau@gmail.com>2013-01-09 01:27:55 +0100
commite21fa53895f1347674467d9221167e92dcc71214 (patch)
tree0fa4b7e9df51a8edee938780019ad62732fe8e78
parente8f8f80f4ab2324563cf91211e458c218fc7ec5d (diff)
downloadmsitools-e21fa53895f1347674467d9221167e92dcc71214.tar.gz
msitools-e21fa53895f1347674467d9221167e92dcc71214.tar.xz
msitools-e21fa53895f1347674467d9221167e92dcc71214.zip
Factor MsiTableSequence code
-rw-r--r--src/msi.vala90
1 files changed, 24 insertions, 66 deletions
diff --git a/src/msi.vala b/src/msi.vala
index 336c169..d3900d7 100644
--- a/src/msi.vala
+++ b/src/msi.vala
@@ -38,13 +38,7 @@ namespace Wixl {
}
}
- class MsiTableAdminExecuteSequence: MsiTable {
- static construct {
- name = "AdminExecuteSequence";
- sql_create = "CREATE TABLE `AdminExecuteSequence` (`Action` CHAR(72) NOT NULL, `Condition` CHAR(255), `Sequence` INT PRIMARY KEY `Action`)";
- sql_insert = "INSERT INTO `AdminExecuteSequence` (`Action`, `Sequence`) VALUES (?, ?)";
- }
-
+ abstract class MsiTableSequence: MsiTable {
public void add (string action, int sequence) throws GLib.Error {
var rec = new Libmsi.Record (2);
@@ -54,41 +48,41 @@ namespace Wixl {
records.append (rec);
}
+
+ protected class void set_sequence_table_name (string table) {
+ name = table;
+ sql_create = "CREATE TABLE `%s` (`Action` CHAR(72) NOT NULL, `Condition` CHAR(255), `Sequence` INT PRIMARY KEY `Action`)".printf (table);
+ sql_insert = "INSERT INTO `%s` (`Action`, `Sequence`) VALUES (?, ?)".printf (table);
+ }
}
- class MsiTableAdminUISequence: MsiTable {
+ class MsiTableAdminExecuteSequence: MsiTableSequence {
static construct {
- name = "AdminUISequence";
- sql_create = "CREATE TABLE `AdminUISequence` (`Action` CHAR(72) NOT NULL, `Condition` CHAR(255), `Sequence` INT PRIMARY KEY `Action`)";
- sql_insert = "INSERT INTO `AdminUISequence` (`Action`, `Sequence`) VALUES (?, ?)";
+ set_sequence_table_name ("AdminExecuteSequence");
}
+ }
- public void add (string action, int sequence) throws GLib.Error {
- var rec = new Libmsi.Record (2);
-
- if (!rec.set_string (1, action) ||
- !rec.set_int (2, sequence))
- throw new Wixl.Error.FAILED ("failed to add record");
-
- records.append (rec);
+ class MsiTableAdminUISequence: MsiTableSequence {
+ static construct {
+ set_sequence_table_name ("AdminUISequence");
}
}
- class MsiTableAdvtExecuteSequence: MsiTable {
+ class MsiTableAdvtExecuteSequence: MsiTableSequence {
static construct {
- name = "AdvtExecuteSequence";
- sql_create = "CREATE TABLE `AdvtExecuteSequence` (`Action` CHAR(72) NOT NULL, `Condition` CHAR(255), `Sequence` INT PRIMARY KEY `Action`)";
- sql_insert = "INSERT INTO `AdvtExecuteSequence` (`Action`, `Sequence`) VALUES (?, ?)";
+ set_sequence_table_name ("AdvtExecuteSequence");
}
+ }
- public void add (string action, int sequence) throws GLib.Error {
- var rec = new Libmsi.Record (2);
-
- if (!rec.set_string (1, action) ||
- !rec.set_int (2, sequence))
- throw new Wixl.Error.FAILED ("failed to add record");
+ class MsiTableInstallExecuteSequence: MsiTableSequence {
+ static construct {
+ set_sequence_table_name ("InstallExecuteSequence");
+ }
+ }
- records.append (rec);
+ class MsiTableInstallUISequence: MsiTableSequence {
+ static construct {
+ set_sequence_table_name ("InstallUISequence");
}
}
@@ -127,42 +121,6 @@ namespace Wixl {
}
}
- class MsiTableInstallExecuteSequence: MsiTable {
- static construct {
- name = "InstallExecuteSequence";
- sql_create = "CREATE TABLE `InstallExecuteSequence` (`Action` CHAR(72) NOT NULL, `Condition` CHAR(255), `Sequence` INT PRIMARY KEY `Action`)";
- sql_insert = "INSERT INTO `InstallExecuteSequence` (`Action`, `Sequence`) VALUES (?, ?)";
- }
-
- public void add (string action, int sequence) throws GLib.Error {
- var rec = new Libmsi.Record (2);
-
- if (!rec.set_string (1, action) ||
- !rec.set_int (2, sequence))
- throw new Wixl.Error.FAILED ("failed to add record");
-
- records.append (rec);
- }
- }
-
- class MsiTableInstallUISequence: MsiTable {
- static construct {
- name = "InstallUISequence";
- sql_create = "CREATE TABLE `InstallUISequence` (`Action` CHAR(72) NOT NULL, `Condition` CHAR(255), `Sequence` INT PRIMARY KEY `Action`)";
- sql_insert = "INSERT INTO `InstallUISequence` (`Action`, `Sequence`) VALUES (?, ?)";
- }
-
- public void add (string action, int sequence) throws GLib.Error {
- var rec = new Libmsi.Record (2);
-
- if (!rec.set_string (1, action) ||
- !rec.set_int (2, sequence))
- throw new Wixl.Error.FAILED ("failed to add record");
-
- records.append (rec);
- }
- }
-
class MsiTableMedia: MsiTable {
static construct {
name = "Media";