equal
deleted
inserted
replaced
31 val select = Data.table.select(List(Data.name), Data.where_equal(session_name, theory_name)) |
31 val select = Data.table.select(List(Data.name), Data.where_equal(session_name, theory_name)) |
32 db.using_statement(select)(stmt => |
32 db.using_statement(select)(stmt => |
33 stmt.execute_query().iterator(res => res.string(Data.name)).toList) |
33 stmt.execute_query().iterator(res => res.string(Data.name)).toList) |
34 } |
34 } |
35 |
35 |
|
36 def message(msg: String, theory_name: String, name: String): String = |
|
37 msg + " " + quote(name) + " for theory " + quote(theory_name) |
|
38 |
36 sealed case class Entry( |
39 sealed case class Entry( |
37 session_name: String, |
40 session_name: String, |
38 theory_name: String, |
41 theory_name: String, |
39 name: String, |
42 name: String, |
40 compressed: Boolean, |
43 compressed: Boolean, |
41 body: Future[Bytes]) |
44 body: Future[Bytes]) |
42 { |
45 { |
43 override def toString: String = theory_name + ":" + name |
46 override def toString: String = theory_name + ":" + name |
44 |
|
45 def message(msg: String): String = |
|
46 msg + " " + quote(name) + " for theory " + quote(theory_name) |
|
47 |
47 |
48 def write(db: SQL.Database) |
48 def write(db: SQL.Database) |
49 { |
49 { |
50 val bytes = body.join |
50 val bytes = body.join |
51 db.using_statement(Data.table.insert())(stmt => |
51 db.using_statement(Data.table.insert())(stmt => |
77 if (res.next()) { |
77 if (res.next()) { |
78 val compressed = res.bool(Data.compressed) |
78 val compressed = res.bool(Data.compressed) |
79 val body = res.bytes(Data.body) |
79 val body = res.bytes(Data.body) |
80 Entry(session_name, theory_name, name, compressed, Future.value(body)) |
80 Entry(session_name, theory_name, name, compressed, Future.value(body)) |
81 } |
81 } |
82 else error(Entry(session_name, theory_name, name, false, Future.value(Bytes.empty)).message("Bad export")) |
82 else error(message("Bad export", theory_name, name)) |
83 }) |
83 }) |
84 } |
84 } |
85 |
85 |
86 |
86 |
87 /* database consumer thread */ |
87 /* database consumer thread */ |
98 Consumer_Thread.fork(name = "export")(consume = (entry: Entry) => |
98 Consumer_Thread.fork(name = "export")(consume = (entry: Entry) => |
99 { |
99 { |
100 entry.body.join |
100 entry.body.join |
101 db.transaction { |
101 db.transaction { |
102 if (read_names(db, entry.session_name, entry.theory_name).contains(entry.name)) { |
102 if (read_names(db, entry.session_name, entry.theory_name).contains(entry.name)) { |
103 export_errors.change(errs => entry.message("Duplicate export") :: errs) |
103 val err = message("Duplicate export", entry.theory_name, entry.name) |
|
104 export_errors.change(errs => err :: errs) |
104 } |
105 } |
105 else entry.write(db) |
106 else entry.write(db) |
106 } |
107 } |
107 true |
108 true |
108 }) |
109 }) |