乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Java 調(diào)用svnkit實(shí)現(xiàn)svn功能

       hmtomyang 2012-04-19

      ·         顯示版本樹

       

       

       導(dǎo)入jar包

      svnkit.jar添加到項(xiàng)目中,用于實(shí)現(xiàn)svn功能。 jackson-all-1.6.2.jar添加到項(xiàng)目中,用于顯示樹列表。把javaee.ar添加到項(xiàng)目中。

      新建一個(gè)類(SVNUtil.class)實(shí)現(xiàn)svn功能

               private String svnRoot;

          private String userName;

          private String password;

          private SVNRepository repository;

         

          /***

           * 構(gòu)造方法

           * @param svnRoot

           *             svn根目錄

           */

          public SVNUtil(String svnRoot) {

             this.svnRoot=svnRoot;

          }

          /***

           * 構(gòu)造方法

           * @param svnRoot

           *             svn根目錄

           * @param userName

           *             登錄用戶名

           * @param password

           *             登錄密碼

           */

          public SVNUtil(String svnRoot, String userName, String password) {

             this.svnRoot=svnRoot;

             this.userName=userName;

             this.password=password;

          }

      /***

           * 通過不同的協(xié)議初始化版本庫

           */

          private static void setupLibrary() {

             // 對于使用http://https//

             DAVRepositoryFactory.setup();

             //對于使用svn/ /svn+xxx/ /

             SVNRepositoryFactoryImpl.setup();

             //對于使用file://

             FSRepositoryFactory.setup();

      }

      每次連接庫都進(jìn)行登陸驗(yàn)證

          /***

           * 登錄驗(yàn)證

           * @return

           */

          public boolean login(){

             setupLibrary();

             try{

                 //創(chuàng)建庫連接

                 repository=SVNRepositoryFactory.create(SVNURL.parseURIEncoded(this.svnRoot));

                 //身份驗(yàn)證

                 ISVNAuthenticationManager authManager = SVNWCUtil

                 .createDefaultAuthenticationManager(this.userName,

                        this.password);

                 //創(chuàng)建身份驗(yàn)證管理器

                 repository.setAuthenticationManager(authManager);

                 return true;

             } catch(SVNException svne){

                 svne.printStackTrace();

                 return false;

             }

          }

      下面的方法實(shí)現(xiàn)查詢給定路徑下的條目列表功能

      /***

           *

           * @param path

           * @return 查詢給定路徑下的條目列表

           * @throws SVNException

           */

          @SuppressWarnings("rawtypes")

          public List<SVN> listEntries(String path)

                 throws SVNException {

             Collection entries = repository.getDir(path, -1, null,

                    (Collection) null);

             Iterator iterator = entries.iterator();

             List<SVN> svns = new ArrayList<SVN>();

             while (iterator.hasNext()) {

                 SVNDirEntry entry = (SVNDirEntry) iterator.next();

                 SVN svn = new SVN();

                 svn.setCommitMessage(entry.getCommitMessage());

                 svn.setDate(entry.getDate());

                 svn.setKind(entry.getKind().toString());

                 svn.setName(entry.getName());

                 svn.setRepositoryRoot(entry.getRepositoryRoot().toString());

                 svn.setRevision(entry.getRevision());

                 svn.setSize(entry.getSize()/1024);

                 svn.setUrl(path.equals("") ? "/"+entry.getName() : path + "/"+entry.getName());

                 svn.setAuthor(entry.getAuthor());

                 svn.setState(svn.getKind() == "file"?null:"closed");

                 svns.add(svn);

             }

      新建一個(gè)SVNServlet

      添加一個(gè)方法用于把java對象轉(zhuǎn)換為json字符串

      /**

           * java對象轉(zhuǎn)換為json字符串

           *

           * @param obj

           *            :可以為map,list,javaBean

           * @return json字符串

           * @createTime 2010-11-23 下午07:42:58

           */

          public static String object2Json(Object obj) {

             try {

                 StringWriter sw = new StringWriter();

                 JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);

                 mapper.writeValue(gen, obj);

                 gen.close();

                 return sw.toString();

             } catch (Exception e) {

                 e.printStackTrace();

             }

             return null;

          }

       

          protected void doGet(HttpServletRequest request,

                 HttpServletResponse response) throws ServletException, IOException {

             // TODO Auto-generated method stub

             this.doPost(request, response);

          }

       

         

          protected void doPost(HttpServletRequest request,

                 HttpServletResponse response) throws ServletException, IOException {

             // TODO Auto-generated method stub

             Object svns = null;

             request.setCharacterEncoding("UTF-8");

             response.setCharacterEncoding("UTF-8");

             String path = request.getParameter("pid");

             String url = "svn://localhost/svndemo1";

             String usrName = "usrName";

             String password = "password";

             if (path == null) {

                 path = "";

             }

             path = new String(path.getBytes("ISO-8859-1"),"UTF-8");

             String type = request.getParameter("type");

             PrintWriter out = response.getWriter();

             try {

                 SVNUtil svnUtil = new SVNUtil(url, usrName, password);

                 if (svnUtil.login()) {

                    /*用于查詢歷史記錄

      if ("history".equals(type)) {

                        List<SVN> svnl = svnUtil.getHistory(path);

                        HashMap<String, Object> sv = new HashMap<String, Object>();

                        sv.put("total", svnl.size());

                        sv.put("rows", svnl);

                        svns = sv;

                    } else {*/

                        svns = svnUtil.listEntries(path);

                    //}

                    //java對象轉(zhuǎn)換成json字符串

                    String json = SVNServlet.object2Json(svns);

                    out.print(json);

                 } else {

                    System.out.println("驗(yàn)證失敗");

                 }

             } catch (SVNException ex) {

                 ex.printStackTrace();

             }

             out.flush();

             out.close();

          }

      新建一個(gè)index.jsp用戶顯示版本數(shù)列表,頁面顯示我使用了jquery-easyui模板

      <%@ page language="java" contentType="text/html; charset=utf-8"

          pageEncoding="utf-8"%>

          <%

          String path = request.getContextPath();

          String basePath = request.getScheme() + "://"

                 + request.getServerName() + ":" + request.getServerPort()

                 + path + "/";

          %>

      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www./TR/html4/loose.dtd">

      <html>

      <head>

      <base href="<%=basePath%>">

      <title>SVN</title>

      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

      <meta http-equiv="pragma" content="no-cache">

      <meta http-equiv="cache-control" content="no-cache">

      <meta http-equiv="expires" content="0">

      <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

      <meta http-equiv="description" content="This is my page">

      <link rel="stylesheet" type="text/css"

          href="plugs/themes/default/easyui.css">

      <link rel="stylesheet" type="text/css" href="plugs/themes/icon.css">

      <script type="text/javascript" src="plugs/jquery-1.4.2.min.js"></script>

      <script type="text/javascript" src="plugs/jquery.easyui.min.js"></script>

      <script type="text/javascript">

          $(function() {

             $('#test').treegrid({

                 title : 'SVN列表',

                 nowrap : false,

                 rownumbers : true,

                 collapsible : false,

                 url : 'svn?pid=',

                 idField : 'url',

                 treeField : 'url',

                 frozenColumns : [ [ {

                    title : '路徑',

                    field : 'url',

                    width : 350,

                    formatter : function(value) {

                        return '<span style="color:red">' + decodeURI(value.substr(value.lastIndexOf("/"))) + '</span>';

                    }

                 } ] ],

                 columns : [ [ {

                    field : 'name',

                    title : '名稱',

                    width : 120

                 }, {

                    field : 'size',

                    title : '文件大小(KB)',

                    width : 80,

                    rowspan : 2

                 }, {

                    field : 'revision',

                    title : '版本號',

                    width : 80,

                    rowspan : 2

                 }, {

                    field : 'author',

                    title : '作者',

                    width : 100,

                    rowspan : 2

                 }, {

                    field : 'date',

                    title : '修改日期',

                    width : 130,

                    rowspan : 2

                 }, {

                    field : 'commitMessage',

                    title : '注釋',

                    width : 150,

                    rowspan : 2

                 }, {

                    field : 'kind',

                    title : '操作',

                    width : 120,

                    align : 'center',

                    rowspan : 2,

                    formatter : function(value) {

                        return value=='file' ? '<a onclick="download()" style="cursor: pointer;color:red">下載</a><a onclick="viewHistory()" style="margin-left:5px; cursor: pointer;color:red">歷史版本</a>' : '';

                    }

                 }] ],

                 onBeforeExpand : function(row, param) {

                    $(this).treegrid('options').url = 'svn?pid='+encodeURI(decodeURI(row.url));

                 }

             });

          });

         

          function download(){

             setTimeout(function(){

                 var node = $('#test').treegrid('getSelected');

                 if(node !=null)

                    window.open("download?url="+encodeURI(decodeURI(node.url))+"&size="+node.size+"&name="+encodeURI(decodeURI(node.name))+"&revision="+node.revision);

             },200);

            

          }

         

          function viewHistory(){

             setTimeout(function(){

                 var node = $('#test').treegrid('getSelected');

                 if(node != null) {

                    window.open("history.jsp?uri="+encodeURI(decodeURI(node.url)),"_blank","height=400,width=700,status=yes,toolbar=no,menubar=no,location=no");

                 }

             }, 200);

          }

      </script>

       

      </head>

      <body>

       

      <table id="test"></table>

       

      </body>

      </html>

       

       

      顯示效果如下

      版本樹列表

       

      歷史版本

       

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多