1 package org.kuali.ole.externalds; 2 3 4 /*import net.sf.jz3950.Association; 5 import net.sf.jz3950.RecordResultSet; 6 import net.sf.jz3950.query.PrefixQuery;*/ 7 import org.apache.log4j.Logger; 8 import org.kuali.ole.docstore.common.search.SearchParams; 9 10 import java.util.ArrayList; 11 import java.util.List; 12 13 public class Z3950DataSource 14 extends AbstractExternalDataSource { 15 16 /* private static final Logger LOG = Logger.getLogger(Z3950DataSource.class); 17 private static final int RESULT_SET_ITERATION_LIMIT = 80; 18 19 20 @Override 21 public List<String> searchForBibs(SearchParams searchParams, DataSourceConfig dataSourceConfigInfo) 22 throws Exception { 23 24 Association association = new Association(); 25 String domainName = dataSourceConfigInfo.getDomainName(); 26 String port = dataSourceConfigInfo.getPortNum(); 27 String loginIdDbName = dataSourceConfigInfo.getLoginId(); 28 String logInId = ""; 29 String dataBase ="" ; 30 if(loginIdDbName != null && !loginIdDbName.trim().equals("")) { 31 String[] parts = loginIdDbName.split("/"); 32 if(parts.length==2){ 33 dataBase = parts[1]; 34 logInId = parts[0]; 35 } else { 36 dataBase = parts[0]; 37 } 38 39 } 40 List<String> dataBaseList = new ArrayList<String>(); 41 List<String> results=new ArrayList<String>() ; 42 dataBaseList.add(dataBase); 43 String password = dataSourceConfigInfo.getPassword(); 44 String authKey =dataSourceConfigInfo.getAuthKey(); 45 LOG.info("Connecting to external datasource: domainName = " + dataSourceConfigInfo.getDomainName() +" portNumber = "+dataSourceConfigInfo.getPortNum()); 46 if(logInId != null && !logInId.trim().equals("") && password != null && ! password.trim().equals("")){ 47 association.connect(domainName.trim(), Integer.parseInt(port.trim()),logInId.trim(), password.trim()); 48 } else{ 49 association.connect(domainName, Integer.parseInt(port)); 50 } 51 //String query="@attrset bib-1 @attr 1=4 \"advanced java\""; 52 Z3950QueryBuilder z3950QueryBuilde = new Z3950QueryBuilder(); 53 String query = z3950QueryBuilde.buildQuery(searchParams); 54 LOG.info("Z39.50 Query:" + query); 55 results = iterateOverPartOfResultSet(association.search(new PrefixQuery(dataBaseList, query))); 56 LOG.info("Z39.50 Query results size: " + results.size()); 57 association.disconnect(); 58 return results; 59 } 60 private List iterateOverPartOfResultSet(RecordResultSet resultSet) { 61 List<String> results = new ArrayList<String>(); 62 LOG.info(("Iterating over maximum of " + RESULT_SET_ITERATION_LIMIT + " record(s) from " 63 + resultSet.getTotalResults() + " record(s) in total")); 64 int recordCount = 0; 65 try{ 66 while(resultSet.hasNext()){ 67 net.sf.jz3950.record.Record record = resultSet.next(); 68 String tempdata = record.getData() ; 69 results.add(tempdata); 70 if (++recordCount == RESULT_SET_ITERATION_LIMIT) { 71 break; 72 } 73 } 74 } catch(Exception ex){ 75 LOG.error(ex.getMessage()); 76 ex.printStackTrace(); 77 } 78 79 return results; 80 }*/ 81 }