CS结构软件自动升级实现(四)

CS结构软件自动升级实现(四)
接 CS结构软件自动升级实现(三) :

Config.java处理配置文件:
  1 /** */ /********************************************************************
  2 * 项目名称                :rochoc<p>
  3 * 包名称                  :com.rochoc.autoupdate<p>
  4 * 文件名称                :Config.java<p>
  5 * 编写者                 :kfzx-luoc<p>
  6 * 编写日期                :2008-12-22<p>
  7 * 程序功能(类)描述    :<p>
  8 * 用于更新的配置文件读取对像
  9 * 程序变更日期            :
 10 * 变更作者                :
 11 * 变更说明                :
 12********************************************************************/

 13 package  com.rochoc.autoupdate;
 14
 15 import  java.io.File;
 16 import  java.text.SimpleDateFormat;
 17 import  java.util.Date;
 18 import  java.util.List;
 19
 20 import  org.dom4j.Document;
 21 import  org.dom4j.Element;
 22 import  org.dom4j.io.SAXReader;
 23
 24
 25 /** */ /**
 26 * @author kfzx-luoc
 27 *
 28 * TODO To change the template for this generated type comment go to
 29 * Window - Preferences - Java - Code Style - Code Templates
 30 */

 31 public   class  Config
 32 {
 33    public static String cfgFile = ".\\config\\autoupdate.xml";
 34    private static Config config = null;
 35    /** *//** xml的document*/
 36    private Document doc = null;
 37    public static Config getInstance()
 38    {
 39        if(config==null)
 40        {
 41            config = new Config();
 42        }

 43        return config;
 44    }

 45    
 46    private Config()
 47    {
 48        try
 49        {
 50           SAXReader reader = new SAXReader();
 51           doc = reader.read(cfgFile);
 52        }
catch(Exception e)
 53        {
 54            e.printStackTrace();
 55        }

 56    }

 57    public void refresh()
 58    {
 59        config = new Config();
 60    }

 61    public String getVerstion()
 62    {
 63        if(config==null)
 64        {
 65            return "";
 66        }

 67        List lst = doc.selectNodes("Info/Version");
 68        Element el = (Element)lst.get(0);
 69        return el.getText();
 70    }

 71    public String getServerIp()
 72    {
 73        if(config==null)
 74        {
 75            return "";
 76        }

 77        List lst = doc.selectNodes("Info/UpdateServer/Ip");
 78        Element el = (Element)lst.get(0);
 79        return el.getText();
 80    }

 81    public UpdFile [] getFiles()
 82    {
 83        if(config==null)
 84        {
 85            return null;
 86        }

 87        List file = doc.selectNodes("Info/Files");
 88        List lst = ((Element)file.get(0)).elements();
 89        if(lst.size()==0)
 90        {
 91            return null;
 92        }

 93        UpdFile files[] = new UpdFile[lst.size()];
 94        for(int i=0;i<lst.size();i++)
 95        {
 96            Element el = (Element)lst.get(i);
 97            List childs = el.elements();
 98            Element name = (Element)childs.get(0);//Name
 99            Element path = (Element)childs.get(1);//Path
100            Element ver = (Element)childs.get(2);//Version
101            files[i] = new UpdFile(name.getText());
102            if("File".equals(el.getName()))
103            {
104               files[i].setType(0);//文件
105            }
else
106            {
107                files[i].setType(1);//目录
108            }

109            files[i].setPath(path.getText());
110            files[i].setVersion(ver.getText());
111        }

112        return files;
113    }

114    public String getServerPort()
115    {
116        if(config==null)
117        {
118            return "";
119        }

120        List lst = doc.selectNodes("Info/UpdateServer/Port");
121        Element el = (Element)lst.get(0);
122        return el.getText();
123    }

124    public static void print(String msg)
125    {
126        SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss->>" );
127        String str = sdf.format( new Date());
128        System.out.println(str+msg);
129    }

130    public static void main(String args[])
131    {
132        Config cfg = Config.getInstance();        
133        UpdFile files[] = cfg.getFiles();
134        for(int i=0;i<files.length;i++)
135        {
136            System.out.println(files[i]);
137        }

138        Config.print("test");
139    }

140    /** *//**
141     * 格式化路径,增加其尾部的目录分隔符
142     *
143     * @param p 要格式化的目录字符串
144     */

145    public static String formatPath(String p)
146    {
147        if (!p.endsWith(File.separator))
148            return (p + File.separator);
149        return p;
150    }

151
152    /** *//**
153     * 格式化路径,去除其尾部的目录分隔符
154     *
155     * @param p 要格式化的目录字符串
156     */

157    public static String unformatPath(String p)
158    {
159        if (p.endsWith(File.separator))
160            return (p.substring(0, p.length()-1));
161        return p;
162    }

163    public static byte[] getCmd(String cmd)
164    {
165        //第一位用于标识是命令,后面8位为命令名
166        byte cmdb [] = new byte[9];
167        cmdb[0= AUPD.CMD_DATA_SECT;
168        byte [] tmp = cmd.getBytes();
169        if(tmp.length!=8)
170        {
171            Config.print("命令有误:"+cmd+"<<");
172            return null;
173        }

174        for(int i=0;i<8;i++)
175        {
176            cmdb[i+1= tmp[i];
177        }

178        return cmdb;
179    }

180    public static String parseCmd(byte cmd[])
181    {
182        return new String(cmd,0,8);
183    }

184    public static byte [] getLen(int len)
185    {
186        String slen = String.valueOf(len);
187        while(slen.length()<4)
188        {
189            slen = "0"+slen;
190        }

191        return slen.getBytes();
192    }

193    public static void copyArray(byte objary[], byte souary[], int o_begin,
194            int s_begin, int len)
195    {
196        for (int i = 0; i < len; i++)
197        {
198            objary[o_begin + i] = souary[s_begin + i];
199        }

200    }

201}

UpdFile.java:这个类本来是想作为对象直接在服务端和客户端之间传递的,但后来没有采用,因此在本实现中用处不大

 

  1 /** */ /********************************************************************
  2 * 项目名称                :rochoc<p>
  3 * 包名称                  :com.rochoc.autoupdate<p>
  4 * 文件名称                :UpdFile.java<p>
  5 * 编写者                 :kfzx-luoc<p>
  6 * 编写日期                :2008-12-23<p>
  7 * 程序功能(类)描述    :<p>
  8 * 版本文件对像
  9 * 程序变更日期            :
 10 * 变更作者                :
 11 * 变更说明                :
 12********************************************************************/

 13 package  com.rochoc.autoupdate;
 14
 15 import  java.io.Serializable;
 16
 17 /** */ /**
 18 * @author kfzx-luoc
 19 *
 20 * TODO To change the template for this generated type comment go to
 21 * Window - Preferences - Java - Code Style - Code Templates
 22 */

 23 public   class  UpdFile  implements  Serializable
 24 {
 25    private String name = "";//名称
 26    private String path = "";//路径
 27    private int type = 0;//类型 0.文件 1.目录
 28    private String version = "";//版本号
 29    
 30    public UpdFile()
 31    {
 32        super();
 33    }

 34    public UpdFile(String name)
 35    {
 36        this();
 37        this.name = name;
 38    }

 39    public UpdFile(String name,String path,int type,String version)
 40    {
 41        this(name);
 42        this.path = path;
 43        this.type = type;
 44        this.version = version;
 45    }

 46    /** *//**
 47     * @return Returns the name.
 48     */

 49    public String getName()
 50    {
 51        return name;
 52    }

 53    /** *//**
 54     * @param name The name to set.
 55     */

 56    public void setName(String name)
 57    {
 58        this.name = name;
 59    }

 60    /** *//**
 61     * @return Returns the path.
 62     */

 63    public String getPath()
 64    {
 65        return path;
 66    }

 67    /** *//**
 68     * @param path The path to set.
 69     */

 70    public void setPath(String path)
 71    {
 72        this.path = path;
 73    }

 74    /** *//**
 75     * @return Returns the type.
 76     */

 77    public int getType()
 78    {
 79        return type;
 80    }

 81    /** *//**
 82     * @param type The type to set.
 83     */

 84    public void setType(int type)
 85    {
 86        this.type = type;
 87    }

 88    /** *//**
 89     * @return Returns the version.
 90     */

 91    public String getVersion()
 92    {
 93        return version;
 94    }

 95    /** *//**
 96     * @param version The version to set.
 97     */

 98    public void setVersion(String version)
 99    {
100        this.version = version;
101    }

102    public String toString()
103    {
104        return "Name:"+getName()+",Path:"+getPath()
105        +",Type:"+getType()+",Version:"+getVersion();
106    }

107}

《CS结构软件自动升级实现》已经全部写完,这是本人原创,如果需要转贴请注明出处,目前我也只发布到bolgjava上,谢谢。

你可能感兴趣的:(CS结构软件自动升级实现(四))