<< | Index | >>
suspend
Current status
1) Error:
test_update(ODDB::SwissmedicPluginTest):
NoMethodError: undefined method `each_registration' for <FlexMock:app>:FlexMock
/usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:105:in `method_missing'
/usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap'
/usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:98:in `method_missing'
/home/masa/ywesee/oddb.org/src/plugin/swissmedic.rb:65:in `set_all_export_flag_false'
/home/masa/ywesee/oddb.org/src/plugin/swissmedic.rb:44:in `update'
/home/masa/ywesee/oddb.org/test/test_plugin/swissmedic.rb:1462:in `test_update'
4098 tests, 6568 assertions, 0 failures, 1 errors
Updated
4101 tests, 6572 assertions, 0 failures, 0 errors
Commit
Problem
Commit
Note

Commit
Note
Task

Task
Design (for example)
Experiment
def resolve
if(@session.request_path == @request_path)
self
elsif(iksnr = @session.user_input(:swissmedicnr)) \
&& (pointer = @session.app.registration(iksnr).pointer) \
&& pointer.is_a?(Persistence::Pointer) \
&& (model = pointer.resolve(@session.app))
if(klass = resolve_state(pointer))
klass.new(@session, model)
else
State::Admin::TransparentLogin.new(@session, model)
end
elsif((pointer = @session.user_input(:pointer)) \
&& pointer.is_a?(Persistence::Pointer) \
&& (model = pointer.resolve(@session.app)))
if(klass = resolve_state(pointer))
klass.new(@session, model)
else
State::Admin::TransparentLogin.new(@session, model)
end
end
end
Run
Access
Result
Experiment
def resolve
if(@session.request_path == @request_path)
self
elsif(iksnr = @session.user_input(:reg)) \
&& (pointer = @session.app.registration(iksnr).pointer) && pointer.is_a?(Persistence::Pointer) && (model = pointer.resolve(@session.app))
if(klass = resolve_state(pointer))
klass.new(@session, model)
else
State::Admin::TransparentLogin.new(@session, model)
end
elsif((pointer = @session.user_input(:pointer)) \
&& pointer.is_a?(Persistence::Pointer) \
&& (model = pointer.resolve(@session.app)))
if(klass = resolve_state(pointer))
klass.new(@session, model)
else
State::Admin::TransparentLogin.new(@session, model)
end
end
end
alias :reg :iksnr
Access
Result
Experiment
alias :drug :resolve
EVENTS = [
...
:drug,
...
Access
Result
Experiment
def resolve
if(@session.request_path == @request_path)
self
else
iksnr = @session.user_input(:reg)
seqnr = @session.user_input(:seq)
ikscd = @session.user_input(:pack)
pointer = if iksnr && seqnr && ikscd
@session.app.registration(iksnr).sequence(seqnr).package(ikscd).pointer
elsif iksnr && seqnr
@session.app.registration(iksnr).sequence(seqnr).pointer
elsif iksnr
@session.app.registration(iksnr).pointer
else
@session.user_input(:pointer)
end
if pointer.is_a?(Persistence::Pointer) \
&& (model = pointer.resolve(@session.app))
if(klass = resolve_state(pointer))
klass.new(@session, model)
else
State::Admin::TransparentLogin.new(@session, model)
end
end
end
end
alias :drug :resolve
Access
Result
Note
Next
Experiment
class PointerLink < View::PointerValue
def init
super
arguments = {'pointer' => @model.pointer.to_s}
iksnr = if match = @model.pointer.to_s.match(/registration,(\d+)/)
match[1]
end
seqnr = if match = @model.pointer.to_s.match(/sequence,(\d+)/)
match[1]
end
ikscd = if match = @model.pointer.to_s.match(/package,(\d+)/)
match[1]
end
smart_link = if iksnr && seqnr && ikscd
{:reg => iksnr, :seq => seqnr, :pack => ikscd}
elsif iksnr && seqnr
{:reg => iksnr, :seq => seqnr}
elsif iksnr
{:reg => iksnr}
end
if smart_link
@attributes['href'] = @lookandfeel._event_url(:drug, smart_link)
else
@attributes['href'] = @lookandfeel._event_url(:resolve, arguments)
end
#@attributes['href'] = @lookandfeel._event_url(:resolve, arguments)
end
Result
Refactor
class PointerLink < View::PointerValue
def init
super
arguments = {'pointer' => @model.pointer.to_s}
# @model.pointer.to_s might be like this:
# :!registration,31706!sequence,01!package,017.
# in such case, URL link will be smarter than the URL by using pointer
# z.B.) http://ch.oddb.org/de/gcc/drug/reg/31706/seq/01/pack/017
# The old format is also available.
list = @model.pointer.to_s.gsub(/\./,'').split(/!/).delete_if{|v| v == ":"}.map{|i| i.split(",")}.flatten
nrs = Hash[*list]
iksnr = nrs['registration']
seqnr = nrs['sequence']
ikscd = nrs['package']
smart_link = if iksnr && seqnr && ikscd
{:reg => iksnr, :seq => seqnr, :pack => ikscd}
elsif iksnr && seqnr
{:reg => iksnr, :seq => seqnr}
elsif iksnr
{:reg => iksnr}
end
if smart_link
@attributes['href'] = @lookandfeel._event_url(:drug, smart_link)
else
@attributes['href'] = @lookandfeel._event_url(:resolve, arguments)
end
end
Result
Next
Goal
Experiment
def show
if(@session.request_path == @request_path)
self
else
iksnr = @session.user_input(:reg)
seqnr = @session.user_input(:seq)
ikscd = @session.user_input(:pack)
pointer = if iksnr && seqnr && ikscd
@session.app.registration(iksnr).sequence(seqnr).package(ikscd).pointer
elsif iksnr && seqnr
@session.app.registration(iksnr).sequence(seqnr).pointer
elsif iksnr
@session.app.registration(iksnr).pointer
else
@session.user_input(:pointer)
end
if pointer.is_a?(Persistence::Pointer) \
&& (model = pointer.resolve(@session.app)) \
&& klass = resolve_state(pointer, :readonly)
klass.new(@session, model)
end
end
end
Access
Result
Next
Experiment
def pointer_descr(model, session=@session)
link = PointerLink.new(:pointer_descr, model, @session, self)
unless(@session.allowed?('edit', model))
# model.pointer.to_s might be like this:
# :!registration,31706!sequence,01!package,017.
# in such case, URL link will be smarter than the URL by using pointer.
# z.B.) http://ch.oddb.org/de/gcc/show/reg/31706/seq/01/pack/017
# The old format is also available.
list = model.pointer.to_s.gsub(/\./,'').split(/!/).delete_if{|v| v == ":"}.map{|i| i.split(",")}.flatten
nrs = Hash[*list]
iksnr = nrs['registration']
seqnr = nrs['sequence']
ikscd = nrs['package']
smart_link = if iksnr && seqnr && ikscd
{:reg => iksnr, :seq => seqnr, :pack => ikscd}
elsif iksnr && seqnr
{:reg => iksnr, :seq => seqnr}
elsif iksnr
{:reg => iksnr}
end
if smart_link
link.href = @lookandfeel._event_url(:show, smart_link)
else
link.href = @lookandfeel._event_url(:show, {:pointer => model.pointer})
end
end
link
end
end
Result
Note
