此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【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

解决方案 »

  1.   

    public void loadCatalogGenetic(String loadPathAliasName,RecordInfo recordInfo,
    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);

    }
    这段代码是我的源程序,我在调试的时候它竟然循环了很郁闷的!