Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

importz3950view.ui.h

Go to the documentation of this file.
00001 /****************************************************************************
00002 ** ui.h extension file, included from the uic-generated form implementation.
00003 **
00004 ** If you wish to add, delete or rename functions or slots use
00005 ** Qt Designer which will update this file, preserving your code. Create an
00006 ** init() function in place of a constructor, and a destroy() function in
00007 ** place of a destructor.
00008 *****************************************************************************/
00009 
00010 #include "marcparser.h"
00011 
00012 void ImportZ3950View::init() {
00013   count=0;
00014 }
00015 
00016 QString ImportZ3950View::lookupToken(QString s, int i)  {
00017     return dict[s+"_"+QString().setNum(i)];
00018 }
00019 
00020 void ImportZ3950View::startSearch() {
00021     dict.clear();    
00022     ZOOM_connection c = ZOOM_connection_new (server->text(), 0);
00023 
00024     const char *cp, *addinfo;
00025     if(ZOOM_connection_error (c, &cp, &addinfo)) {
00026         printf("Error: %s - %s\n", cp, addinfo);
00027         return;
00028     }
00029 
00030     ZOOM_connection_option_set(c, "preferredRecordSyntax", "XML");
00031 
00032     ZOOM_query q=ZOOM_query_create();
00033     
00034 /*
00035  Bib1
00036 Semantics  
00037 Personal Name   1  
00038 Title           4
00039 Author-title    1000
00040 Name            1002
00041 Author          1003
00042 Any             1016
00043 Anywhere                1035
00044 
00045 less than       1
00046 less than or equal      2
00047 equal           3
00048 greater or equal        4
00049 greater than    5
00050 not equal       6
00051 phonetic                100
00052 stem            101 
00053 relevance       102
00054 AlwaysMatches   103
00055  
00056 
00057 Bib-1 Position Attributes 
00058 first in field  1
00059 first in subfield       2
00060 any position    3  
00061   
00062 */
00063     QString query; 
00064     if(!term2->text().isEmpty())
00065       if(op1->currentItem()==0) query+="@and "; else query+="@or ";
00066     if(!term3->text().isEmpty())  {
00067        if(op2->currentItem()==0) query+="@and "; else query+="@or ";
00068        if(field3->currentItem()==0) query+="@attr 1=4 "; else query+="@attr 1=1 ";    
00069        query+="\""+term3->text()+"\" ";
00070     }  
00071     
00072     if(!term2->text().isEmpty())  {    
00073       if(field2->currentItem()==0) query+="@attr 1=4 "; else query+="@attr 1=1 ";
00074       query+="\""+term2->text()+"\" ";    
00075     }
00076     
00077     if(field1->currentItem()==0) query+="@attr 1=4 "; else query+="@attr 1=1 ";        
00078     query+="\""+term1->text()+"\" ";    
00079     
00080     printf("\nQuery ist: %s", (const char*) query);
00081     ZOOM_query_prefix(q, query);
00082     ZOOM_resultset s=ZOOM_connection_search(c, q);
00083     count=ZOOM_resultset_size(s);
00084     if(count>20) count=20;
00085     printf("Retrieved %i records\n", count);
00086 
00087     size_t i;
00088     int len;
00089     for(i=0; i<count; i++) {
00090         printf("\nneuer Datensatz");
00091         ZOOM_record r=ZOOM_resultset_record (s, i);
00092         printf("\ndatabase %s",  ZOOM_record_get (r, "database", &len));
00093         printf("\nsyntax %s",  ZOOM_record_get (r, "syntax", &len));
00094         printf("\nrender %s",  ZOOM_record_get (r, "render", &len));
00095 
00096         QString s=ZOOM_record_get(r, "render", &len);
00097 
00098         MARCParser handler(i, &dict);
00099                 QXmlInputSource source;
00100         source.setData(s);
00101                 QXmlSimpleReader reader;
00102                 reader.setContentHandler( &handler );
00103                 reader.parse( source );
00104     }
00105     
00106     QMemArray<int> rows(result->numRows());
00107     for(i=0; i<result->numRows(); i++) 
00108       rows[i]=i;
00109     result->removeRows(rows);
00110 
00111     for(i=0; i<count; i++) {
00112         int j=0;
00113         QString rec;
00114         
00115         while(!lookupToken("lastname"+QString().setNum(j), i).isEmpty()) {
00116                 rec+=lookupToken("lastname"+QString().setNum(j), i);
00117                 rec+=", ";
00118                 rec+=lookupToken("firstname"+QString().setNum(j), i);
00119                 rec+=" and ";
00120                 j++;
00121         }
00122         
00123         if(rec.isEmpty()) rec="Unknown author";
00124         else rec=rec.left(rec.length()-4);
00125         
00126         printf("lookupToken: %s", (const char*)  lookupToken("lastname"+QString().setNum(10), i))       ;
00127         if(!lookupToken("year", i).isEmpty())
00128           rec+=", "+lookupToken("year", i);
00129         rec+=":"+lookupToken("title", i)+". ";
00130         
00131         if(!lookupToken("journal", i).isEmpty()) {
00132             rec+=" in:"+lookupToken("journal", i)+" ";
00133             rec+=lookupToken("volume", i);
00134             if(!lookupToken("volume", i).isEmpty() && !lookupToken("number", i).isEmpty())
00135                rec+="/";
00136             rec+=lookupToken("number", i);
00137         }
00138         
00139         if(!lookupToken("address", i).isEmpty())
00140            rec+=lookupToken("address", i)+".";
00141 
00142         result->insertRows(i);
00143         result->setText(i, 1, rec);
00144         result->setItem(i, 0, new QCheckTableItem(result, ""));
00145     }
00146     result->adjustColumn(0);
00147     result->adjustColumn(1);    
00148   
00149     ZOOM_query_destroy(q);
00150     ZOOM_resultset_destroy(s);
00151     ZOOM_connection_destroy (c);    
00152 }
00153 
00154 QMap<QString, QString> ImportZ3950View::getDict() {
00155     return dict;
00156 }
00157 
00158 
00159 int ImportZ3950View::recCount() {
00160     return count;
00161 }

Generated on Sat Mar 27 19:20:39 2004 for Literature by doxygen 1.3.6-20040222