diff --git a/utilities/testrunner/selenium/how-to-create-firefox-profile.txt b/utilities/testrunner/selenium/how-to-create-firefox-profile.txt index 0c5af1d1d..03007d63f 100644 --- a/utilities/testrunner/selenium/how-to-create-firefox-profile.txt +++ b/utilities/testrunner/selenium/how-to-create-firefox-profile.txt @@ -1,3 +1,3 @@ -Here is an excellent description of how to create a Firefox profile for use when running Selenium tests. - +Here is an excellent description of how to create a Firefox profile for use when running Selenium tests. + http://girliemangalo.wordpress.com/2009/02/05/creating-firefox-profile-for-your-selenium-rc-tests/ \ No newline at end of file diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/fields/IndividualsViaSolrQueryOptions.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/fields/IndividualsViaSolrQueryOptions.java new file mode 100644 index 000000000..fc9527297 --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/fields/IndividualsViaSolrQueryOptions.java @@ -0,0 +1,124 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ +package edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.ServletContext; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.solr.client.solrj.SolrQuery; +import org.apache.solr.client.solrj.SolrServer; +import org.apache.solr.client.solrj.response.QueryResponse; +import org.apache.solr.common.SolrDocument; +import org.apache.solr.common.SolrDocumentList; + +import edu.cornell.mannlib.vitro.webapp.beans.Individual; +import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; +import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; +import edu.cornell.mannlib.vitro.webapp.search.VitroSearchTermNames; +import edu.cornell.mannlib.vitro.webapp.search.solr.SolrSetup; + +/* + * This runs a solr query to get individuals of a certain class instead of relying on the dao classes. + * Also it gets individuals that belong to the most specific type(s) specified. + */ +public class IndividualsViaSolrQueryOptions extends IndividualsViaVClassOptions implements FieldOptions { + private Log log = LogFactory.getLog(IndividualsViaSolrQueryOptions.class); + + private ServletContext servletContext; + public IndividualsViaSolrQueryOptions(ServletContext context, String ... vclassURIs) throws Exception { + super(vclassURIs); + this.servletContext = context; + } + + @Override + protected Map getIndividualsForClass(String vclassURI, WebappDaoFactory wDaoFact ){ + Map individualMap = new HashMap(); + try { + SolrServer solrServer = SolrSetup.getSolrServer(servletContext); + + //solr query for type count. + SolrQuery query = new SolrQuery(); + if( VitroVocabulary.OWL_THING.equals( vclassURI )){ + query.setQuery( "*:*" ); + }else{ + query.setQuery( VitroSearchTermNames.MOST_SPECIFIC_TYPE_URIS + ":" + vclassURI); + } + query.setStart(0) + .setRows(1000); + query.setFields(VitroSearchTermNames.URI); // fields to retrieve + + QueryResponse rsp = solrServer.query(query); + SolrDocumentList docs = rsp.getResults(); + long found = docs.getNumFound(); + if(found > 0) { + for (SolrDocument doc : docs) { + try { + String uri = doc.get(VitroSearchTermNames.URI).toString(); + Individual individual = wDaoFact.getIndividualDao().getIndividualByURI(uri); + if (individual == null) { + log.debug("No individual for search document with uri = " + uri); + } else { + individualMap.put(individual.getURI(), individual); + log.debug("Adding individual " + uri + " to individual list"); + } + } + catch(Exception ex) { + log.error("An error occurred retrieving the individual solr query resutls", ex); + } + } + } + + } catch(Exception ex) { + log.error("Error occurred in executing solr query ", ex); + } + return individualMap; + } + + @Override + public Map getOptions( + EditConfigurationVTwo editConfig, + String fieldName, + WebappDaoFactory wDaoFact) throws Exception { + + Map individualMap = new HashMap(); + + for( String vclassURI : vclassURIs){ + individualMap.putAll( getIndividualsForClass( vclassURI, wDaoFact) ); + } + + //sort the individuals + List individuals = new ArrayList(); + individuals.addAll(individualMap.values()); + Collections.sort(individuals); + + Map optionsMap = new HashMap(); + + if (defaultOptionLabel != null) { + optionsMap.put(LEFT_BLANK, defaultOptionLabel); + } + + if (individuals.size() == 0) { + //return empty map, unlike individualsViaVclass + return optionsMap ; + } else { + for (Individual ind : individuals) { + if (ind.getURI() != null) { + optionsMap.put(ind.getURI(), ind.getName().trim()); + } + } + } + return optionsMap; + + } + + +} + + diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/fields/IndividualsViaVClassOptions.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/fields/IndividualsViaVClassOptions.java index cebc7d23e..741624e5a 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/fields/IndividualsViaVClassOptions.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/fields/IndividualsViaVClassOptions.java @@ -18,8 +18,8 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTw public class IndividualsViaVClassOptions implements FieldOptions { public static final String LEFT_BLANK = ""; - private List vclassURIs; - private String defaultOptionLabel; + protected List vclassURIs; + protected String defaultOptionLabel; public IndividualsViaVClassOptions(String ... vclassURIs) throws Exception { super();