📄 xmlportlets.java
字号:
//// ____.// __/\ ______| |__/\. _______// __ .____| | \ | +----+ \// _______| /--| | | - \ _ | : - \_________// \\______: :---| : : | : | \________>// |__\---\_____________:______: :____|____:_____\// /_____|//// . . . i n j a h i a w e t r u s t . . .////---------------------------------------// XMLPortlets//---------------------------------------// Serge Huber & Jerome Bedat 12.01.2001// ... little hack made by Fulco ;)//---------------------------------------// NK 25.04.2001// Ported to jaxp-1.1//---------------------------------------/** * @todo: this class should probably be renamed to XMLPortletsPersistanceManager, * or even PersonalizedPortletsPersistanceManager */package jahiatemplates.org.jahia.portlets_api;import java.io.*;import java.util.*;import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.*;import javax.xml.transform.stream.*;import org.jahia.exceptions.*; // JahiaExceptionsimport org.jahia.registries.*; // ServicesRegistryimport org.jahia.utils.*; // JahiaConsoleimport org.w3c.dom.*;import org.xml.sax.*;/** * This class is responsible for loading up data from an XML file that contains * the portlet configuration of a specific user. * * Format of XML document is as follows: * <?xml version="1.0" encoding="ISO-8859-1"?> * <plml> * <portletgroup id=""> * <parameter name="page_number">1</parameter> * <portlet id=""> * <parameter name="active">1</parameter> * <parameter name="title">First Portlet</parameter> * <parameter name="source_id">12</parameter> * <parameter name="icon_url">http://</parameter> * <parameter name="bgcolor">#FFFFFF</parameter> * <parameter name="bgimage_url">http://</parameter> * <parameter name="font">arial, helvetica, sans-serif</parameter> * <parameter name="fontsize">1</parameter> * <parameter name="fontcolor">#000000</parameter> * <parameter name="innerspace">10</parameter> * <parameter name="column_position">1</parameter> * <parameter name="row_position">1</parameter> * other parameters... * </portlet> * other portlets * </portletgroup> * other portlet lists (also known as pages) * </plml> * * @author Serge Huber * */public class XMLPortlets { private static final String CANT_READ_PORTLET_XML_MSG = "Can't read portlet XML file"; private static final String ERROR_READING_PLML_FILE_MSG = "Error reading PLML file"; private static final String PLML_TAG = "PLML"; private static final String PARAMETER_TAG = "PARAMETER"; private static final String PARAMETER_TAG_NAME_ATTRIBUTE = "name"; private static final String PARAMETER_TAG_ID_ATTRIBUTE = "id"; private static final String PORTLETLIST_TAG = "PORTLETGROUP"; private static final String PORTLET_TAG = "PORTLET"; private static final String XML_ENCODING = "ISO-8859-1"; private Document xmlDocument = null; private boolean addPortletGroup = false; private File theFile; private String theXMLfile; private String theDefaultXMLfile; private String paramAttrNode; private Text theTextNode; private Node portletgroupNode; private Node plmlNode; private Vector thePortletList; private int thePageID; private int MaxColumn = 0; //-------------------------------------------------------------------------- /** * Constructor is initialized with the path to the Portlets XML file Descriptor */ XMLPortlets(String theTemplatesPathDirectory, String thefilename, String theDefaultfilename, int thePageID) throws JahiaException { File thePortletsAPIDirectory = new File( theTemplatesPathDirectory + File.separator + "portlets_api" + File.separator ); if(!thePortletsAPIDirectory.exists()) { thePortletsAPIDirectory.mkdirs(); } String thePath = theTemplatesPathDirectory + File.separator + "portlets_api" + File.separator; this.addPortletGroup = false; this.theFile = new File( thePath + thefilename); this.theXMLfile = thePath + thefilename; this.theDefaultXMLfile = thePath + theDefaultfilename; this.thePageID = thePageID; if (!theFile.exists()) { try { JahiaConsole.println("XMLPortlets constructor", "Creating file " + theXMLfile + "..."); Document xmlDoc = null; try { DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance(); //dfactory.setValidating(true); // create only parsers that are validating DocumentBuilder docBuilder = dfactory.newDocumentBuilder(); xmlDoc = docBuilder.newDocument(); } catch ( Throwable t ){ throw new JahiaException( "XMLPortlets", "Exception " + t.getMessage(), JahiaException.ERROR, JahiaException.SERVICE_ERROR); } Element newPlmlNode = (Element) xmlDoc.createElement(PLML_TAG); if ( newPlmlNode == null ){ JahiaConsole.println("XMLPortlets constructor", "newPlmlNode is null"); } //newPlmlNode.normalize(); xmlDoc.appendChild(newPlmlNode); theFile.createNewFile(); if (theXMLfile.equals(theDefaultXMLfile)) { JahiaConsole.println("XMLPortlets constructor", "Creating default file with user guest !"); Integer thePGID = new Integer(update_count("portletgroup")); Element newPortletGroupNode = (Element) xmlDoc.createElement(PORTLETLIST_TAG); newPortletGroupNode.setAttribute(PARAMETER_TAG_ID_ATTRIBUTE, thePGID.toString()); newPlmlNode.appendChild(newPortletGroupNode); Integer thePID = new Integer(thePageID); Element paramNode = (Element) xmlDoc.createElement(PARAMETER_TAG); paramNode.setAttribute(PARAMETER_TAG_NAME_ATTRIBUTE, "page_id"); Text theTextNode = xmlDoc.createTextNode(thePID.toString()); paramNode.appendChild(theTextNode); newPortletGroupNode.appendChild(paramNode); saveFile(xmlDoc,theFile.getAbsolutePath()); xmlDocument = loadFile("file:" + theXMLfile); } else { saveFile(xmlDoc,theFile.getAbsolutePath()); xmlDocument = loadFile("file:" + theXMLfile); addPortletGroup(); } addPortletGroup = true; } catch (IOException ioe) { throw new JahiaException(CANT_READ_PORTLET_XML_MSG, "IOException in XML file writing : " + ioe.toString(), JahiaException.CRITICAL, JahiaException.CONFIG_ERROR); } } else { JahiaConsole.println("XMLPortlets constructor", "Loading file " + theXMLfile + "..."); xmlDocument = loadFile("file:" + theXMLfile); } portletgroupNode = getPortletGroupNode(); plmlNode = getPlmlNode(); } // end Constructor //-------------------------------------------------------------------------- private Document loadFile(String sourceFileName) throws JahiaException { Document xmlDoc = null; try { DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance(); //dfactory.setValidating(true); // create only parsers that are validating DocumentBuilder docBuilder = dfactory.newDocumentBuilder(); //docBuilder.setEntityResolver(); FileInputStream sourceStream = new FileInputStream(sourceFileName); xmlDoc = docBuilder.parse(new InputSource(sourceStream)); xmlDoc.normalize(); // clean up DOM tree a little Element docEl = (Element)xmlDoc.getDocumentElement(); } catch ( Throwable t ){ throw new JahiaException( "XMLPortlets", "Exception " + t.getMessage(), JahiaException.ERROR, JahiaException.SERVICE_ERROR); } return xmlDoc; } //-------------------------------------------------------------------------- private void saveFile(Document xmlDoc, String destinationFileName) throws JahiaException { try { xmlDoc.normalize(); // cleanup DOM tree a little TransformerFactory tfactory = TransformerFactory.newInstance(); // This creates a transformer that does a simple identity transform, // and thus can be used for all intents and purposes as a serializer. Transformer serializer = tfactory.newTransformer();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -