📄 sharedtemplatepackagesregistry.java
字号:
//// ____.// __/\ ______| |__/\. _______// __ .____| | \ | +----+ \// _______| /--| | | - \ _ | : - \_________// \\______: :---| : : | : | \________>// |__\---\_____________:______: :____|____:_____\// /_____|//// . . . i n j a h i a w e t r u s t . . .////// SharedTemplatePackagesRegistry// NK 26.09.2001//package org.jahia.registries;import java.util.*; // HashTableimport java.io.*;import org.jahia.utils.*; // JahiaConsoleimport org.jahia.utils.zip.*;import org.jahia.services.templates_deployer.*;import org.jahia.data.templates.*;import org.jahia.exceptions.JahiaException;/** * Registry of shared template packages ( package located in the shared template folder ) * * @author Khue ng * @version 1.0 */public class SharedTemplatePackagesRegistry { private static final String CLASS_NAME = "SharedTemplatePackagesRegistry"; private static SharedTemplatePackagesRegistry mInstance = null; /** * @associates JahiaTemplatesPackage */ private Hashtable theRegistry; private Hashtable tmplPackageNames; /** * @associates String */ private Hashtable tmplPackageThumbnails; /** * @associates String */ private Hashtable tmplPackageDescrs; private int count = 0; private static boolean isLoaded = false; private String sharedTemplateFolder = null; private String templatePreviewFolder = null; public static final String TEMPLATES_PREVIEW_FOLDER = "templates_preview"; //-------------------------------------------------------------------------- /** * constructor */ private SharedTemplatePackagesRegistry() { JahiaConsole.println( "Registry", "***** Starting Shared Template Packages Registry *****" ); init(); } // end constructor //-------------------------------------------------------------------------- /*** * getInstance * */ public static synchronized SharedTemplatePackagesRegistry getInstance() { if (mInstance == null) { mInstance = new SharedTemplatePackagesRegistry(); } return mInstance; } // end getInstance //-------------------------------------------------------------------------- /*** * init * called from init() method in Jahia servlet * */ private void init() { theRegistry = new Hashtable(); tmplPackageNames = new Hashtable(); tmplPackageThumbnails = new Hashtable(); tmplPackageDescrs = new Hashtable(); isLoaded = true; } // end init //-------------------------------------------------------------------------- /*** * init and load template package from the shared template folder * * @param String sharedTemplateFolder * @param String templatePreviewFolder * */ public void init(String sharedTemplateFolder, String templatePreviewFolder) { init(); if ( sharedTemplateFolder != null ){ this.sharedTemplateFolder = sharedTemplateFolder; this.templatePreviewFolder = templatePreviewFolder + File.separator + TEMPLATES_PREVIEW_FOLDER; File previewFolder = new File(this.templatePreviewFolder); previewFolder.mkdirs(); JahiaConsole.println(CLASS_NAME+".init","Template preview folder is " + previewFolder.getAbsolutePath()); JahiaConsole.println(CLASS_NAME+".init","Shared template folder is " + sharedTemplateFolder); File f = new File( sharedTemplateFolder ); String filename = null; if ( f.isDirectory() ){ File[] files = f.listFiles(); for ( int i=0 ; i<files.length ; i++){ filename = files[i].getName(); if ( filename.endsWith(".jar") ){ try { addTemplatePackage( files[i].getAbsolutePath() ); } catch ( JahiaException je ){ JahiaConsole.println(CLASS_NAME+".init","Exception " + je.getMessage()); } } } } } } // end init //-------------------------------------------------------------------------- /*** * get Templates Package by its index * @author NK * * @param int index */ public JahiaTemplatesPackage getTemplatePackage( int index ) throws JahiaException { return (JahiaTemplatesPackage)theRegistry.get(new Integer(index)); } //-------------------------------------------------------------------------- /*** * get Templates Package by its file name * @author NK * * @param String filename, the package's file name */ public JahiaTemplatesPackage getTemplatePackage( String filename ) throws JahiaException { if ( filename == null ){ return null; } Integer I = (Integer)tmplPackageNames.get(filename); if ( I == null ){ return null; } return getTemplatePackage(I.intValue()); } //-------------------------------------------------------------------------- /*** * Add a template package, if there is already a package with same file name * replace it. * @author NK * * @param JahiaTemplatesPackage tmplPack, a templates package */ public void addTemplatePackage( JahiaTemplatesPackage tmplPack ) throws JahiaException { if ( tmplPack != null && tmplPack.getFileName() != null ){ Integer I = (Integer)tmplPackageNames.get(tmplPack.getFileName()); if ( I == null ){ count++; tmplPack.setID(count); theRegistry.put(new Integer(count),tmplPack); } else { // replace theRegistry.put(I,tmplPack); } // extract the thumbnail img extractThumbnailImg(tmplPack); extractDescrFile(tmplPack); JahiaConsole.println(CLASS_NAME+".addTemplatesPackage","Package name=" + tmplPack.getName()); } } //-------------------------------------------------------------------------- /*** * Add a template package * @author NK * * @param String filePath, the full path to a template jar file */ public void addTemplatePackage( String filePath ) throws JahiaException { JahiaTemplatesPackageHandler ph = new JahiaTemplatesPackageHandler(filePath); addTemplatePackage(ph.getPackage()); ph.closeArchiveFile(); ph = null; } //-------------------------------------------------------------------------- /*** * remove a templates package by its file name * * @author NK * * @param String filename */ public void removeTemplatePackage( String filename ) throws JahiaException { Integer I = getIndex(filename); if ( I == null ){ return; } theRegistry.remove(I); tmplPackageNames.remove(filename); tmplPackageThumbnails.remove(filename); tmplPackageDescrs.remove(filename); } //-------------------------------------------------------------------------- /** * Return the list of template packages * * @author NK * */ public Enumeration getAllTemplatePackages(){ return theRegistry.elements(); } //-------------------------------------------------------------------------- /** * Return the thumbnail image file for a gived template package * * @author NK * @param String filename, the filename of the template package */ public String getTemplatePackageThumbnail(String filename){ return (String)tmplPackageThumbnails.get(filename); } //-------------------------------------------------------------------------- /** * Return the index attached to a template package filename * * @author NK * * @param (String) the package filename * @return (Integer) the index */ private Integer getIndex(String filename){ if ( filename == null ){ return null; }return (Integer)tmplPackageNames.get(filename); } //-------------------------------------------------------------------------- /** * Return the number of package in the registry * * @author NK * * @return (Integer) the number of package in the registry */ public int getNbPackage(){ return theRegistry.size(); } //-------------------------------------------------------------------------- /** * Extract the thumbnail image * * @author NK * * @param (JahiaTemplatesPackage) the template package */ private void extractThumbnailImg(JahiaTemplatesPackage tmplPack){ if ( tmplPack == null ){ return; } String thumbnail = tmplPack.getThumbnail(); String thumbnailExt = ""; if ( ( thumbnail!= null) && (thumbnail.indexOf(".") !=-1) ){ thumbnailExt = thumbnail.substring(thumbnail.indexOf("."),thumbnail.length()); // extract the thumbnail img File f = new File(tmplPack.getFilePath()); if ( f.isFile() ){ JahiaArchiveFileHandler zip = null; try { zip = new JahiaArchiveFileHandler(f.getAbsolutePath()); if ( zip != null && zip.entryExists(tmplPack.getThumbnail()) ){ StringBuffer filename = new StringBuffer(this.templatePreviewFolder); filename.append(File.separator); filename.append(JahiaTools.removeFileExtension(tmplPack.getFileName(),".jar")); filename.append(thumbnailExt); File tmpFile = zip.extractFile(tmplPack.getThumbnail()); tmpFile.renameTo(new File(filename.toString())); File thumbFile = new File(filename.toString()); if ( thumbFile.isFile() ){ tmplPackageThumbnails.put(tmplPack.getFileName(),thumbFile.getName()); } tmpFile = null; thumbFile = null; } } catch ( JahiaException je ){ JahiaConsole.println(CLASS_NAME+".init","Exception "+ je.getMessage() ); } catch ( IOException ioe ){ JahiaConsole.println(CLASS_NAME+".init","Exception "+ ioe.getMessage() ); } finally { zip.closeArchiveFile(); } } } } //-------------------------------------------------------------------------- /** * Extract the description file * * @author NK * * @param (JahiaTemplatesPackage) the template package */ private void extractDescrFile(JahiaTemplatesPackage tmplPack){ if ( tmplPack == null ){ return; } // extract the thumbnail img File f = new File(tmplPack.getFilePath()); if ( f.isFile() ){ JahiaArchiveFileHandler zip = null; try { zip = new JahiaArchiveFileHandler(f.getAbsolutePath()); if ( zip != null && zip.entryExists(JahiaTemplatesPackage.DESCR_FILE) ){ StringBuffer filename = new StringBuffer(this.templatePreviewFolder); filename.append(File.separator); filename.append(JahiaTools.removeFileExtension(tmplPack.getFileName(),".jar")); filename.append(".txt"); File tmpFile = zip.extractFile(JahiaTemplatesPackage.DESCR_FILE); tmpFile.renameTo(new File(filename.toString())); File descrFile = new File(filename.toString()); if ( descrFile.isFile() ){ tmplPackageDescrs.put(tmplPack.getFileName(),descrFile.getName()); } tmpFile = null; descrFile = null; } } catch ( JahiaException je ){ JahiaConsole.println(CLASS_NAME+".init","Exception "+ je.getMessage() ); } catch ( IOException ioe ){ JahiaConsole.println(CLASS_NAME+".init","Exception "+ ioe.getMessage() ); } finally { zip.closeArchiveFile(); } } } //-------------------------------------------------------------------------- /** * Return true is this Class is already initialized * * @author NK * * @return (boolean) isLoaded */ public static boolean isLoaded(){ return isLoaded; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -