为什么80%的码农都做不了架构师?>>>   hot3.png

mport lotus.domino.*;
import java.util.Properties;
import java.util.Vector;
import java.sql.*;
import java.io.*;
import pde.dao.ConnectDB;
import pde.FtpUpfile;

public class ExportNotesData {
InitConfig initconfig = null ;
    ConnectDB connectDB = null ;
    Session LotusSession = null ;
    Database db = null ;
    View view = null ;
    Document doc = null ;
String I_STORAGEID = "" ;
    String TblID = "" ;
    String AmsFields = "" ;
    String AmsFieldValues = "" ;
    String RecID = "" ;
    String C_YWID = "" ;
    String IdeaGUIDFileName = "";
    String tmpFilePath = System.getProperty("user.dir")+" \\tempFiles\\" ;
    int YWIndex = 0 ;
    FtpUpfile ftpUpfile = null ;

    public static void main(String[] args)
    {
        ExportNotesData eNotesData = new ExportNotesData();
}
public ExportNotesData()
    {
        initconfig = new InitConfig();
        int ExpRecCount = 0 ;
        try
        {
System.out.println(tmpFilePath) ;
            java.io.File myFilePath = new java.io.File(tmpFilePath);
            if (!myFilePath.exists()) {
                myFilePath.mkdir();
            }
ftpUpfile = new FtpUpfile(initconfig.FTPServer, Integer.parseInt(initconfig.FTPPort), initconfig.FTPUser, initconfig.FTPPwd) ;
            ftpUpfile.login() ;
            connectDB = new ConnectDB(initconfig.DBDriverClass, initconfig.DBDriverUrl,
                                      initconfig.DBUser, initconfig.DBPassword) ;
            TblID = connectDB.getFieldValue("SYS_TBL", "ID", "where C_TYPE = 'USET' and C_TBLNAME = '"+initconfig.DBTable+"'") ;
            I_STORAGEID = connectDB.getFieldValue("sys_ftp_http", "ID", "where i_default = 1") ;
            LotusSession = getSession(initconfig.LotusServer, initconfig.LotusDIIOPPort,
                                      initconfig.LotusUser, initconfig.LotusPwd);
            System.out.println(LotusSession+":"+initconfig.LotusServer+":"+initconfig.LotusUser) ;

db = LotusSession.getDatabase(initconfig.LotusServer, initconfig.LotusDataBase);
            view = db.getView(initconfig.LotusView) ;
            Document doc = view.getFirstDocument();
            Item uitem = null;
            while (doc != null)
            {
                AmsFields = "" ;
                AmsFieldValues = "" ;
                C_YWID = connectDB.getCreateGUID() ;
                ExpRecCount += 1 ;
                YWIndex = 0 ;
                RecID = (connectDB.getMaxID(initconfig.DBTable) + 1) +"" ;
                System.out.println("导出记录数: "+ExpRecCount+"-----------DB记录ID: "+RecID+"---------") ;
                String IdeaFileName =  "意见列表.html" ;
                IdeaGUIDFileName = getGUIDFileName(IdeaFileName) ;
                Vector AllItems = doc.getItems();      //获得域名
                for (int i =0 ; i < AllItems.size(); i++)
                {
                    uitem = (Item)AllItems.get(i) ;
                    ProcesItems(doc, uitem) ;
                }
                AmsFields = AmsFields + "原文数量,C_YWID" ;
                AmsFieldValues = AmsFieldValues + YWIndex +",'"+C_YWID+"'" ;
                connectDB.SaveInfo("\""+initconfig.DBTable+"\"", AmsFields, AmsFieldValues) ;
                ftpUpfile.ftpclient.ascii(); //上传完文件必须执行
                doc = view.getNextDocument(doc);
            }
            connectDB.CloseCon() ;
            ftpUpfile.logout() ;
        }
        catch(Exception e)
        {
            e.printStackTrace() ;
        }

}

//连接远程主机
    public Session getSession(String sip,String port, String username,String password)
    {
        lotus.domino.Session s;
        String sior;
        try
        {
            sior = NotesFactory.getIOR(sip+":"+port);
            s = NotesFactory.createSessionWithIOR(sior, username, password);
        }
        catch (Exception ex)
        {
            s = null;
        }
        return s;
    }

public void ProcesItems(Document doc, Item uitem)
    {
        RichTextItem ruitem = null;
        try
        {
            String itemName = uitem.toString() ;
            int itemType = uitem.getType() ;
            String itemValue = "" ;

switch(itemType) {
               case Item.TEXT:         //1280
               {
                       int itemIndex = initconfig.LotusFields.indexOf(itemName) ;    //判断是否是要导的域
                       if (itemIndex > -1)
                       {
                           if (doc.getItemValue(itemName).size() > 0)
                               itemValue = ObjToStr(doc.getItemValue(itemName).get(0)) ;
                           String uAmsField = ObjToStr(initconfig.FieldAttrs.get(itemName)) ;
                           AmsFields += uAmsField+"," ;
                           AmsFieldValues += "'"+itemValue+"',";
                       }
                       break;
               }
               case Item.RICHTEXT:     //1
               {
                    ProcesRichTextItem(doc, uitem) ;
                    break;
               }
               default:
               {
                    break;
               }
            }
        }
        catch(Exception e)
        {
            e.printStackTrace() ;
        }

}

public void  ProcesRichTextItem(Document doc, Item uitem)
    {
        try
        {
            EmbeddedObject eo = null;
            java.io.InputStream is = null;
            RichTextItem ruitem = (RichTextItem)uitem ;

if (uitem.toString().equals("RCover"))
            {
                RichTextNavigator rtnav = ruitem.createNavigator() ;
                if (rtnav.getFirstElement(RichTextItem.RTELEM_TYPE_DOCLINK) != null)
                {
                    do
                    {
                          Document uDoc = getLinkDocument(rtnav) ;
                          Item uUitem = null;
                          Vector uAllItems = uDoc.getItems();      //获得域名
                          for (int i =0 ; i < uAllItems.size(); i++)
                          {
                              uUitem = (Item)uAllItems.get(i) ;
                              ProcesChildItems(uDoc, uUitem) ;
                          }
                          String uFormName = uDoc.getItemValueString("Form") ;
                          String uDocID = uDoc.getUniversalID() ;
                          String uDate = "to_date('"+connectDB.getCurrentDate()+"','yyyy-MM-dd HH24:mi:ss')" ;
                          String uValues = "'"+C_YWID+"', '"+uFormName+"', '"+uDocID+"', "+uDate ;
                          connectDB.SaveInfo("OA_IMPDOCIDS", "YWID,FORMNAME,DOCID,IMPDATETIME", uValues) ;
                    }
                    while(rtnav.findNextElement()) ;
                }
                else
                    System.out.println("没有doclink 在 RCover") ;
            }

}
        catch(Exception e)
        {
            e.printStackTrace() ;
        }
    }

/*
     *
    */
    public void ProcesChildItems(Document doc, Item uitem)
    {
        try
        {
            String itemName = uitem.toString() ;
            int itemType = uitem.getType() ;
            String itemValue = "" ;

switch(itemType) {

case Item.TEXT:         //1280
               {
                       if (doc.getItemValue(itemName) != null && doc.getItemValue(itemName).size() > 0)
                       {
                           itemValue = ObjToStr(doc.getItemValue(itemName).get(0)) ;
                           //判断是否是流程跟踪
                           int itemIndex = initconfig.LotusFlowTrackFields.indexOf(itemName) ;
                           if (itemIndex > -1)
                           {
                               if (!itemValue.trim().equals(""))
                               {
                                   SaveFlowTrack(itemValue) ;
                               }
                           }
                           else if (!itemName.equals("TDispInnerUsers") && !itemName.equals("sManuTemplateFields"))   //判断不写入的域
                           {
                               String uValues = "'"+C_YWID+"', '"+itemName+"', '"+itemValue+"', 1" ;
                               connectDB.SaveInfo("OA_IMPDOCCONTENTS", "YWID, FIELDNAME, FIELDVALUE, IORDER", uValues) ;
                           }
                       }
                       break;
               }
               case Item.RICHTEXT:     //1
               {
                    ProcesChildRichTextItem(doc, uitem) ;
                    break;
               }
               default:
               {
                    break;
               }
            }
        }
        catch(Exception e)
        {
            e.printStackTrace() ;
        }

}

public void  ProcesChildRichTextItem(Document doc, Item uitem)
    {
        try
        {
            EmbeddedObject eo = null;
            java.io.InputStream is = null;
            RichTextItem ruitem = (RichTextItem)uitem ;
            if ( ruitem.getEmbeddedObjects().size() > 0)
            {
                String YWName = ruitem.getText().substring(3) ;
                eo = doc.getAttachment(YWName);
                 if(eo != null)
                 {
                     is = eo.getInputStream();
                     String YWSize = eo.getFileSize()+"";
                     if(is.available()>0) {
                            String YWType = getYWType(ruitem.toString()) ;
                            String UpLoadDate = "to_date('"+connectDB.getCurrentDate()+"','yyyy-MM-dd HH24:mi:ss')" ;
                            String UpLoadMan = "中软OA" ;
                            String uGUIDFileName = getGUIDFileName(YWName) ;
                            String YWFields = "C_YWID,C_TYPE,C_FILENAME,F_SIZE,C_UPLOADEMP,C_UPLOADDATE,I_STORAGEID,C_GUIDNAME,I_ORDER" ;
                            String YWValues = "'"+C_YWID+"','"+YWType+"','"+YWName+"','"+YWSize+"','"+UpLoadMan+"',"+UpLoadDate+",'"+I_STORAGEID+"','"+uGUIDFileName+"',"+YWIndex ;
                            connectDB.SaveInfo("SYS_LINK", YWFields, YWValues) ;
                            ftpUpfile.upFile(is, getFTPPath()+uGUIDFileName) ;
                            is.close() ;
                            YWIndex += 1 ;
                            if (ruitem.toString().equals("zwnr"))
                            {
                                String luFile = tmpFilePath+YWName ;
                                eo.extractFile(luFile) ;
                                RemoveDocTag(luFile) ;
                                File file = new File(luFile) ;
                                if (file.exists())
                                {
                                    YWSize = file.length()+"" ;
                                    YWType = "正文" ;
                                    uGUIDFileName = getGUIDFileName(YWName) ;
                                    UpLoadDate = "to_date('"+connectDB.getCurrentDate()+"','yyyy-MM-dd HH24:mi:ss')" ;
YWFields = "C_YWID,C_TYPE,C_FILENAME,F_SIZE,C_UPLOADEMP,C_UPLOADDATE,I_STORAGEID,C_GUIDNAME,I_ORDER" ;
                                    YWValues = "'"+C_YWID+"','"+YWType+"','"+uGUIDFileName+"','"+YWSize+"','"+UpLoadMan+"',"+UpLoadDate+",'"+I_STORAGEID+"','"+uGUIDFileName+"',"+YWIndex ;
                                    connectDB.SaveInfo("SYS_LINK", YWFields, YWValues) ;
                                    ftpUpfile.upFile(tmpFilePath+YWName, getFTPPath()+uGUIDFileName) ;
                                    YWIndex += 1 ;
                                    //file.delete() ;
                                }
}
}
                 }
            }
        }
        catch(Exception e)
        {
            e.printStackTrace() ;
        }
    }

    public void SaveFlowTrack(String FlowTrack)
    {
        try
        {
            String YWType = "流程跟踪" ;
            String YWName = "流程跟踪.html" ;
            String UpLoadMan = "中软OA" ;
            String UpLoadDate = "to_date('"+connectDB.getCurrentDate()+"','yyyy-MM-dd HH24:mi:ss')" ;
            String uGUIDFileName = getGUIDFileName(YWName) ;
            String YWFields = "C_YWID,C_TYPE,C_FILENAME,F_SIZE,C_UPLOADEMP,C_UPLOADDATE,I_STORAGEID,C_GUIDNAME,I_ORDER" ;
            String YWValues = "'"+C_YWID+"','"+YWType+"','"+uGUIDFileName+"','100','"+UpLoadMan+"',"+UpLoadDate+",'"+I_STORAGEID+"','"+uGUIDFileName+"',"+YWIndex ;
            File file = new File(tmpFilePath+YWName) ;
            if (!file.exists())
                file.createNewFile();
PrintWriter IdeaPrint = new PrintWriter(new FileWriter(tmpFilePath+YWName, true)) ;
            IdeaPrint.write(FlowTrack) ;
            IdeaPrint.close() ;
            connectDB.SaveInfo("SYS_LINK", YWFields, YWValues) ;
ftpUpfile.upFile(tmpFilePath+YWName, getFTPPath()+uGUIDFileName) ;
            file.delete() ;
            YWIndex += 1 ;
        }
        catch(Exception e)
        {
            e.printStackTrace() ;
        }
    }

    public void DeleteFile(String uFile)
    {
        try
        {
            File file = new File(uFile) ;
            if (file.exists())
            {
               file.delete() ;
            }
        }
        catch(Exception e)
        {
            e.printStackTrace() ;
        }
    }

    public String getGUIDFileName(String YWName)
    {
        try
        {
             String uFileExt = YWName.substring(YWName.lastIndexOf(".")+1, YWName.length()) ;
             String myGUID = connectDB.getCreateGUID() ;
             int tmpInt = Integer.parseInt(RecID) / 2000 + 1 ;
             String uGUIDNAME = myGUID+"_"+RecID+"_"+TblID+"_"+tmpInt+"."+uFileExt ;
             return uGUIDNAME ;
        }
        catch(Exception e)
        {
            e.printStackTrace() ;
            return "" ;
        }
    }

    public String getNoPathGUIDFileName(String YWName)
    {
        try
        {
             String uFileExt = YWName.substring(YWName.lastIndexOf(".")+1, YWName.length()) ;
             String myGUID = connectDB.getCreateGUID() ;
             String uGUIDNAME = myGUID+"."+uFileExt ;
             return uGUIDNAME ;
        }
        catch(Exception e)
        {
            e.printStackTrace() ;
            return "" ;
        }
    }

    public String getFTPPath()
    {
        try
        {
             int tmpInt = Integer.parseInt(RecID) / 2000 + 1 ;
             String uFtpPath = "/"+TblID+"/"+tmpInt+"/" ;
             return uFtpPath ;
        }
        catch(Exception e)
        {
            e.printStackTrace() ;
            return "" ;
        }
    }
public String getYWType(String itemName)
    {
        String YWType = "" ;
        if (itemName.equals("zwdg"))  YWType = "底稿" ;
        if (itemName.equals("zwnr"))  YWType = "定稿" ;
        if (itemName.startsWith("fjnr"))  YWType = "附件" ;
        return YWType ;
    }
public String ObjToStr(Object obj)
    {
        String s = "" ;
        if (obj != null)
           s = obj.toString() ;
        return s ;
    }
public void RemoveDocTag(String filePath)
    {
Runtime rt=Runtime.getRuntime();
        try
        {
            rt.exec("RemoveDocTag.exe "+filePath);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
}
}

转载于:https://my.oschina.net/mellen/blog/124890

java 访问Domino LOtus 数据库相关推荐

  1. [Domino]Java访问Domino必需配置的服务器设置

    [Domino]Java访问Domino必需配置的服务器设置 编写者<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com ...

  2. java访问domino数据库_关于Java与Domino数据库之间的操作

    关于Java与Domino数据库之间的操作 如果想使用Domino作为开发的DB,必须在Domino服务器端手动配置以下信息. 首先,我们需要使用DIIOP(具体是什么还不太清楚,暂时可以理解成用于运 ...

  3. java访问domino数据库_怎样实现Java远程访问Domino数据库

    Java远程访问Domino数据库推荐采用CORBA实现,但配置非常关键,笔者在工作中也遇到了这个问题,在查阅资料的过程中发现,很多文章明显存在一些误区或者说没有写清楚的地方,现将笔者的实践经验总结出 ...

  4. java 访问 domino_Java远程访问Domino数据库

    Lotus Domino/Notes是目前很流行的.跨平台的文档数据库系统和电子邮件系统,而Java和J2EE技术也是目前广泛使用的开发技术,因此在很多场合,不可避免地要涉及到Java远程访问Domi ...

  5. Lotus的JAVA与DOMINO通过LDAP集成方法

    Lotus的JAVA与DOMINO通过LDAP集成方法! JAVA, DOMINO, Lotus, LDAP 摘要:LDAP是标准轻量目录访问协议(Lightweight Directory Acce ...

  6. java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...

    之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...

  7. Java案例:利用JDBC访问SQL Server数据库

    Java案例:利用JDBC访问SQL Server数据库 1.以sa为登录名连接数据库服务器 2.附加选课数据库Xk,如下图所示: 3.启动Eclipse,创建Java项目TestDB

  8. 通过Java访问数据库---JDBC

    一.JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java ...

  9. java php同时访问数据库,Java Spring中同时访问多种不同数据库的代码实例分享

    开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中.使用Spring框架时,使用单一数据库是非常容易的,但如果要同时 ...

  10. Java Spring中同时访问多种不同数据库

    开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中.使用Spring框架时,使用单一数据库是非常容易的,但如果要同时 ...

最新文章

  1. shopnc 支持 支付宝快捷登陆 shopnc权限验证原理说明
  2. java修改动态视频,直播视频app源码,动态修改cron
  3. php ajax轮询推送,[PHP]PHP+AJAX实现轮询代码
  4. 有监督回归:最小二乘学习法
  5. Allegro光绘的导出
  6. [leetcode] 5.最长回文子串
  7. 使用SAP ABAP 事物码 ST12 研究 SAP CRM 产品搜索的性能 - product search性能
  8. 提的最多的数据库“索引”,先来简单了解一下
  9. docker-compose(入门,与docker的区别)
  10. 找回Google Reader丢失的笔记(notes)
  11. jmeter mysql数据库_jmeter连接mysql数据库
  12. 在 iPhone 中设置 APP 限制使用时间的方法
  13. 《数据科学:R语言实现》—— 第1章 R中的函数 1.1 引言
  14. [Unity 3D] Unity 3D 性能优化(二)
  15. linux tar解压bin文件,linux下 tar解压 gz解压 bz2等各种解压文件使用方法
  16. 安卓手机上超好用的4款C语言IDE(附下载地址)
  17. 奶奶常说,黑白照片看的不清晰,还好我会Python,分分钟给她变成彩色的~
  18. java课设超市收银系统_超市收银系统java课程设计.doc
  19. PostgreSQL创建、连接企业型地理数据库
  20. Phpstudy简介与使用教程

热门文章

  1. Beanutils基本用法
  2. http://www.duilib.cc
  3. win8蓝屏错误代码DPC_WATCHDOG_VIOLATION您的电脑遇到错误需要重启修复
  4. 表单和ajax中的post请求后台获取数据方法
  5. 零基础逆向工程11_C语言05_结构体
  6. 用C#,SQL Server编写的音乐播放软件
  7. 卡特兰数,高精度卡特兰数
  8. [导入]+ADO.NET读书笔记系列 一+
  9. Series的idxmax和argmax
  10. java如何检测redis是否可用