All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.jiangzeyin.common.FileResourceLoader Maven / Gradle / Ivy

package cn.jiangzeyin.common;

import cn.jiangzeyin.system.SystemBean;
import cn.jiangzeyin.system.log.SystemLog;
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 java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

/**
 * @author jiangzeyin
 * Created by jiangzeyin on 2017/1/5.
 */
public class FileResourceLoader extends ResourceLoader {
    private static final Map fileLastModified = new HashMap<>();

    @Override
    public void init(ExtendedProperties configuration) {

    }

    @Override
    public InputStream getResourceStream(String source) throws ResourceNotFoundException {
        File file = null;
        try {
            file = getResourceFile(source);
            return new FileInputStream(file);
        } catch (FileNotFoundException e) {
            SystemLog.LOG().info("FileNotFoundException:" + source + "  " + file.getPath());
            return this.getClass().getResourceAsStream(source);
        } finally {
            if (file != null)
                fileLastModified.put(source, file.lastModified());
        }
    }

    @Override
    public boolean isSourceModified(Resource resource) {
        long lastModified = resource.getLastModified();
        File file = getResourceFile(resource.getName());
        return lastModified != file.lastModified();
    }

    @Override
    public long getLastModified(Resource resource) {
        return fileLastModified.get(resource.getName());
    }

    private File getResourceFile(String name) {
        return new File(String.format("%s/%s", SystemBean.getInstance().VelocityPath, name));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy