package android.source.tuangou.framework.update;
import android.source.tuangou.framework.Application;
import android.source.tuangou.framework.Config;
import android.source.tuangou.framework.util.LogUtil;
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
public class VersionManager
{
private static LocalVersion localVersion;
private static RemoteVersion remoteVersion;
public VersionManager(){
}
//检查客户端是否需要更新
public static boolean checkClientUpdate(){
boolean flag = false;
try {
remoteVersion = getRemoteVersion();
if (remoteVersion == null){
return flag;
}
String loclVersionClient = Config.CLIENT_VERSION;
String remoteVersionClient = remoteVersion.getCurrentStableClientVersionInfo().clientVersion;
System.out.println("loclVersionClient = "+loclVersionClient);
System.out.println("remoteVersionClient = "+remoteVersionClient);
flag = compareVersion(loclVersionClient, remoteVersionClient);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
return flag;
}
public static boolean checkWebFileUpdate()
{
boolean flag = false;
try {
localVersion = null;
RemoteVersion remoteversion = getRemoteVersion();
LocalVersion localversion = getLocalVersion();
if (remoteVersion == null || localVersion == null)
return flag;
boolean flag1;
String s = localVersion.webFileVersion;
String s1 = remoteVersion.getCurrentWebVersion();
flag1 = compareVersion(s, s1);
flag = flag1;
return flag;
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
return flag;
}
private static boolean compareVersion(String s, String s1)
throws Exception{
boolean flag = false;
try {
if (s1 != null && s != null) {
String as[] = s.split("\\.");
String as1[] = s1.split("\\.");
int i = as.length;
int j = as1.length;
if (i != j)
throw new Exception("Version file format error.");
int k = 0;
do {
int l = as.length;
if (k >= l)
break;
int i1 = Integer.valueOf(as[k]).intValue();
if (Integer.valueOf(as1[k]).intValue() > i1) {
flag = true;
continue; /* Loop/switch isn't completed */
}
k++;
} while (true);
} else {
flag = false;
}
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
return flag;
}
public static String getFullVersion(){
StringBuilder stringbuilder = new StringBuilder();
String s = Config.CLIENT_VERSION;
StringBuilder stringbuilder1 = stringbuilder.append(s).append(".");
String s1 = getLocalVersion().webFileVersion;
return stringbuilder1.append(s1).toString();
}
public static LocalVersion getLocalVersion()
{
if (localVersion == null){
StringBuilder stringbuilder = new StringBuilder();
String s = Application.getAppFilesPath();
StringBuilder stringbuilder1 = stringbuilder.append(s).append("/");
String s1 = Config.UPDATE_FILE_FOLDER;
String s2 = stringbuilder1.append(s1).append("/").append("ver.xml").toString();
LocalVersion localversion = new LocalVersion();
if (localversion.loadFromFile(s2))
localVersion = localversion;
if(localVersion == null){
}else{
}
}
return localVersion;
}
//获取remote版本号
public static RemoteVersion getRemoteVersion(){
if (remoteVersion == null){
RemoteVersion remoteversion = new RemoteVersion();
String s = Config.REMOTE_VERSION_URL;
if (remoteversion.loadFromUrl(s))
remoteVersion = remoteversion;
}
return remoteVersion;
}
private static String getStringFromNode(Node node)
throws IOException
{
StringBuilder stringbuilder = new StringBuilder();
if (node.getNodeType() != 3){
NodeList nodelist;
int k;
StringBuilder stringbuilder5;
if (node.getNodeType() != 9)
{
StringBuffer stringbuffer = new StringBuffer();
int i = 0;
do
{
int j = node.getAttributes().getLength();
if (i >= j)
break;
StringBuffer stringbuffer1 = stringbuffer.append(" ");
String s1 = node.getAttributes().item(i).getNodeName();
StringBuffer stringbuffer2 = stringbuffer1.append(s1).append("=\"");
String s2 = node.getAttributes().item(i).getNodeValue();
StringBuffer stringbuffer3 = stringbuffer2.append(s2).append("\" ");
i++;
} while (true);
StringBuilder stringbuilder2 = stringbuilder.append("<");
String s3 = node.getNodeName();
StringBuilder stringbuilder3 = stringbuilder2.append(s3).append(" ").append(stringbuffer).append(">");
} else
{
stringbuilder5 = stringbuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
}
nodelist = node.getChildNodes();
k = 0;
for (int l = nodelist.getLength(); k < l; k++)
{
String s4 = getStringFromNode(nodelist.item(k));
StringBuilder stringbuilder4 = stringbuilder.append(s4);
}
if (node.getNodeType() != 9)
{
StringBuilder stringbuilder6 = stringbuilder.append("</");
String s5 = node.getNodeName();
StringBuilder stringbuilder7 = stringbuilder6.append(s5).append(">");
}
return stringbuilder.toString();
}else{
String s = node.getNodeValue();
StringBuilder stringbuilder1 = stringbuilder.append(s);
return stringbuilder1.toString();
}
}
public static void updateLocalWebFileVersion(){
String s2;
try {
StringBuilder stringbuilder = new StringBuilder();
String s = Application.getAppFilesPath();
StringBuilder stringbuilder1 = stringbuilder.append(s).append("/");
String s1 = Config.UPDATE_FILE_FOLDER;
s2 = stringbuilder1.append(s1).append("/").append("ver.xml")
.toString();
DocumentBuilder documentbuilder = DocumentBuilderFactory
.newInstance().newDocumentBuilder();
File file = new File(s2);
FileInputStream fileinputstream = new FileInputStream(file);
Document document = documentbuilder.parse(fileinputstream);
fileinputstream.close();
Element element = (Element) document.getDocumentElement()
.getElementsByTagName("version").item(0);
String s3 = Config.CLIENT_VERSION;
element.setAttribute("client", s3);
String s4 = getRemoteVersion().getCurrentWebVersion();
element.setAttribute("web-file", s4);
String s5 = getStringFromNode(document.getDocumentElement());
File file1 = new File(s2);
FileOutputStream fileoutputstream = new FileOutputStream(file1);
OutputStreamWriter outputstreamwriter = new OutputStreamWriter(
fileoutputstream);
outputstreamwriter.write(s5);
outputstreamwriter.close();
fileoutputstream.close();
localVersion = null;
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
}