/** * */ package com.taobao.top.analysis.node.io; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.URL; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.taobao.top.analysis.node.job.JobTask; import com.taobao.top.analysis.node.job.JobTaskExecuteInfo; /** * 文件输入适配器 * * @author fangweng * @Email fangweng@taobao.com * 2011-11-25 * */ public class FileInputAdaptor implements IInputAdaptor { private static final Log logger = LogFactory.getLog(FileInputAdaptor.class); @Override public InputStream getInputFormJob(JobTask jobtask, JobTaskExecuteInfo taskExecuteInfo) { try { String input = jobtask.getInput(); if (input.indexOf("file:") >= 0) input = input.substring("file:".length()); File file = new File(input); URL fileResource = null; if (!file.exists()) { fileResource = ClassLoader.getSystemResource(input); if (fileResource == null) throw new java.io.FileNotFoundException("Job resource not exist,file : " + input); else logger.warn("load resource form classpath :" + fileResource.getFile()); } else { if (file.isDirectory()) throw new java.io.FileNotFoundException("Job resource is directory,file : " + input); } if (fileResource == null) return new FileInputStream(file); else return fileResource.openStream(); } catch (Throwable e) { logger.error("job get input error:" + jobtask.getJobName() + "," + jobtask.getInput(), e); } return null; } @Override public boolean ignore(String input) { if (input.indexOf(":") < 0) return false; else return input.indexOf("file:") < 0; } }