package
com.nstc.safe.action;
import
java.io.BufferedReader;
import
java.io.ByteArrayOutputStream;
import
java.io.File;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.io.InputStream;
import
java.io.InputStreamReader;
import
java.io.OutputStream;
import
java.net.SocketException;
import
java.text.DateFormat;
import
java.text.SimpleDateFormat;
import
java.util.ArrayList;
import
java.util.Calendar;
import
java.util.Date;
import
java.util.HashSet;
import
java.util.Iterator;
import
java.util.List;
import
java.util.Set;
import
java.util.UUID;
import
javax.servlet.http.HttpServletRequest;
import
org.apache.commons.codec.net.URLCodec;
import
org.apache.commons.el.parser.ParseException;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
import
org.apache.commons.net.ftp.FTPClient;
import
org.apache.commons.net.ftp.FTPFile;
import
org.apache.commons.net.ftp.FTPReply;
import
com.nstc.safe.Config;
import
com.nstc.safe.domain.SafeErrorFile;
import
com.nstc.safe.domain.SafeReport;
import
com.nstc.safe.server.CommonServer;
import
com.nstc.safe.server.SafeServer;
import
com.nstc.safe.server.ServerLocator;
/**
* <p>
* Title:外管局错误文件查看
* </p>
*
* <p>
* Description:外管局文件下载Action层
* </p>
*
* <p>
* Company: 北京九恒星科技股份有限公司
* </p>
*
* @author zhangyongguang
*
* @since:2015年9月8日 09:48:34
*
* @version 1.0
*/
public
class
SAFE_U01_17
extends
ActionSupport {
private
static
final
Log log = LogFactory.getLog(SAFE_U01_17.
class
);
/**
* 由于Spring配置quartz在调用action的时候,对应server还没有注入到容器中,
* 所以需要这个action中注入对应server,并且commonServer在spring配置文件中要找得到对应bean,
* 并在commonServer对应的bean中继承事务控制tx
*
* commonServer的注入主要是针对work方法(定时任务方法)所用到的与后台交互的代码,
* */
private
CommonServer commonServer;
public
CommonServer getCommonServer() {
return
commonServer;
}
public
void
setCommonServer(CommonServer commonServer) {
this
.commonServer = commonServer;
}
/**
* 查询错误文件列表
*/
public
String execute(HttpServletRequest request) {
String errPath = request.getParameter(
"errorPath"
);
String start = request.getParameter(
"startDate"
);
String end = request.getParameter(
"endDate"
);
// 用于下拉选择框的值
List list = getLocator().getCommonServer().findAll(SafeErrorFile.
class
);
// 列表数据
List list2 = getLocator().getCommonServer().findAll(errPath, start,
end, SafeErrorFile.
class
);
//把list放入request对象中,在前台遍历
request.setAttribute(
"list"
, list);
request.setAttribute(
"list2"
, list2);
return
"page"
;
}
/**
* 查看XML文件内容,显示在前台的页面上
* @author zhangyonggguang
* @param request
* @param list
* @param id
* */
public
String viewXML(HttpServletRequest request) {
//接收前台传来的文件ID
String id = request.getParameter(
"errId"
);
SafeErrorFile sa =
new
SafeErrorFile();
//根据ID查询对应的文件
sa = (SafeErrorFile) getLocator().getCommonServer().findById(id,
SafeErrorFile.
class
);
//把查询的结果放入list集合中,
List list =
new
ArrayList();
list.add(sa);
//把list放入request对象中,在前台遍历
request.setAttribute(
"list"
, list);
return
"view"
;
}
/**
* 定时任务,定时读取FTP服务器的文件,做入库操作。
* @author zhangyongguang
* @exception Exception
* @date 2015-09-09 14:35:24
* @return page
* */
public
void
work()
throws
Exception {
System.out.println(
"自动任务执行"
+
new
Date());
//执行查询有多少个路径需要读取的方法,并存入set集合中,遍历set集合,取出有几个路径
Set set=findPath();
Iterator it =set.iterator();
while
(it.hasNext()){
//上传路径为配置文件配置的文件路径,与数据库的发送文件加路径组合而成,
String st=it.next().toString();
System.out.println(
"SET的值为"
+st);
listRemoteAllFiles(st);
}
}
/**
* @author zhangyongguang
* @param 查询FTP服务器有多少路径需要读取
* */
public
Set findPath(){
SafeReport sa=
new
SafeReport();
//定义set集合,去除重复的路径
Set set=
new
HashSet();
//查询safeReport所有数据
List list=commonServer.findAll(SafeReport.
class
);
for
(
int
i=
0
;i<list.size();i++){
//把list中的数据强转成safereport对象
sa=(SafeReport) list.get(i);
//判断sa.getRep_errmsg()里的值是否为空
if
(sa.getRep_errmsg()!=
null
&&!sa.getRep_errmsg().equals(
""
)){
//如果不为空,则存储到set集合中,如果有重复的值,则添加不进去
set.add(sa.getRep_errmsg().toString());
}
}
return
set;
}
/**
* @author zhangyongguang
* @param 链接FTP服务器的工具类
* @param ftpHost FTP主机服务器
* @param ftpPassword FTP 登录密码
* @param ftpUserName FTP登录用户名
* @param ftpPort FTP端口 默认为21
* @author zhangyongguang
* @throws Exception
*/
public
static
FTPClient getFTPClient()
throws
Exception {
String ip=Config.getProperty(
"IP"
);
int
port=Integer.parseInt(Config.getProperty(
"PORT"
));
String username=Config.getProperty(
"USERNAME"
);
|
Spring+Quartz实现定时从FTP服务器读取文件并存入Oracel数据库
最新推荐文章于 2022-06-25 23:46:51 发布