diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/Field.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/Field.java index 0b1b2e6ae..6d4aecbae 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/Field.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/Field.java @@ -23,6 +23,7 @@ public class Field { INDIVIDUALS_VIA_VCLASS, MONIKERS_VIA_VCLASS, CHILD_VCLASSES, + CHILD_VCLASSES_WITH_PARENT, FILE, UNDEFINED, DATETIME, @@ -214,6 +215,8 @@ public class Field { setOptionsType(Field.OptionsType.DATETIME); } else if ("CHILD_VCLASSES".equalsIgnoreCase(s)) { setOptionsType(Field.OptionsType.CHILD_VCLASSES); + } else if ("CHILD_VCLASSES_WITH_PARENT".equalsIgnoreCase(s)) { + setOptionsType(Field.OptionsType.CHILD_VCLASSES_WITH_PARENT); } else if ("FILE".equalsIgnoreCase(s)) { setOptionsType(Field.OptionsType.FILE); } else if ("DATE".equalsIgnoreCase(s)) { diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/SelectListGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/SelectListGenerator.java index 751e53e64..922bdf92a 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/SelectListGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/SelectListGenerator.java @@ -264,6 +264,37 @@ public class SelectListGenerator { } break; + case CHILD_VCLASSES_WITH_PARENT: //so we have a vclass URI + vclassUri = field.getObjectClassUri(); + if (vclassUri==null || vclassUri.equals("")){ + log.error("no vclassUri found for field \""+fieldName+"\" in SelectListGenerator.getOptions() when OptionsType CHILD_VCLASSES specified"); + } else { + // first test to see whether there's a default "leave blank" value specified with the literal options + String defaultOption=null; + if ((defaultOption=getDefaultOption(field))!=null) { + optionsMap.put(LEFT_BLANK, defaultOption); + } + // now populate the options + if( wDaoFact == null ) log.error("could not get WebappDaoFactory from request in SelectListGenerator.getOptions()."); + + VClassDao vclassDao = wDaoFact.getVClassDao(); + List subClassList = vclassDao.getAllSubClassURIs(vclassUri); + if( subClassList == null || subClassList.size()==0 ) { + log.debug("No subclasses of " + vclassUri + " found in the model so only default value from field's literalOptions will be used" ); + } else { + for( String subClassUri : subClassList ) { + VClass subClass = vclassDao.getVClassByURI(subClassUri); + if( subClass != null && !OWL.Nothing.getURI().equals(subClassUri)) { + optionsMap.put(subClassUri,subClass.getName().trim()); + ++optionsCount; + } + } + optionsMap.put(vclassUri, "Other"); + ++optionsCount; + } + } + break; + case UNDEFINED : log.error("optionsType \"UNDEFINED\" for Field \""+fieldName+"\" in SelectListGenerator.getOptions()"); break;