def initialize(dbh,food_id)
raise "Invalid DBH" if not dbh.kind_of?(DBI::DatabaseHandle)
raise "Bad Record ID" if dbh.select_one("select * from food where food_id=?", food_id).nil?
@dbh = dbh
@id = food_id
@measures = ObservableArray.new
@dbh.select_all("select measure_id from food_measures where food_id=?",@id).each do |row|
@measures << $replicator.get('measure', row['measure_id'])
end
@measures.add_observer {
old_measures = Array.new
@dbh.select_all("select measure_id from food_measures where food_id=?",@id).each do |row|
old_measures << $replicator.get('measure', row['measure_id'])
end
(@measures - old_measures).each do |measure|
@dbh.do("insert into food_measures (food_id,measure_id) values (?,?)",@id,measure.id)
end
(old_measures - @measures).each do |measure|
@dbh.do("delete from food_measures where food_id=? and measure_id=?",@id,measure.id)
end
}
end