此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【LYH_927】截止到2008-07-24 09:56:02的历史汇总数据(不包括此帖):
发帖的总数量:0 发帖的总分数:0 每贴平均分数:0
回帖的总数量:0 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:---------------------结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
楼主【LYH_927】截止到2008-07-24 09:56:02的历史汇总数据(不包括此帖):
发帖的总数量:0 发帖的总分数:0 每贴平均分数:0
回帖的总数量:0 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:---------------------结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
解决方案 »
- 求教 JAVA中引用传递的问题?
- 给大家拜年了!问个MYySQL的left join 问题
- 高手来!先谢谢了,为什么webservice response的xml结构不一样啊?
- 程序部署问题
- 一个java 操作excel问题
- 请问在vc中能调用java的api吗
- JDBC访问oracle,为什么这样的语句不行:select t.*, '常量字符串' from my_table t?
- 寻求免费的电子政务系统源代码(jsp)急!!
- 这样的xml如何读取???
- 一个关于EJB返回值的解决方案,请大家对此方法的优缺点发表意见,跟贴者有分。。。
- Myeclipse6.0 快捷键有问题
- 一个关于xquery查询的问题,急!
List<RecordLoadPoint> loadpoints,List<Validatetable> allvalidates,TableType tabtype,
String subDocTypeBackupPath,ObjectOutputStream oos){
Long startTime = System.currentTimeMillis();
File xmlFile = new File(loadPathAliasName+File.separator+recordInfo.getFileName());
String filename = xmlFile.getName();System.out.println("==============================="+filename);
recordInfo.setFileName(filename);
log.debug("*****设置RecordInfo(一条记录的信息实体类)信息*****");
String tablename = tabtype.getTablename();
try {
Storageloadlog storageloadlog = new Storageloadlog();
storageloadlog.setLoadstarttime(new Date(System.currentTimeMillis()));//加载开始时间
XMLParser xmlParser = xmlReader.read(xmlFile);
List<Node> records = xmlParser.getAllRecord("record");
Iterator<Node> recordIt = records.iterator();
List<RecordLoadPoint> pointlist= new ArrayList<RecordLoadPoint>();
int point = 0;
//int action = 0;为了标记文件加载动作,预留,待客户确定后修改;
while (recordIt.hasNext()) {//循环加载解析xml文件中每条数据记录;
//以记录的分割标签截取整个记录然后生成xml文件放入oracle到blob字段中
Node node = (Node) recordIt.next();
Record record = new Record(recordInfo);
String keyTagName = tabtype.getKeytagname();
Node metanode = node.selectSingleNode("child::*[local-name()='metadata']");
if(metanode==null)
{
System.out.println("该条记录没有元数据!");
}
else{
String urnText = metanode.selectSingleNode(
"child::*[local-name()='" + keyTagName + "']").getText().trim();
recordInfo.setUrnValue(urnText);
//解析xml数据结点
RecordLoadPoint loadPoint = null;
if(loadpoints!=null){
for(int m = 0;m<loadpoints.size();m++){
loadPoint = (RecordLoadPoint)loadpoints.get(m);
if(recordInfo.getUrnValue().equals(loadPoint.getUrn())){
point++;//验证该条记录已被加载;
break;
}
else
{
point = 0;
}
}
}
if(point==0)//表示该记录节点没有被加载过
{
/** 此处的action值表示该条记录是增、删、改
* 根据具体情况,此动作由记录中的标签决定还是由文件决定
* header 表示xml中标签名称,指明了action动作
*/
int action = 0;
/**获取记录的head节点**/
Node headerNode = node.selectSingleNode(
"child::*[local-name()='header']");
/**该节点属性标明了该条记录的动作是:删除.还是更新(更新包括增加和修改)**/
String status = xmlParser.getNodeAttribute(headerNode, "status").getText().trim();
if(status.equals("deletion")){
action = 1;
}
else {
action = 3;
}
recordInfo.setAction(action);
/**确定该记录的存储动作是删除还是更新(并检测确定该记录的动作是增还是修改)**/
int flag = 0;
if(tabtype.getTabtype()==0){//表示是来自联编母体
record = xmlParser.parseGeneraticNode(node, record,allvalidates);
flag = metadataBO.saveGeneraticRecord(record,tabtype, action);
}
else//来自联编登到
{
record = xmlParser.parseLoginNode(node, record, allvalidates);
flag = metadataBO.saveRegisterRecord(record,tabtype, action);
}
// 存储解析出来的记录
/** *********************记录对一个XML文件的加载日志并存储************ */
log.debug("*****记录对一个XML文件的加载日志并存储*****");
storageloadlog.setLoadInfo(flag);//统计记录加载结果
// 对于加载点的处理
RecordLoadPoint recordLoadPoint = new
RecordLoadPoint(xmlFile.getName(),urnText,flag); // 记录存储点 即已经存储到了哪个文件的哪条记录
pointlist.add(recordLoadPoint);
oos.writeObject(pointlist);
oos.flush();
}
/************************** */
}
}
/** *********************记录对一个XML文件的加载日志并存储************ */
log.debug("*****记录对一个XML文件的加载日志并存储****");
storageloadlog.setFilename(xmlFile.getName());
storageloadlog.setDatatotal(records.size());
storageloadlog.setOaiprovider(0);
storageloadlog.setLoadendtime(new Date(System.currentTimeMillis()));
storageloadlogDAO.save(storageloadlog);
/** ********************************** */
// FileUtil.moveFile(xmlFile.getAbsolutePath(),
// subDocTypeBackupPath);
Long endTime = System.currentTimeMillis();
log.info("加载所需时间为 :" + (endTime - startTime) + " 毫秒");
System.out.println("加载所需时间为 :" + (endTime - startTime)
+ " 毫秒");
if (oos != null)
oos.close();
FileUtil.delFile(recordLoadPointFileName);
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//文件加载完成后;备份转储
FileUtil.moveFile(loadPathAliasName+File.separator+xmlFile.getName(),subDocTypeBackupPath);
}
这段代码是我的源程序,我在调试的时候它竟然循环了很郁闷的!