📄 jahiacontainerdefinitionsregistry.java
字号:
//// ____.// __/\ ______| |__/\. _______// __ .____| | \ | +----+ \// _______| /--| | | - \ _ | : - \_________// \\______: :---| : : | : | \________>// |__\---\_____________:______: :____|____:_____\// /_____|//// . . . i n j a h i a w e t r u s t . . .////// JahiaContainerDefinitionsRegistry//// loadAllDefinitions// getDefinition( defID )// getDefinition( containerName )// getDefinitionsInTemplate( templateID )// setDefinition( theFieldDef )//package org.jahia.registries;import java.util.*; // Vectorimport org.jahia.utils.*; // JahiaConsoleimport org.jahia.data.containers.*; // JahiaContainerDefinitionimport org.jahia.services.*; // ServicesRegistryimport org.jahia.exceptions.JahiaException;public class JahiaContainerDefinitionsRegistry { private static JahiaContainerDefinitionsRegistry theObject = null; /** * @associates JahiaContainerDefinition */ private Vector theRegistry; /*** * registry constructor * */ private JahiaContainerDefinitionsRegistry() { JahiaConsole.println( "JahiaContainerDefinitionsRegistry", "***** Starting ContainerDefinitions Registry *****" ); } // end constructor /*** * registry accessor * @return the registry object * */ public static synchronized JahiaContainerDefinitionsRegistry getInstance() { if (theObject == null) { theObject = new JahiaContainerDefinitionsRegistry(); } return theObject; } // end getInstance /*** * calls the loadAllDefinitions method * */ public void init() throws JahiaException { loadAllDefinitions(); } // end init /*** * loads all container definitions from the database * * calls load_container_definitions in JahaiContainersDBService * */ public synchronized void loadAllDefinitions() throws JahiaException { theRegistry = new Vector(); Vector defIDs = ServicesRegistry.getInstance().getJahiaContainersService( ).getAllContainerDefinitionIDs(); for (int i=0; i < defIDs.size(); i++) { theRegistry.add( ServicesRegistry.getInstance().getJahiaContainersService( ).loadContainerDefinition( ((Integer)defIDs.elementAt(i)).intValue() ) ); } } // end loadAllDefinitions /*** * gets a definition in the registry through its definition ID * * @param defID the definition ID * @return a JahiaContainerDefinition object; null if not found * @see org.jahia.data.containers.JahiaContainerDefinition * * @exception raises a critical JahiaException if no definition found * */ public JahiaContainerDefinition getDefinition( int defID ) throws JahiaException { if (theRegistry != null) { for (int i=0; i < theRegistry.size(); i++) { JahiaContainerDefinition theFieldDef = (JahiaContainerDefinition) theRegistry.elementAt( i ); if (theFieldDef.getID() == defID) { return theFieldDef; } } } return null; } // end getDefinition /*** * gets a definition in the registry through its page definition id and container name * * @param siteID the site id * @param containerName the container name * @return a JahiaContainerDefinition object; null if not found * @see org.jahia.data.containers.JahiaContainerDefinition * * */ public JahiaContainerDefinition getDefinition( int siteID, String containerName ) { if (theRegistry != null) { for (int i=0; i < theRegistry.size(); i++) { JahiaContainerDefinition theContainerDef = (JahiaContainerDefinition) theRegistry.elementAt( i ); if ( (theContainerDef.getJahiaID()==siteID) && theContainerDef.getName().equals(containerName)) { return theContainerDef; } } } return null; } // end getDefinition /*** * gets all definitions of a page template in the registry * * @param pageDefID the page definition id * @return a JahiaContainerDefinition object; null if not found * @see org.jahia.data.containers.JahiaContainerDefinition * * */ public Vector getDefinitionsInTemplate( int pageDefID ) { Vector theDefs = new Vector(); if (theRegistry != null) { for (int i=0; i < theRegistry.size(); i++) { JahiaContainerDefinition theContainerDef = (JahiaContainerDefinition) theRegistry.elementAt( i ); Hashtable subDefs = theContainerDef.getSubDefs(); Enumeration subKeys = subDefs.keys(); boolean ok = false; while ((subKeys.hasMoreElements()) && (!ok)) { JahiaContainerSubDefinition theSubDef = (JahiaContainerSubDefinition) subDefs.get( (Integer)subKeys.nextElement() ); if (theSubDef.getPageDefID() == pageDefID) { theDefs.add( theContainerDef ); ok = true; } } } } return theDefs; } // end getDefinitionsInTemplate /*** * sets a definition in the registry, and synchronizes it with the database * * @param theContainerDef the JahiaContainerDefinition object to set * @see org.jahia.data.containers.JahiaContainerDefinition * */ public synchronized void setDefinition( JahiaContainerDefinition theContainerDef ) throws JahiaException { JahiaContainerDefinition aContainerDef; aContainerDef = getDefinition( theContainerDef.getJahiaID(), theContainerDef.getName() ); if (aContainerDef != null) { // container definition already exists, just have to update ServicesRegistry.getInstance().getJahiaContainersService( ).saveContainerDefinition( theContainerDef ); int index = getDefinitionIndex( aContainerDef ); theRegistry.setElementAt( theContainerDef, index ); } else { // container definition doesn't exist, need to add to registry ServicesRegistry.getInstance().getJahiaContainersService( ).saveContainerDefinition( theContainerDef ); theRegistry.add( theContainerDef ); } } // end setDefinition /*** * remove a Container Definition * */ public synchronized void removeContainerDefinition( int ctnDefID ) throws JahiaException { for (int i=0; i < theRegistry.size(); i++) { JahiaContainerDefinition theCtnDef = (JahiaContainerDefinition) theRegistry.elementAt( i ); if (theCtnDef.getID() == ctnDefID) { theRegistry.remove(i); return; } } } // end removeContainerDefinition /*** * gets the index of a definition in the registry * * @param theContainerDef the JahiaContainerDefinition object to set * @return the index * @see org.jahia.data.containers.JahiaContainerDefinition * * @exception raises a critical JahiaException if the definition doesn't exist in the registry * */ private int getDefinitionIndex( JahiaContainerDefinition theContainerDef ) throws JahiaException { for (int i=0; i < theRegistry.size(); i++) { JahiaContainerDefinition aContainerDef = (JahiaContainerDefinition) theRegistry.elementAt( i ); if (theContainerDef.getID() == aContainerDef.getID()) { return i; } } String errorMsg = "Could not find an index for container desc " + theContainerDef.getName(); JahiaConsole.println ("JahiaContainerDefinitionsRegistry", errorMsg + " -> BAILING OUT"); throw new JahiaException ("Database synchronisation error", errorMsg, JahiaException.REGISTRY_ERROR, JahiaException.CRITICAL); } // end getDefinitionIndex} // end JahiaContainerDefinitionsRegistry
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -