# File app/controllers/metarep_controller.rb, line 288
  def search
    @databaseName = Database.find_first.currentDatabaseName
    #This function will create arrays containing all records of schemas, columns, and tables that
    # satisfy the LIKE condition with the search term.
    if request.post?
    session[:search_term] = params[:post][:search_term].strip               #Get the search term
    if session[:contextobject] == 'Column' or !session[:contextobject]
      session[:contextobject] = 'Database'
      session[:contextid] = Database.find_by_database_nm(@databaseName).id
    end
    if session[:contextobject] == "Report" or session[:contextobject] == "ReportFolder"
    session[:contextobject] = "ReportFolder"
    session[:contextid] = ReportFolder.find_by_report_folder_nm('Reports').id
    end
    @search = Search.new(:search_term => session[:search_term], 
      :context_object_type => session[:contextobject], :context_object_id => session[:contextid])
    @search.search_date = Time.now
    @search.user_id = session[:user_id]
    @search.save
    end
    add_to_sortable_columns('listing', :model => DwObject, :field => 'objectTitle', :alias => 'objectTitle') 
    add_to_sortable_columns('listing', :model => DwObject, :field => 'objectType', :alias => 'objectType') 
    add_to_sortable_columns('listing', :model => DwObject, :field => 'path', :alias => 'path')
    
    #This is the part that does the searchy magic
    unless session[:contextobject] == "Report" or session[:contextobject] == "ReportFolder"
    @dw_object_pages, @dw_objects = paginate :dw_objects, :per_page => 10, :order => sortable_order('listing', 
       :model => DwObject, 
       :field => 'path',
       :sort_direction => :asc),
         :conditions => "((cast(objectDesc as varchar(1000)) like 
    '%" + session[:search_term] + "%' or cast(objectTitle as varchar(1000)) like '%" + 
      session[:search_term] + "%')) and path is not null" + context_condition(session[:contextobject], session[:contextid]).to_s
    else
    @dw_object_pages, @dw_objects = paginate :dw_objects, :per_page => 10, :order => sortable_order('listing', 
       :model => DwObject, 
       :field => 'objectTitle',
       :sort_direction => :asc),
         :conditions => "objectType = 'Report' and (cast(objectDesc as varchar(1000)) like 
    '%" + session[:search_term] + "%' or cast(objectTitle as varchar(1000)) like '%" + 
      session[:search_term] + "%')"
     @dw_objects.each { |r| r.path = Report.find(r.dw_object_id).path }
    end
    @count = @dw_object_pages.item_count
  render :layout => 'simple'
  end