class WebController < ApplicationController
include RJBM::JAccess
j_import('mx.org.pescador.krcontroller.KRController',
'mx.org.pescador.krmodel.KRModel',
'mx.org.pescador.krview.baseviewelements.BaseViewElementType',
'mx.org.pescador.krview.ViewObjManager')
# add here any model declarations needed
# here is another really awful hack
NIL_OBJ_STR = "nil_obj"
#INITIAL_SOC_LOCAL_URI_PART = "main_level_socs"
#INITIAL_SOC = "soc_photographic_prints_23"
#INITIAL_SOC_ABBREV = "rep"
RESPONSE_DELAY = 0
def ui
end
def catalogo
end
# TODO: controlar por errores o ausencia en los parámetros de la solicitud HTTP
def new_ordered_desc_list
abbrev = params['abbrev']
abbrev ||= initial_soc_abbrev
local_part = params['local_part']
local_part ||= initial_soc_local_uri_part
order = params['order']
add_fields = params['add_fields']
add_fields = add_fields.split(",") if (add_fields)
remove_fields = params['remove_fields']
remove_fields = remove_fields.split(",") if (remove_fields)
env = KRModel.testDescEnv
if (order)
request = KRController.newOrderedDescListRequest(abbrev, local_part, env, order, add_fields, remove_fields)
else
request = KRController.newOrderedDescListRequest(abbrev, local_part, env, add_fields, remove_fields)
end
ordered_list_response = KRController.submit(request)
if(ordered_list_response.message.isOK)
list = ordered_list_response.viewObjs[0]
list_id = ViewObjManager.add(list)
title_desc = ordered_list_response.viewObjs[1]
@base_view_el_type = BaseViewElementType
base_image_url = list.tmpListImageURLBase
img = KRLogic::ImgFileManager.get(base_image_url)
has_img = !(img == nil)
title_desc_linking_html = render_to_string(:partial => "title_desc",
:locals => { :desc => title_desc,
:for_list => title_desc.dObj.isRepOrgGroup,
:for_col_level => false,
:base_image_url => base_image_url,
:has_img => has_img,
:abbrev => abbrev,
:img => img,
:local_uri_part => local_part })
summary = list.serializedSummary || NIL_OBJ_STR
sObj = serialize_string_array([ list_id,
list.size.to_s,
list.singularTypeStr,
list.orderOptStr.downcase,
list.listTitle,
list.isListOfCollections.to_s,
abbrev,
local_part,
list.serializedOrderByTextBPVs,
title_desc_linking_html,
summary,
list.serializedOrderOpts,
list.serializedGroupingOpts,
list.serializedFieldOpts,
"false" ])
# CustomLogger.info(sObj)
sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0)
render(:text => sObj)
else
# deal with no OK message
end
end
# *****************************************VV
def new_ordered_search_results
query = params['q']
order = params['order']
add_fields = params['add_fields']
add_fields = add_fields.split(",") if (add_fields)
remove_fields = params['remove_fields']
remove_fields = remove_fields.split(",") if (remove_fields)
env = KRModel.testDescEnv
if (order)
request = KRController.newOrderedSearchResultRequest(query, env, order, add_fields, remove_fields)
else
request = KRController.newOrderedSearchResultRequest(query, env, add_fields, remove_fields)
end
ordered_list_response = KRController.submit(request)
if(ordered_list_response.message.isOK)
list = ordered_list_response.viewObjs[0]
list_id = ViewObjManager.add(list)
title_desc_linking_html = render_to_string(:partial => "search_title_desc",
:locals => { :query => query,
:size => list.size})
# title_desc_linking_html = "Búsqueda por " + query + "
" +
# list.size.to_s + " resultado" + (list.size > 1 ? "s" : "") +
# "::0"
# title_desc = ordered_list_response.viewObjs[1]
# @base_view_el_type = BaseViewElementType
# title_desc_linking_html = render_to_string(:partial => "title_desc",
# :locals => { :desc => title_desc,
# :for_list => title_desc.dObj.isRepOrgGroup,
# :for_col_level => false,
# :base_image_url => nil,
# :has_img => false,
# :abbrev => abbrev,
# :local_uri_part => local_part })
sObj = serialize_string_array([ list_id,
list.size.to_s,
list.singularTypeStr,
list.orderOptStr.downcase,
list.listTitle,
list.isListOfCollections.to_s,
NIL_OBJ_STR,
NIL_OBJ_STR,
list.serializedOrderByTextBPVs,
title_desc_linking_html,
NIL_OBJ_STR,
list.serializedOrderOpts,
list.serializedGroupingOpts,
list.serializedFieldOpts,
"false" ])
sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0)
render(:text => sObj)
else
# deal with no OK message
end
end
# *****************************************^^
def new_grouping_structure
abbrev = params['abbrev']
abbrev ||= initial_soc_abbrev
local_part = params['local_part']
local_part ||= initial_soc_local_uri_part
group = params['group']
order = params['order']
add_fields = params['add_fields']
add_fields = add_fields.split(",") if (add_fields)
remove_fields = params['remove_fields']
remove_fields = remove_fields.split(",") if (remove_fields)
env = KRModel.testDescEnv
request = KRController.newGroupingStructureRequest(abbrev, local_part, env, group, order, add_fields, remove_fields)
g_struct_response = KRController.submit(request)
if(g_struct_response.message.isOK)
g_struct = g_struct_response.viewObjs[0]
g_struct_id = ViewObjManager.add(g_struct)
title_desc = g_struct_response.viewObjs[1]
@base_view_el_type = BaseViewElementType
title_desc_linking_html = render_to_string(:partial => "title_desc",
:locals => { :desc => title_desc,
:for_list => title_desc.dObj.isRepOrgGroup,
:for_col_level => false,
:base_image_url => nil,
:has_img => false,
:abbrev => abbrev,
:local_uri_part => local_part })
sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0)
render(:text => serialize_string_array([ g_struct_id,
g_struct.size.to_s,
g_struct.singularTypeStr,
g_struct.orderOptStr.downcase,
g_struct.listTitle,
g_struct.isListOfCollections.to_s,
abbrev,
local_part,
NIL_OBJ_STR,
title_desc_linking_html,
NIL_OBJ_STR,
g_struct.serializedOrderOpts,
g_struct.serializedGroupingOpts,
g_struct.serializedFieldOpts,
"true",
g_struct.groupingTitle,
g_struct.serializedGroupsAsOpts ]))
else
# deal with no OK message
end
end
def new_search_results_grouping_structure
query = params['q']
group = params['group']
order = params['order']
add_fields = params['add_fields']
add_fields = add_fields.split(",") if (add_fields)
remove_fields = params['remove_fields']
remove_fields = remove_fields.split(",") if (remove_fields)
env = KRModel.testDescEnv
request = KRController.newSearchResultGrpngStructRequest(query, env, group, order, add_fields, remove_fields)
s_g_struct_response = KRController.submit(request)
if(s_g_struct_response.message.isOK)
s_g_struct = s_g_struct_response.viewObjs[0]
s_g_struct_id = ViewObjManager.add(s_g_struct)
@base_view_el_type = BaseViewElementType
#title_desc = g_struct_response.viewObjs[1]
#title_desc_linking_html = render_to_string(:partial => "title_desc",
# :locals => { :desc => title_desc,
# :for_list => title_desc.dObj.isRepOrgGroup,
# :for_col_level => false,
# :base_image_url => nil,
# :has_img => false,
# :abbrev => abbrev,
# :local_uri_part => local_part })
# title_desc_linking_html = "Búsqueda por " + query + "
" +
# s_g_struct.size.to_s + " resultado" + (s_g_struct.size > 1 ? "s" : "") +
# "::0"
title_desc_linking_html = render_to_string(:partial => "search_title_desc",
:locals => { :query => query,
:size => s_g_struct.size})
sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0)
render(:text => serialize_string_array([ s_g_struct_id,
s_g_struct.size.to_s,
NIL_OBJ_STR,
s_g_struct.orderOptStr.downcase,
s_g_struct.listTitle,
s_g_struct.isListOfCollections.to_s,
NIL_OBJ_STR,
NIL_OBJ_STR,
NIL_OBJ_STR,
title_desc_linking_html,
NIL_OBJ_STR,
s_g_struct.serializedOrderOpts,
s_g_struct.serializedGroupingOpts,
s_g_struct.serializedFieldOpts,
"true",
s_g_struct.groupingTitle,
s_g_struct.serializedGroupsAsOpts ]))
else
# deal with no OK message
end
end
def new_union_of_groups_list
list_id = params['list_id']
group_ids = params['groups'].split(",")
group_ids.map! { |s| s.to_i }
env = KRModel.testDescEnv
g_struct = ViewObjManager.get(list_id)
sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0)
if (g_struct != nil)
u_of_g_list = g_struct.unionOfGroupsList(group_ids)
u_of_g_list_id = ViewObjManager.add(u_of_g_list)
render(:text => serialize_string_array([ u_of_g_list_id,
u_of_g_list.size.to_s,
u_of_g_list.singularTypeStr,
u_of_g_list.orderOptStr.downcase,
u_of_g_list.listTitle,
u_of_g_list.isListOfCollections.to_s,
NIL_OBJ_STR,
NIL_OBJ_STR,
u_of_g_list.serializedOrderByTextBPVs ]))
else
render(:text => NIL_OBJ_STR)
end
end
def set_order_of_u_of_g_elements
list_id = params['list_id']
order = params['order']
env = KRModel.testDescEnv
g_struct = ViewObjManager.get(list_id)
if (g_struct != nil)
KRController.setOrderBy(g_struct, order)
sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0)
render(:text => serialize_string_array([ g_struct.serializedFieldOpts ]))
else
render(:text => NIL_OBJ_STR)
end
end
def full_desc
# Note: lots of ugly, ugly hacks follow
list_id = params['list_id']
el_num = params['el'].to_i
@env = KRModel.testDescEnv
@list = ViewObjManager.get(list_id)
@kr_model = KRModel
if (@list != nil)
abbrev = @list.elAbbrev(el_num)
local_part = @list.elLocalURIPart(el_num)
request = KRController.newFullDescRequest(abbrev, local_part, @list, @env)
test_response = KRController.submit(request)
@desc = test_response.viewObjs()[0]
@base_view_el_type = BaseViewElementType
@base_image_url = @list.tmpImageURLBase(el_num)
@title_desc = test_response.viewObjs()[1]
sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0)
render(:layout => false)
else
render(:text => NIL_OBJ_STR)
end
end
# used when we request a desc obj without getting there from a list
# in that case, even though we haven't been to the list yet, we need to be
# able to show the user info about the object's location in the list
def full_desc_and_list_info
abbrev = params['abbrev']
local_part = params['local_part']
order = params['order']
@env = KRModel.testDescEnv
@kr_model = KRModel
if (order)
soc_list_request = KRController.newSOCListContainingNodeRequest(abbrev, local_part, @env, order)
else
soc_list_request = KRController.newSOCListContainingNodeRequest(abbrev, local_part, @env)
end
soc_list_response = KRController.submit(soc_list_request)
if(soc_list_response.message.isOK)
list = soc_list_response.viewObjs[0]
list_id = ViewObjManager.add(list)
listable_d_obj = list.listableDescObj
listable_d_obj_abbrev = listable_d_obj.inGraphPart.abbrev
listable_d_obj_local_part = listable_d_obj.localURIPart
summary = list.serializedSummary || NIL_OBJ_STR
ser_list_info = serialize_string_array([ list_id,
list.size.to_s,
list.singularTypeStr,
list.orderOptStr.downcase,
list.listTitle.to_s,
list.isListOfCollections,
listable_d_obj_abbrev,
listable_d_obj_local_part,
NIL_OBJ_STR,
NIL_OBJ_STR,
summary,
list.serializedOrderOpts,
list.serializedGroupingOpts,
list.serializedFieldOpts,
"false" ])
el_num = soc_list_response.viewObjs[1].val
full_desc_request = KRController.newFullDescRequest(abbrev, local_part, list, @env)
full_desc_response = KRController.submit(full_desc_request)
@desc = full_desc_response.viewObjs()[0]
@base_view_el_type = BaseViewElementType
@base_image_url = list.tmpImageURLBase(el_num)
@title_desc = full_desc_response.viewObjs()[1]
ser_full_desc = render_to_string(:action => "full_desc", :layout => false)
full_desc_and_list_info = serialize_string_array([ ser_list_info,
el_num.to_s,
ser_full_desc ])
sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0)
render(:text => full_desc_and_list_info)
else
# deal with no OK message
end
# ...
end
def desc_list_page
page = params['page'].to_i
list_id = params['list_id']
@list = ViewObjManager.get(list_id)
if (@list != nil)
@descriptions = @list.pageOfDescriptions(page)
@base_view_el_type = BaseViewElementType
@init_el_num = @list.initElement(page)
sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0)
render(:layout => false)
else
render(:text => NIL_OBJ_STR)
end
end
def add_field
list_id = params['list_id']
field_id = params['field']
list = ViewObjManager.get(list_id)
if (list != nil)
list.addField(field_id)
sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0)
render(:text => "1")
else
render(:text => NIL_OBJ_STR)
end
end
def remove_field
list_id = params['list_id']
field_id = params['field']
list = ViewObjManager.get(list_id)
if (list != nil)
list.removeField(field_id)
sleep(RESPONSE_DELAY) if (RESPONSE_DELAY != 0)
render(:text => "1")
else
render(:text => NIL_OBJ_STR)
end
end
private
def serialize_string_array(array)
array.join("::")
end
def initial_soc_local_uri_part
KRModel.archivalRoot.localURIPart
end
def initial_soc_abbrev
KRModel.archivalRoot.inGraphPart.abbrev
end
end