📄 jahiacontainerset.java
字号:
throw new JahiaException( errorMsg, errorMsg, JahiaException.TEMPLATE_ERROR, JahiaException.CRITICAL ); } } // end getContainer //------------------------------------------------------------------------- /*** * gets a container through its ID * * @param ctnid the container ID * @return a JahiaContainer object (may be null) * @see org.jahia.data.containers.JahiaContainer * * @exception raises a critical JahiaException if container not found * * !!! Warning : this method can return a null value !!! * */ public JahiaContainer getContainer( int ctnid ) throws JahiaException { checkContainerStructure(); Enumeration theContainers = containerLists.elements(); while (theContainers.hasMoreElements()) { JahiaContainerList aList = (JahiaContainerList) theContainers.nextElement(); Enumeration containerList = aList.getContainers(); while (containerList.hasMoreElements()) { JahiaContainer aContainer = (JahiaContainer) containerList.nextElement(); if (aContainer.getID() == ctnid) { return aContainer; } } } return null; } // end getContainer //------------------------------------------------------------------------- /*** * gets a containerlist through its name * * @param containerName the countainer list name * @return a JahiaContainerList object * @see org.jahia.data.containers.JahiaContainerList * * @exception raises a critical JahiaException if container list not found * */ public JahiaContainerList getContainerList( String containerName ) throws JahiaException { checkContainerStructure(); if (checkDeclared( containerName )) { JahiaContainerList theContainerList = (JahiaContainerList) containerLists.get( containerName ); if (theContainerList == null) { int clistID = ServicesRegistry.getInstance().getJahiaContainersService(). getContainerListID( containerName, jData.params().getPage().getID() ); if (clistID != -1) { // apply containers search and filtering. try { Vector ctnids = doContainerFilterSearchSort(jData.params(),containerName,clistID); if ( ctnids != null ){ theContainerList = ServicesRegistry.getInstance().getJahiaContainersService(). loadContainerList( clistID, ctnids, LoadFlags.ALL, jData.params(), this.cachedFieldsFromContainers ); } else { theContainerList = ServicesRegistry.getInstance().getJahiaContainersService(). loadContainerList( clistID, LoadFlags.ALL, jData.params(), this.cachedFieldsFromContainers ); } } catch ( Throwable t ){ t.printStackTrace(); } } } // 05.05.2002 NK : Why the container list wasn't added in the list before ? if ( theContainerList != null ) { addContainerList(theContainerList); } return theContainerList; } else { String errorMsg = "Container not declared : " + containerName; JahiaConsole.println( "JahiaContainerSet.getContainerList", errorMsg + " -> BAILING OUT" ); throw new JahiaException( errorMsg, errorMsg, JahiaException.TEMPLATE_ERROR, JahiaException.CRITICAL ); } } // end getContainerList //------------------------------------------------------------------------- /*** * gets a containerlist through its ID * * @param ctnid the countainer list ID * @return a JahiaContainerList object, may return null * @see org.jahia.data.containers.JahiaContainerList * */ public JahiaContainerList getContainerList( int listID ) throws JahiaException { checkContainerStructure(); Enumeration theContainers = containerLists.elements(); while (theContainers.hasMoreElements()) { JahiaContainerList aList = (JahiaContainerList) theContainers.nextElement(); if (aList.getID() == listID) { return aList; } } return null; } // end getContainerList //------------------------------------------------------------------------- /*** * gets a container list in another page (absolute page reference by its id) * * @param containerName the container list name * @param pageID the page ID * @return a JahiaContainerList object, or null if nothing found * @see org.jahia.data.containers.JahiaContainerList * * !!! Warning : this method can return a null value !!! */ public JahiaContainerList getAbsoluteContainerList( String containerName, int pageID ) throws JahiaException { checkContainerStructure(); //JahiaConsole.println("JahiaContainerSet.getAbsoluteContainerList","Get absolute container " + containerName + ", pageID " + pageID); int containerListID = ServicesRegistry.getInstance(). getJahiaContainersService(). getContainerListID( containerName, pageID ); if (containerListID != -1) { // let's update cross reference table ContainerListsXRefManager.getInstance(). setAbsoluteContainerListPageID(jData.params().getSiteKey(), containerName, pageID, jData.params().getPageID()); JahiaContainerList theContainerList = null; //JahiaConsole.println("JahiaContainerSet.getAbsoluteContainerList"," != -1 "); try { Vector ctnids = doContainerFilterSearchSort(jData.params(),containerName,containerListID); if ( ctnids != null ){ //JahiaConsole.println("JahiaContainerSet.getAbsoluteContainerList"," filter search sort return " + ctnids.size() + " containers "); theContainerList = ServicesRegistry.getInstance().getJahiaContainersService(). loadContainerList( containerListID, ctnids, LoadFlags.ALL, jData.params(), this.cachedFieldsFromContainers ); } else { //JahiaConsole.println("JahiaContainerSet.getAbsoluteContainerList"," filter search sort return 0 container "); theContainerList = ServicesRegistry.getInstance().getJahiaContainersService(). loadContainerList( containerListID, LoadFlags.ALL, jData.params(), this.cachedFieldsFromContainers ); } } catch ( Throwable t ){ t.printStackTrace(); } return theContainerList; } else { // not found : gets definition id, then creates fake container list and saves it into memory JahiaContainerDefinition theDef = JahiaContainerDefinitionsRegistry.getInstance(). getDefinition( jData.params().getSiteID(), containerName ); if (theDef != null) { //JahiaConsole.println("JahiaContainerSet.getAbsoluteContainer", " found ctn def " + theDef.getID()); // let's update cross reference table ContainerListsXRefManager.getInstance(). setAbsoluteContainerListPageID(jData.params().getSiteKey(), containerName, pageID, jData.params().getPageID()); JahiaContainerList fakeContainerList = new JahiaContainerList( 0, 0, pageID, theDef.getID(), 0 ); addContainerList( fakeContainerList ); return fakeContainerList; } else { return null; } } } // end getAbsoluteContainerList //------------------------------------------------------------------------- /*** * gets a container list in another page (relative page reference by * number of levels to go up) * * @param containerName the container list name * @param levelNb the numbers of level to go up in the * site structure; * -1 = Home Page * @return a JahiaContainerList object, or null if nothing found * @see org.jahia.data.containers.JahiaContainerList * * !!! Warning : this method can return a null value !!! */ public JahiaContainerList getRelativeContainerList( String containerName, int levelNb ) throws JahiaException { JahiaConsole.println("JahiaContainerSet.getRelativeContainerList","into relative...................." ); int pageID = ServicesRegistry.getInstance().getJahiaPageService().findPageIDFromLevel( jData.params().getPage().getID(), levelNb ); JahiaConsole.println("JahiaContainerSet.getRelativeContainerList",".........page id found : " + pageID ); if (pageID != -1) { return getAbsoluteContainerList (containerName, pageID); } else { return null; } } // end getRelativeContainerList //------------------------------------------------------------------------- /*** * Apply searching, filtering and sorting on the given container list. * * @param ParamBean jParams, the param bean. * @param String the container list name. * @param int the container list id. * @return Vector of matching ctn ids, sorted and filtered. * @auhtor NK */ private Vector doContainerFilterSearchSort( ParamBean params, String containerListName, int clistID ) throws JahiaException { /* JahiaConsole.println("JahiaContainerSet.doContainerFilterSearch", "Started for container list [" + clistID + "-" + containerListName + "]" ); */ if ( params == null || containerListName == null || clistID == -1 ){ return null; } try { BitSet resultBitSet = null; BitSet filterBitSet = null; ContainerSearcher cSearcher = null; JahiaSearchResult searchResult = null; ContainerFilters cFilters = null; boolean resultHasChanged = false; // Apply container list search if needed. cSearcher = getCtnListSearcher(params,containerListName,clistID); if ( cSearcher != null ){ searchResult = (JahiaSearchResult)cSearcher.getResult(); } if ( searchResult != null ){ if ( searchResult.bits() != null ){ resultBitSet = (BitSet)searchResult.bits().clone(); } } /* if ( resultBitSet != null ){ JahiaConsole.println("JahiaContainerSet.doContainerFilterSearch", "Search result :" + resultBitSet.toString()); } else { JahiaConsole.println("JahiaContainerSet.doContainerFilterSearch", "Search result is null:"); } */ // Apply container list filtering if needed. if ( (searchResult==null) || !(searchResult != null && searchResult.getHitCount()==0) ) { cFilters = getCtnListFilters(params,containerListName,clistID); if ( cFilters != null ) { if ( cFilters.bits() != null ){ filterBitSet = (BitSet)cFilters.bits().clone(); } } } /* if ( filterBitSet != null ){ JahiaConsole.println("JahiaContainerSet.doContainerFilterSearch", "Filter result is : " + filterBitSet.toString()); } else { JahiaConsole.println("JahiaContainerSet.doContainerFilterSearch", "Filter result is null:"); } */ // Retrieve previous search and filtering bitset from cache HttpSession session = params.getSession(); BitSet cachedResultBitSet = null; if ( session != null ) { cachedResultBitSet = (BitSet)session.getAttribute( clistID + "_searchfiltering_result_bitset" ); } //resultHasChanged = ( cSearcher.getUpdateStatus() || cFilters.getUpdateStatus() ); resultHasChanged = ( (cSearcher != null && cSearcher.getUpdateStatus()) || ( cFilters != null && cFilters.getUpdateStatus() ) ); if ( resultHasChanged ) { if ( resultBitSet != null){ if ( filterBitSet != null ){ resultBitSet.and(filterBitSet); } } else if ( filterBitSet != null ){ resultBitSet = filterBitSet; } resultHasChanged = true; } else { resultBitSet = cachedResultBitSet; } if ( session != null ) { session.setAttribute( clistID + "_searchfiltering_result_bitset" , resultBitSet ); } if ( resultBitSet != null && resultBitSet.length() == 0 ){ return ( new Vector() ); } // Apply Sorting if needed.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -