org.jopendocument.dom.template.engine.DataModel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jOpenDocument Show documentation
Show all versions of jOpenDocument Show documentation
jOpenDocument is a free library for developers looking to use
Open Document files without OpenOffice.org.
The newest version!
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 2008-2013 jOpenDocument, by ILM Informatique. All rights reserved.
*
* The contents of this file are subject to the terms of the GNU
* General Public License Version 3 only ("GPL").
* You may not use this file except in compliance with the License.
* You can obtain a copy of the License at http://www.gnu.org/licenses/gpl-3.0.html
* See the License for the specific language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each file.
*
*/
package org.jopendocument.dom.template.engine;
import org.jopendocument.dom.template.TemplateException;
import java.util.Map;
public abstract class DataModel {
public abstract void put(String name, Object value);
/**
* Copies all of the mappings from the specified map to this. This implementation simply calls
* {@link #put(String,Object) put(k, v)} once for each entry in the specified map.
*
* @param toMerge mappings to be stored.
*/
public void putAll(Map toMerge) {
for (final Map.Entry e : toMerge.entrySet()) {
this.put(e.getKey(), e.getValue());
}
}
protected abstract Object _eval(String expression) throws Exception;
public final Object eval(String expression) throws TemplateException {
try {
return this._eval(expression);
} catch (Throwable t) {
throw new TemplateException("invalid expression: \"" + expression + "\"", t);
}
}
/**
* Copy this engine and especially its bindings.
*
* @return an independant copy of this.
*/
public abstract DataModel copy();
}