From 8cba00a0c7ccb1a003d5324c7ebc6f0f3b0e2f40 Mon Sep 17 00:00:00 2001 From: j2blake Date: Wed, 23 Oct 2013 09:41:21 -0400 Subject: [PATCH 1/3] Line-end characters --- .../testrunner/selenium/how-to-create-firefox-profile.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From d82c8940bb62a7d9808a728a2adad02738b81d5c Mon Sep 17 00:00:00 2001 From: hudajkhan Date: Wed, 30 Oct 2013 16:33:33 -0400 Subject: [PATCH 2/3] updates for deletion and setting up method of getting field options for individuals with a certain most specific type --- .../IndividualsViaSolrQueryOptions.java | 123 ++++++++++++++++++ .../DefaultObjectPropertyFormGenerator.java | 18 +-- .../EditRequestDispatchController.java | 4 +- 3 files changed, 135 insertions(+), 10 deletions(-) create mode 100644 webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/fields/IndividualsViaSolrQueryOptions.java 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..7108ae803 --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/fields/IndividualsViaSolrQueryOptions.java @@ -0,0 +1,123 @@ +/* $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.Comparator; +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.beans.VClass; +import edu.cornell.mannlib.vitro.webapp.dao.IndividualDao; +import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; +import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; +import edu.cornell.mannlib.vitro.webapp.dao.jena.WebappDaoFactoryJena; +import edu.cornell.mannlib.vitro.webapp.dao.jena.pellet.PelletListener; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DefaultObjectPropertyFormGenerator; +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); + + public static final String LEFT_BLANK = ""; + private List vclassURIs; + private String defaultOptionLabel; + private ServletContext servletContext; + public IndividualsViaSolrQueryOptions(ServletContext context, String ... vclassURIs) throws Exception { + super(); + 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.setRows(0); + QueryResponse rsp = solrServer.query(query); + SolrDocumentList docs = rsp.getResults(); + long found = docs.getNumFound(); + for (SolrDocument doc : docs) { + 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("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 : this.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/configuration/generators/DefaultObjectPropertyFormGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultObjectPropertyFormGenerator.java index 583a97fd1..11cf0210d 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultObjectPropertyFormGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/DefaultObjectPropertyFormGenerator.java @@ -145,16 +145,16 @@ public class DefaultObjectPropertyFormGenerator implements EditConfigurationGene SolrServer solrServer = SolrSetup.getSolrServer(session.getServletContext()); List types = new ArrayList(); + for (VClass vclass : rangeTypes) { + if (vclass.getURI() != null) { + types.add(vclass.getURI()); + } + } + //empty list means the range is not set to anything, force Thing - if(types.size() == 0 ){ - types.add(VitroVocabulary.OWL_THING); - } else { - for (VClass vclass : rangeTypes) { - if (vclass.getURI() != null) { - types.add(vclass.getURI()); - } - } - } + if(types.size() == 0 ){ + types.add(VitroVocabulary.OWL_THING); + } long count = 0; for( String type:types){ diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java index 692f9212d..30ee3b8c3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/controller/EditRequestDispatchController.java @@ -164,7 +164,9 @@ public class EditRequestDispatchController extends FreemarkerHttpServlet { //edit key is set here, NOT in the generator class EditConfigurationVTwo editConfig = null; EditConfigurationVTwo existingConfig = EditConfigurationVTwo.getConfigFromSession(session, vreq); - if(existingConfig != null) { + //if delete form from the editing page, then edit configuration already exists and the + //delete generator wouldn't be used, we need to make sure that it is used if it's a delete option + if(existingConfig != null && !isDeleteForm(vreq)) { editConfig = existingConfig; } else { editConfig = From 15e0fc0e39fd904e3932c7cb67e73f60eed13acc Mon Sep 17 00:00:00 2001 From: hudajkhan Date: Thu, 31 Oct 2013 15:08:58 -0400 Subject: [PATCH 3/3] updates for individuals via solr field options --- .../IndividualsViaSolrQueryOptions.java | 41 ++++++++++--------- .../fields/IndividualsViaVClassOptions.java | 4 +- 2 files changed, 23 insertions(+), 22 deletions(-) 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 index 7108ae803..fc9527297 100644 --- 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 @@ -3,7 +3,6 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -19,14 +18,9 @@ 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.beans.VClass; -import edu.cornell.mannlib.vitro.webapp.dao.IndividualDao; import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; -import edu.cornell.mannlib.vitro.webapp.dao.jena.WebappDaoFactoryJena; -import edu.cornell.mannlib.vitro.webapp.dao.jena.pellet.PelletListener; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; -import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.DefaultObjectPropertyFormGenerator; import edu.cornell.mannlib.vitro.webapp.search.VitroSearchTermNames; import edu.cornell.mannlib.vitro.webapp.search.solr.SolrSetup; @@ -37,12 +31,9 @@ import edu.cornell.mannlib.vitro.webapp.search.solr.SolrSetup; public class IndividualsViaSolrQueryOptions extends IndividualsViaVClassOptions implements FieldOptions { private Log log = LogFactory.getLog(IndividualsViaSolrQueryOptions.class); - public static final String LEFT_BLANK = ""; - private List vclassURIs; - private String defaultOptionLabel; private ServletContext servletContext; public IndividualsViaSolrQueryOptions(ServletContext context, String ... vclassURIs) throws Exception { - super(); + super(vclassURIs); this.servletContext = context; } @@ -59,18 +50,28 @@ public class IndividualsViaSolrQueryOptions extends IndividualsViaVClassOptions }else{ query.setQuery( VitroSearchTermNames.MOST_SPECIFIC_TYPE_URIS + ":" + vclassURI); } - query.setRows(0); + 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(); - for (SolrDocument doc : docs) { - 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"); + 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); + } } } @@ -88,7 +89,7 @@ public class IndividualsViaSolrQueryOptions extends IndividualsViaVClassOptions Map individualMap = new HashMap(); - for( String vclassURI : this.vclassURIs){ + for( String vclassURI : vclassURIs){ individualMap.putAll( getIndividualsForClass( vclassURI, wDaoFact) ); } 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();