diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAssociatedConceptGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAssociatedConceptGenerator.java index db1e30a8..3166d4d6 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAssociatedConceptGenerator.java +++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAssociatedConceptGenerator.java @@ -4,6 +4,7 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators import java.util.Arrays; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -28,9 +29,11 @@ import com.hp.hpl.jena.vocabulary.RDF; import com.hp.hpl.jena.vocabulary.XSD; import com.hp.hpl.jena.ontology.OntModel; import edu.cornell.mannlib.vitro.webapp.beans.DataProperty; +import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyComparator; import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement; import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty; +import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement; import edu.cornell.mannlib.vitro.webapp.beans.VClass; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; @@ -41,6 +44,7 @@ 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.edit.n3editing.configuration.Field; +import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.AddAuthorsToInformationResourceGenerator.AuthorshipInfo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.AddAssociatedConceptsPreprocessor; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.RoleToActivityPredicatePreprocessor; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.processEdit.RdfLiteralHash; @@ -72,8 +76,11 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements private String dataLiteral = null; private String template = "addAssociatedConcept.ftl"; private static HashMap defaultsForXSDtypes ; + private static String SKOSConceptType = "http://www.w3.org/2004/02/skos/core#Concept"; + + @Override public EditConfigurationVTwo getEditConfiguration(VitroRequest vreq, HttpSession session) { EditConfigurationVTwo editConfiguration = new EditConfigurationVTwo(); @@ -305,12 +312,17 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements List testInfo = new ArrayList(); testInfo.add(new AssociatedConceptInfo("testLabel", "testURI", "testVocabURI", "testVocabLabel", null)); testInfo.add(new AssociatedConceptInfo("user defined label", "testUserURI", null, null, "http://www.w3.org/2004/02/skos/core#Concept")); + + //Adding concepts + testInfo.addAll(getExistingConcepts(vreq)); formSpecificData.put("existingConcepts", testInfo); //Return url for adding user defined concept formSpecificData.put("userDefinedConceptUrl", getUserDefinedConceptUrl(vreq)); editConfiguration.setFormSpecificData(formSpecificData); } + + // private Object getUserDefinedConceptUrl(VitroRequest vreq) { String subjectUri = EditConfigurationUtils.getSubjectUri(vreq); String predicateUri = EditConfigurationUtils.getPredicateUri(vreq); @@ -322,6 +334,57 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements "&editForm=" + UrlBuilder.urlEncode(generatorName); } + private List getExistingConcepts(VitroRequest vreq) { + Individual individual = EditConfigurationUtils.getSubjectIndividual(vreq); + List concepts = individual.getRelatedIndividuals( + EditConfigurationUtils.getPredicateUri(vreq)); + //TODO: Check if sorted correctly + sortConceptIndividuals(concepts); + + return getAssociatedConceptInfo(concepts); + } + + + private void sortConceptIndividuals(List authorships) { + DataPropertyComparator comp = new DataPropertyComparator(RDFS.label.getURI()); + Collections.sort(authorships, comp); + } + + private List getAssociatedConceptInfo( + List concepts) { + List info = new ArrayList(); + for ( Individual conceptIndividual : concepts ) { + boolean isSKOSConcept = false; + String conceptUri = conceptIndividual.getURI(); + String conceptLabel = conceptIndividual.getName(); + //Check if SKOS Concept type + List osl = conceptIndividual.getObjectPropertyStatements(RDF.type.getURI()); + for(ObjectPropertyStatement os: osl) { + if(os.getObjectURI().equals(SKOSConceptType)) { + isSKOSConcept = true; + break; + } + } + + if(isSKOSConcept) { + info.add(new AssociatedConceptInfo(conceptLabel, conceptUri, null, null, SKOSConceptType)); + } else { + //Get the vocab source and vocab label + List vocabList = conceptIndividual.getObjectPropertyStatements(RDFS.isDefinedBy.getURI()); + String vocabSource = null; + String vocabLabel = null; + if(vocabList != null && vocabList.size() > 0) { + vocabSource = vocabList.get(0).getObjectURI(); + //vocab label? Right now set as same to vocab source until we get the correct input + vocabLabel = vocabSource; + } + info.add(new AssociatedConceptInfo(conceptLabel, conceptUri, vocabSource, vocabLabel, null)); + + } + } + return info; + } + public class AssociatedConceptInfo { private String conceptLabel; private String conceptURI; diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddRoleToPersonTwoStageGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddRoleToPersonTwoStageGenerator.java index f9c2391e..6f181133 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddRoleToPersonTwoStageGenerator.java +++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddRoleToPersonTwoStageGenerator.java @@ -881,7 +881,6 @@ public abstract class AddRoleToPersonTwoStageGenerator extends BaseEditConfigura } addFilter += StringUtils.join(filterPortions, " || "); addFilter += ")"; - System.out.println("Add filter is " + addFilter); return addFilter; } diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/preprocessors/AddAssociatedConceptsPreprocessor.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/preprocessors/AddAssociatedConceptsPreprocessor.java index e5b85549..6b7d983d 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/preprocessors/AddAssociatedConceptsPreprocessor.java +++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/preprocessors/AddAssociatedConceptsPreprocessor.java @@ -163,7 +163,7 @@ public class AddAssociatedConceptsPreprocessor extends int index; // First one already included in generator so add additional ones here for (index = 1; index <= numberConcepts; index++) { - int suffix = index + 1; + int suffix = index; String conceptNode = conceptNodeBase + suffix; String label = labelBase + suffix; String source = sourceBase + suffix;