Develop and Download Open Source Software

Browse CVS Repository

Diff of /xoonips/AL/commonal.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.57 by youi, Thu Feb 3 12:04:58 2005 UTC revision 1.58 by youi, Tue Feb 8 06:40:51 2005 UTC
# Line 2  Line 2 
2   *   *
3   * $Revision$   * $Revision$
4   * $Log$   * $Log$
5     * Revision 1.58  2005/02/08 06:40:51  youi
6     * pubmedComplete:ジャーナルの完全なタイトルを取得してpubmed_tにセット.
7     *
8   * Revision 1.57  2005/02/03 12:04:58  youi   * Revision 1.57  2005/02/03 12:04:58  youi
9   * getOwnPublicItemIDを定義.   * getOwnPublicItemIDを定義.
10   * binder_item_linkのテーブル名を修正.   * binder_item_linkのテーブル名を修正.
# Line 285  static SQLHANDLE henv = NULL; Line 288  static SQLHANDLE henv = NULL;
288  static SQLHANDLE hdbc = NULL;  static SQLHANDLE hdbc = NULL;
289  static SQLHANDLE hstmt = NULL;  static SQLHANDLE hstmt = NULL;
290    
291    static bool processEsummary(xmlTextReaderPtr reader, pubmed_t* p);
292    static bool processEsearch(xmlTextReaderPtr reader, pubmed_t* p, int* DocID );
293  static void processEfetch(xmlTextReaderPtr reader, pubmed_t* p);  static void processEfetch(xmlTextReaderPtr reader, pubmed_t* p);
294  static int streamPubmedFile(const char *filename, pubmed_t* p);  static int streamPubmedFile(const char *filename, pubmed_t* p);
295  static result_t insertIndexInternal( sessionid_t sid, index_t *index, indexid_t *xid );  static result_t insertIndexInternal( sessionid_t sid, index_t *index, indexid_t *xid );
# Line 6040  static xmlChar* getChildText(xmlTextRead Line 6045  static xmlChar* getChildText(xmlTextRead
6045    
6046  static int streamPubmedFile(const char *filename, pubmed_t* p)  static int streamPubmedFile(const char *filename, pubmed_t* p)
6047  {  {
6048      xmlTextReaderPtr reader;      xmlTextReaderPtr reader = 0;
6049      int ret = 0;      int ret = 0;
6050        int DocID = 0;
6051            
6052      reader = xmlNewTextReaderFilename(filename);      reader = xmlNewTextReaderFilename(filename);
6053      if( reader != NULL ){      if( reader != NULL ){
# Line 6051  static int streamPubmedFile(const char * Line 6057  static int streamPubmedFile(const char *
6057              ret = xmlTextReaderRead(reader);              ret = xmlTextReaderRead(reader);
6058          }          }
6059          xmlFreeTextReader(reader);          xmlFreeTextReader(reader);
         if( ret != 0 ){  
             //printf("%s : failed to parse\n", filename);  
         }  
     }else{  
         //printf("Unable to open %s\n", filename);  
6060      }      }
6061      xmlErrorPtr err = xmlGetLastError();      xmlErrorPtr err = xmlGetLastError();
6062      if( err != NULL ){      if( err != NULL ){
6063          setLastErrorString( err -> message );          setLastErrorString( err -> message );
6064            return ret;
6065        }
6066        
6067        string url = PUBMED_ESEARCH_URL_BASE;
6068        const char* ptr = p -> getJournal( );
6069        while( *ptr != '\0' ){
6070            char buf[ 4 ];
6071            sprintf( buf, "%%%02X", ( unsigned char )*( ptr++ ) );
6072            url +=  buf;
6073        }
6074        
6075        reader = xmlNewTextReaderFilename(url.c_str());
6076        if( reader != NULL ){
6077            ret = xmlTextReaderRead(reader);
6078            while( ret == 1 ){
6079                if( processEsearch(reader, p, &DocID ) ) break;
6080                ret = xmlTextReaderRead(reader);
6081            }
6082            xmlFreeTextReader(reader);
6083        }
6084        err = xmlGetLastError();
6085        if( err != NULL ){
6086            setLastErrorString( err -> message );
6087            return ret;
6088        }
6089        fprintf( stderr, "\nDocID=%d", DocID );
6090        
6091        url = PUBMED_ESUMMARY_URL_BASE;
6092        url += intToString( DocID );
6093        fprintf( stderr, "\n%s", url.c_str() );
6094        reader = xmlNewTextReaderFilename(url.c_str());
6095        if( reader != NULL ){
6096            ret = xmlTextReaderRead(reader);
6097            while( ret == 1 ){
6098                if( processEsummary( reader, p ) ) break;
6099                ret = xmlTextReaderRead( reader );
6100            }
6101            xmlFreeTextReader(reader);
6102        }
6103        err = xmlGetLastError();
6104        if( err != NULL ){
6105            setLastErrorString( err -> message );
6106            return ret;
6107      }      }
6108        
6109      return ret;      return ret;
6110  }  }
6111    
# Line 6082  static void processEfetch(xmlTextReaderP Line 6127  static void processEfetch(xmlTextReaderP
6127                      //printf( "PMID=%s\n", value );                      //printf( "PMID=%s\n", value );
6128                      p -> setID( atoi( ( char* )value ) );                      p -> setID( atoi( ( char* )value ) );
6129                      xmlFree( value );                      xmlFree( value );
6130                                            value = NULL;
6131                  }                  }
6132              }              }
6133          }else if( strcmp( "ArticleTitle", ( char* )name ) == 0 ){          }else if( strcmp( "ArticleTitle", ( char* )name ) == 0 ){
# Line 6141  static void processEfetch(xmlTextReaderP Line 6187  static void processEfetch(xmlTextReaderP
6187      if( value != NULL) xmlFree(value);      if( value != NULL) xmlFree(value);
6188  }  }
6189    
6190  /*  /**
6191  void main( int argc, char* argv[] )   *
6192     * @return true DocIDを取得した.
6193     * @return false DocIDを取得出来なかった.パースの継続を請う.
6194     */
6195    static bool processEsearch(xmlTextReaderPtr reader, pubmed_t* p, int* DocID )
6196    {
6197        xmlChar* name = NULL;
6198        xmlChar* value = NULL;
6199        
6200        name = xmlTextReaderName(reader);
6201        if( name == NULL)
6202            name = xmlStrdup(BAD_CAST "--");
6203        value = xmlTextReaderValue(reader);
6204        
6205        if( xmlTextReaderNodeType(reader) == XML_READER_TYPE_ELEMENT ){
6206            if( strcmp( "Id", ( char* )name ) == 0 ){
6207                if( xmlTextReaderRead(reader) == 1 ){
6208                    if( xmlTextReaderNodeType( reader ) == XML_READER_TYPE_TEXT ){
6209                        xmlChar* value = xmlTextReaderValue( reader );
6210                        *DocID = atoi( ( char* )value );
6211                        xmlFree( value );
6212                                            value = NULL;
6213                        return true;
6214                    }
6215                }
6216            }
6217        }
6218        xmlFree(name);
6219        
6220        if( value != NULL) xmlFree(value);
6221        return false;
6222    }
6223    
6224    /**
6225     *
6226     * @return true Journal Titleを取得した.
6227     * @return false Journal Titleを取得出来なかった.パースの継続を請う.
6228     */
6229    static bool processEsummary(xmlTextReaderPtr reader, pubmed_t* p)
6230  {  {
6231      pubmed_t p;      xmlChar* name = NULL;
6232        xmlChar* value = NULL;
6233        bool ret = false;
6234        
6235        name = xmlTextReaderName(reader);
6236        if( name == NULL)
6237            name = xmlStrdup(BAD_CAST "--");
6238        value = xmlTextReaderValue(reader);
6239        
6240        if( xmlTextReaderNodeType(reader) == XML_READER_TYPE_ELEMENT ){
6241            if( strcmp( "Item", ( char* )name ) == 0 ){
6242                xmlChar* attr_val = xmlTextReaderGetAttribute( reader, ( xmlChar* )"Name" );
6243                if( attr_val != NULL ){
6244                    if( strcmp( "Title", ( char* )attr_val ) == 0 ){
6245                        if( xmlTextReaderRead(reader) == 1 ){
6246                            if( xmlTextReaderNodeType( reader ) == XML_READER_TYPE_TEXT ){
6247                                xmlChar* value = xmlTextReaderValue( reader );
6248                                p -> setJournal( ( char* )value );
6249                                xmlFree( value );
6250                                value = NULL;
6251                                ret = true;
6252                            }
6253                        }
6254                    }
6255                    xmlFree( attr_val );
6256                }
6257            }
6258        }
6259        xmlFree(name);
6260            
6261      printf( "result in %d\n", streamFile( argv[1], &p ) );      if( value != NULL) xmlFree(value);
6262      printf( "'%d'\n"      return ret;
             "'%s'\n"  
             "'%s'\n"  
             "'%s'\n"  
             "'%d'\n"  
             "'%d'\n"  
             "'%d'\n"  
             "'%s'\n"  
             "'%s'\n",  
             p.getID( ),  
             p.getTitle( ),  
             p.getAuthor( ),  
             p.getJournal( ),  
             p.getYearOfPublication( ),  
             p.getVolume( ),  
             p.getNumber( ),  
             p.getPage( ),  
             p.getAbstract( ) );  
6263  }  }
 */  
6264    
6265  static void processAsinSearch(xmlTextReaderPtr reader, amazonbook_t* p )  static void processAsinSearch(xmlTextReaderPtr reader, amazonbook_t* p )
6266  {  {
# Line 6554  result_t getOwnPublicItemID( sessionid_t Line 6648  result_t getOwnPublicItemID( sessionid_t
6648   *   *
6649   *   *
6650   */   */
6651  /*  extern "C" {int zip_main(int, char**);}
6652  result_t zipCreate( char* zippath, char** files, int filesLen )  result_t zipCreate( char* zippath, char** files, int filesLen )
6653  {  {
6654      char** argv = new char*[filesLen+1];      char** argv = new char*[filesLen+3];
6655      argv[ 0 ] = zippath;      argv[ 0 ] = NULL;
6656        argv[ 1 ] = "-o";
6657        argv[ 2 ] = zippath;
6658      for( int i = 0; i < filesLen; i++ ){      for( int i = 0; i < filesLen; i++ ){
6659          argv[ i + 1 ] = files[ i ];          argv[ i + 3 ] = files[ i ];
6660      }      }
6661          if( !zip_main( argc, argv ) ){          if( !zip_main( filesLen + 3, argv ) ){
6662            delete[] argv;
6663          return RES_OK;          return RES_OK;
6664      }      }
6665        delete[] argv;
6666      return RES_ERROR;      return RES_ERROR;
6667  }  }
 */  

Legend:
Removed from v.1.57  
changed lines
  Added in v.1.58

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26