/*
* Copyright (c) 2012 Fraunhofer IGD
*
* All rights reserved. This program and the accompanying materials are made
* available under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution. If not, see <http://www.gnu.org/licenses/>.
*
* Contributors:
* Fraunhofer IGD
*/
package eu.esdihumboldt.hale.io.xslt.internal;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.collections.ExtendedProperties;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.runtime.resource.Resource;
import org.apache.velocity.runtime.resource.loader.ResourceLoader;
import com.google.common.io.ByteSource;
import com.google.common.io.Files;
/**
* The main XSLT templates.
*
* @author Simon Templer
*/
public class Templates extends ResourceLoader {
/**
* The root template containing the
*/
public static final String ROOT = "transform.xsl";
/**
* Copy the main templates to the given template folder.
*
* @param templateFolder the template folder
* @throws IOException if copying the templates fails
*/
public static void copyTemplates(File templateFolder) throws IOException {
copyTemplate(templateFolder, ROOT);
}
/**
* Copy a template to the given target folder.
*
* @param targetFolder the target folder
* @param templateFileName the template file name, must lie next to the
* {@link Templates} class
* @throws IOException if copying the template fails
*/
private static void copyTemplate(final File targetFolder, final String templateFileName)
throws IOException {
new ByteSource() {
@Override
public InputStream openStream() throws IOException {
return Templates.class.getResourceAsStream(templateFileName);
}
}.copyTo(Files.asByteSink(new File(targetFolder, templateFileName)));
}
@Override
public InputStream getResourceStream(String source) throws ResourceNotFoundException {
try {
return Templates.class.getResourceAsStream(source);
} catch (Exception e) {
throw new ResourceNotFoundException(e);
}
}
@Override
public boolean isSourceModified(Resource resource) {
return false;
}
@Override
public long getLastModified(Resource resource) {
return 0;
}
@Override
public void init(ExtendedProperties configuration) {
// do nothing
}
}