| /* |
| * Copyright (C) 2010 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.clearsilver; |
| |
| import java.io.Closeable; |
| import java.io.IOException; |
| import java.util.Date; |
| import java.util.TimeZone; |
| |
| /** |
| * This interface establishes the API for an HDF data structure used by |
| * Clearsilver templates when rendering content. |
| */ |
| public interface HDF extends Closeable { |
| |
| /** |
| * Clean up CS object state. |
| */ |
| void close(); |
| |
| /** |
| * Loads the contents of the specified HDF file from disk into the current |
| * HDF object. The loaded contents are merged with the existing contents. |
| */ |
| boolean readFile(String filename) throws IOException; |
| |
| /** |
| * Get the file loader in use, if any. |
| * @return the file loader in use. |
| */ |
| CSFileLoader getFileLoader(); |
| |
| /** |
| * Set the CS file loader to use |
| * @param fileLoader the file loader that should be used. |
| */ |
| void setFileLoader(CSFileLoader fileLoader); |
| |
| /** |
| * Serializes HDF contents to a file (readable by readFile) |
| */ |
| boolean writeFile(String filename) throws IOException; |
| |
| /** |
| * Parses/loads the contents of the given string as HDF into the current |
| * HDF object. The loaded contents are merged with the existing contents. |
| */ |
| boolean readString(String data); |
| |
| /** |
| * Serializes HDF contents to a string (readable by readString) |
| */ |
| String writeString(); |
| |
| /** |
| * Retrieves the integer value at the specified path in this HDF node's |
| * subtree. If the value does not exist, or cannot be converted to an |
| * integer, default_value will be returned. |
| */ |
| int getIntValue(String hdfName, int defaultValue); |
| |
| /** |
| * Retrieves the value at the specified path in this HDF node's subtree. |
| */ |
| String getValue(String hdfName, String defaultValue); |
| |
| /** |
| * Sets the value at the specified path in this HDF node's subtree. |
| */ |
| void setValue(String hdfName, String value); |
| |
| /** |
| * Remove the specified subtree. |
| */ |
| void removeTree(String hdfName); |
| |
| /** |
| * Links the src hdf name to the dest. |
| */ |
| void setSymLink(String hdfNameSrc, String hdfNameDest); |
| |
| /** |
| * Export a date to a clearsilver tree using a specified timezone |
| */ |
| void exportDate(String hdfName, TimeZone timeZone, Date date); |
| |
| /** |
| * Export a date to a clearsilver tree using a specified timezone |
| */ |
| void exportDate(String hdfName, String tz, int tt); |
| |
| /** |
| * Retrieves the HDF object that is the root of the subtree at hdfpath, or |
| * null if no object exists at that path. |
| */ |
| HDF getObj(String hdfpath); |
| |
| /** |
| * Retrieves the HDF for the first child of the root of the subtree |
| * at hdfpath, or null if no child exists of that path or if the |
| * path doesn't exist. |
| */ |
| HDF getChild(String hdfpath); |
| |
| /** |
| * Return the root of the tree where the current node lies. If the |
| * current node is the root, return this. Implementations may not |
| * necessarily return the same instance of {@code HDF} every time. |
| * Use {@link #belongsToSameRoot(HDF)} to check if two {@code HDF}s |
| * belong to the same root. |
| */ |
| HDF getRootObj(); |
| |
| /** |
| * Checks if the given hdf object belongs to the same root HDF object |
| * as this one. |
| * |
| * @param hdf The hdf object to compare to. |
| * @throws IllegalArgumentException If the supplied hdf object is from |
| * a different implementation (e.g. mixing JNI and jsilver). |
| */ |
| boolean belongsToSameRoot(HDF hdf); |
| |
| /** |
| * Retrieves the HDF object that is the root of the subtree at |
| * hdfpath, create the subtree if it doesn't exist |
| */ |
| HDF getOrCreateObj(String hdfpath); |
| |
| /** |
| * Returns the name of this HDF node. The root node has no name, so |
| * calling this on the root node will return null. |
| */ |
| String objName(); |
| |
| /** |
| * Returns the value of this HDF node, or null if this node has no value. |
| * Every node in the tree can have a value, a child, and a next peer. |
| */ |
| String objValue(); |
| |
| /** |
| * Returns the child of this HDF node, or null if there is no child. |
| * Use this in conjunction with objNext to walk the HDF tree. Every node |
| * in the tree can have a value, a child, and a next peer. |
| */ |
| HDF objChild(); |
| |
| /** |
| * Returns the child of this HDF node, or null if there is no child. |
| * Use this in conjunction with objNext to walk the HDF tree. Every node |
| * in the tree can have a value, a child, and a next peer. |
| */ |
| HDF objNext(); |
| |
| /** |
| * Deep copy of the contents of the source HDF structure to this HDF |
| * starting at the specified HDF path node. |
| * <p> |
| * This method copies over the attributes and value of the node and recurses |
| * through all the children of the source node. Any symlink in the source |
| * node becomes a symlink in the copy. |
| * <p> |
| * @param hdfpath the node within this HDF where the source structure should |
| * be copied to. |
| * @param src the source HDF to copy over. |
| */ |
| void copy(String hdfpath, HDF src); |
| |
| /** |
| * Generates a string representing the content of the HDF tree rooted at |
| * this node. |
| */ |
| String dump(); |
| } |
| |