Changeset 24959

Show
Ignore:
Timestamp:
20.01.2012 20:48:26 (8 years ago)
Author:
ak19
Message:

Second commit to do with Greenstone's support for RSS. Has been tested on Linux, and works if zextra.dm and base.dm are setup properly and if the rss-items.rdf file generated by the update to BasePlugout? is moved to the index folder. Modified Dr Bainbridge's code to make the way that rssaction.cpp accesses the rss-items.rdf file independent of where the GS server is located, by adding a new method to get the rss-items.rdf file's contents to the recptproto protocol class and implementing it in nullproto. The method is also mirrored in corba/corbaproto, however compilation with corba fails in a part of the code that I've not modified.

Location:
main/trunk/greenstone2/runtime-src/src
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/runtime-src/src/corba/corbaServer.mpp

    r15459 r24959  
    397397  } 
    398398 
     399  void getRssItems (const struct corbatext_t &corbaCollect, 
     400          const struct corbatext_t &corbaGsdlHome, 
     401          const struct corbatext_t &corbaRssItems, 
     402          enum corbaComError &corbaError) 
     403  {    
     404    text_t collection; 
     405    text_t gsdlhome; 
     406    text_t rss_items; 
     407    comerror_t error = noError; 
     408    ofstream logout; 
     409 
     410    this->openLogfile("/etc/corbaout.txt", logout); 
     411 
     412    corbaconv_text_t::setCorbatext(collection,corbaCollect); 
     413    corbaconv_text_t::setCorbatext(gsdlhome,corbaGsdlHome); 
     414 
     415    // do actual operation 
     416    protocol->get_rss_items(collection, gsdlhome, rss_items, error, logout); 
     417    corbaconv_text_t::getCorbatext(rss_items,corbaRssItems); 
     418 
     419    // decode response 
     420    corbaError = (corbaComError) error; 
     421 
     422    logout.close(); 
     423  } 
     424 
    399425  void collectionList(corbatext_tarray &corbalist, corbaComError &error) 
    400426  { 
  • main/trunk/greenstone2/runtime-src/src/corba/corbaproto.h

    r15471 r24959  
    8686              InfoFilterOptionsResponse_t &response,  
    8787              comerror_t &err, ostream &logout); 
     88 
     89  // returns the contents of a collection's rss-items.rdf file (generated by BasePlugout) 
     90  void get_rss_items (const text_t &collection,  
     91              const text_t &gsdlhome,  
     92              text_t &rss_items,  
     93              comerror_t &err,  
     94              ostream &logout); 
     95 
    8896  void filter (const text_t &collection, 
    8997           FilterRequest_t &request, 
  • main/trunk/greenstone2/runtime-src/src/corba/corbaproto.mpp

    r15471 r24959  
    673673} 
    674674 
     675// returns the contents of a collection's rss-items.rdf file (generated by BasePlugout) 
     676void corbaproto::get_rss_items (const text_t &collection,  
     677                const text_t &gsdlhome,  
     678                text_t &rss_items,  
     679                comerror_t &err,  
     680                ostream &logout) { 
     681 
     682  corbatext_t     corbaCollection; 
     683  corbatext_t     corbaGsdlHome; 
     684  corbatext_t     corbaRssItems; 
     685  corbaComError   corbaError = corbaNoError; 
     686 
     687  // convert all the requisite structures into their CORBA form 
     688  corbaconv_text_t::getCorbatext(collection,corbaCollection); 
     689  corbaconv_text_t::getCorbatext(collection,corbaGsdlHome); 
     690  corbaconv_text_t::getCorbatext(collection,corbaRssItems); 
     691 
     692  // get the corba client reference 
     693  // corbaiface_var lclient = this->getCorbaClient(); // **** 
     694  corbaiface_var lclient = client; 
     695 
     696  // execute the corba transaction 
     697  lclient->get_rss_items (corbaCollection, corbaGsdlHome, corbaRssItems, corbaError); 
     698 
     699  // convert the response back to normal form 
     700  rss_items = corbaRssItems; 
     701 
     702  //  text_t rss_filename = filename_cat(gsdlhome,"collect",collection,"index","rss-items.rdf"); 
     703  //if (!read_file(rss_filename,rss_items)) { // read contents of file rss_filename into the string rss_items 
     704  //  err = protocolError; // else an error occurred 
     705  //} 
     706} 
    675707 
    676708void corbaproto::filter (const text_t &collection, 
  • main/trunk/greenstone2/runtime-src/src/protocol/nullproto.cpp

    r20821 r24959  
    3030#include "browsefilter.h" 
    3131 
     32#include "fileutil.h" 
     33// for read_file 
    3234 
    3335nullproto::nullproto() { 
     
    134136} 
    135137 
     138// returns the contents of a collection's rss-items.rdf file (generated by BasePlugout) 
     139void nullproto::get_rss_items (const text_t &collection,  
     140                const text_t &gsdlhome,  
     141                text_t &rss_items,  
     142                comerror_t &err,  
     143                ostream &logout) { 
     144 
     145  text_t rss_filename = filename_cat(gsdlhome,"collect",collection,"index","rss-items.rdf"); 
     146  // read contents of file rss_filename into the string rss_items 
     147  if (read_file(rss_filename,rss_items)) {  
     148    err = noError; 
     149  } else { 
     150    err = protocolError; 
     151  } 
     152} 
     153 
    136154void nullproto::filter (const text_t &collection, 
    137155            FilterRequest_t &request, 
  • main/trunk/greenstone2/runtime-src/src/protocol/nullproto.h

    r16310 r24959  
    8181              InfoFilterOptionsResponse_t &response,  
    8282              comerror_t &err, ostream &logout); 
     83 
     84  // returns the contents of a collection's rss-items.rdf file (generated by BasePlugout) 
     85  void get_rss_items (const text_t &collection,  
     86              const text_t &gsdlhome,  
     87              text_t &rss_items,  
     88              comerror_t &err,  
     89              ostream &logout); 
     90 
    8391  void filter (const text_t &collection, 
    8492           FilterRequest_t &request, 
  • main/trunk/greenstone2/runtime-src/src/protocol/recptproto.cpp

    r16310 r24959  
    113113} 
    114114 
     115// returns the contents of a collection's rss-items.rdf file (generated by BasePlugout) 
     116void recptproto::get_rss_items (const text_t &/*collection*/, 
     117                const text_t &/*gsdlhome*/, 
     118                text_t &/*rss_items*/, 
     119                comerror_t &err, 
     120                ostream &/*logout*/) { 
     121  err = protocolError; 
     122} 
     123 
    115124// filters (search or browse) a result set 
    116125void recptproto::filter (const text_t &/*collection*/, 
  • main/trunk/greenstone2/runtime-src/src/protocol/recptproto.h

    r22142 r24959  
    116116                  InfoFilterOptionsResponse_t &response,  
    117117                  comerror_t &err, ostream &logout); 
     118 
     119  // returns the contents of a collection's rss-items.rdf file (generated by BasePlugout) 
     120  virtual void get_rss_items (const text_t &collection, 
     121                  const text_t &gsdlhome, 
     122                  text_t &rss_items, 
     123                  comerror_t &err, 
     124                  ostream &logout); 
    118125 
    119126  // filters (search or browse) a result set and returns information 
  • main/trunk/greenstone2/runtime-src/src/recpt/rssaction.cpp

    r24958 r24959  
    8484} 
    8585 
    86 void rssaction::generate_rss_content(text_t& rss_filename, displayclass &disp,  
     86void rssaction::generate_rss_content(text_t& rss_items, displayclass &disp,  
    8787                     outconvertclass &outconvert, ostream &textout,  
    8888                     ostream &logout) 
    8989{ 
    90   text_t rss_items; 
    91  
    92   if (read_file(rss_filename,rss_items)) { 
    93     textout << outconvert << disp << rss_items; 
    94   } 
    95  
    96  
     90  textout << outconvert << disp << rss_items; 
    9791} 
    9892 
     
    108102 
    109103 
    110  
    111  
    112104bool rssaction::do_action (cgiargsclass &args, recptprotolistclass *protos,  
    113105                browsermapclass * /*browsers*/, displayclass& disp,  
    114106                outconvertclass &outconvert, ostream &textout,  
    115107                ostream &logout) { 
    116   //bool wassuccess = false; 
    117   //comerror_t err; 
    118   
     108  text_t rss_items; 
     109  bool success = false; 
     110  comerror_t err;  
    119111 
    120   /* 
    121   recptproto *collectproto = protos->getrecptproto (args["c"], logout); 
    122   if (!args["c"].empty() && (collectproto != NULL)) { 
    123     collectproto->ping (args["c"], wassuccess, err, logout); 
    124     if (err != noError) wassuccess = false; // a communication error 
     112  text_t &arg_c = args["c"]; 
     113 
     114 
     115  if (!args["c"].empty()) { 
     116    recptproto* collectproto = protos->getrecptproto (arg_c, logout);     
     117    if (collectproto != NULL) { 
     118      collectproto->get_rss_items (arg_c, gsdlhome, rss_items, err, logout); 
     119      if (err == noError) success = true;  
     120      // else a communication error     
     121    } 
    125122  } 
    126   */ 
    127  
    128   text_t rss_filename = filename_cat(gsdlhome,"collect",args["c"],"index","rss-items.rdf"); 
    129123 
    130124  generate_rss_header(disp,outconvert,textout,logout); 
    131   generate_rss_content(rss_filename,disp,outconvert,textout,logout); 
     125  if(success) { 
     126    generate_rss_content(rss_items,disp,outconvert,textout,logout); 
     127  } 
    132128  generate_rss_footer(disp,outconvert,textout,logout); 
    133129 
    134   return true; 
     130  return success; 
    135131}; 
    136132 
  • main/trunk/greenstone2/runtime-src/src/recpt/rssaction.h

    r24958 r24959  
    5454               outconvertclass &outconvert, ostream &textout,  
    5555               ostream &logout); 
    56   void generate_rss_content(text_t& rss_filename, displayclass &disp,  
     56  void generate_rss_content(text_t& rss_items, displayclass &disp,  
    5757          outconvertclass &outconvert, ostream &textout,  
    5858          ostream &logout);