diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/pageDataGetter/ClassGroupPageData.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/pageDataGetter/ClassGroupPageData.java new file mode 100644 index 000000000..00550c542 --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/pageDataGetter/ClassGroupPageData.java @@ -0,0 +1,78 @@ +package edu.cornell.mannlib.vitro.webapp.utils.pageDataGetter; + +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 edu.cornell.mannlib.vitro.webapp.beans.VClass; +import edu.cornell.mannlib.vitro.webapp.beans.VClassGroup; +import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; +import edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary; +import edu.cornell.mannlib.vitro.webapp.dao.jena.VClassGroupCache; + +/** + * This will pass these variables to the template: + * classGroupUri: uri of the classgroup associated with this page. + * vClassGroup: a data structure that is the classgroup associated with this page. + */ +public class ClassGroupPageData implements PageDataGetter{ + private static final Log log = LogFactory.getLog(ClassGroupPageData.class); + + public Map getData(ServletContext context, VitroRequest vreq, String pageUri, Map page, String type ){ + HashMap data = new HashMap(); + String classGroupUri = vreq.getWebappDaoFactory().getPageDao().getClassGroupPage(pageUri); + data.put("classGroupUri", classGroupUri); + + VClassGroupCache vcgc = VClassGroupCache.getVClassGroupCache(context); + List vcgList = vcgc.getGroups(vreq.getPortalId()); + VClassGroup group = null; + for( VClassGroup vcg : vcgList){ + if( vcg.getURI() != null && vcg.getURI().equals(classGroupUri)){ + group = vcg; + break; + } + } + if( classGroupUri != null && !classGroupUri.isEmpty() && group == null ){ + /*This could be for two reasons: one is that the classgroup doesn't exist + * The other is that there are no individuals in any of the classgroup's classes */ + group = vreq.getWebappDaoFactory().getVClassGroupDao().getGroupByURI(classGroupUri); + if( group != null ){ + List vcgFullList = vreq.getWebappDaoFactory().getVClassGroupDao() + .getPublicGroupsWithVClasses(false, true, false); + for( VClassGroup vcg : vcgFullList ){ + if( classGroupUri.equals(vcg.getURI()) ){ + group = vcg; + break; + } + } + if( group == null ){ + log.error("Cannot get classgroup '" + classGroupUri + "' for page '" + pageUri + "'"); + }else{ + setAllClassCountsToZero(group); + } + }else{ + log.error("classgroup " + classGroupUri + " does not exist in the system"); + } + + } + + data.put("vClassGroup", group); //may put null + return data; + } + + + public String getType(){ + return DisplayVocabulary.CLASSGROUP_PAGE_TYPE; + } + + protected void setAllClassCountsToZero(VClassGroup vcg){ + for(VClass vc : vcg){ + vc.setEntityCount(0); + } + } +} \ No newline at end of file