Browse Source

版本比较:

10.0 > 9.0
1.10 > 1.9
1.1.2 > 1.1.1
1.1.1 > 1.1
master
juhaoyu 8 years ago
parent
commit
e51f528646
  1. 70
      designer_base/src/com/fr/design/extra/PluginHelper.java

70
designer_base/src/com/fr/design/extra/PluginHelper.java

@ -8,7 +8,6 @@ import com.fr.general.*;
import com.fr.general.http.HttpClient;
import com.fr.plugin.Plugin;
import com.fr.plugin.PluginConfigManager;
import com.fr.stable.plugin.PluginConstants;
import com.fr.plugin.PluginLoader;
import com.fr.plugin.PluginManagerHelper;
import com.fr.plugin.dependence.PluginDependence;
@ -18,11 +17,15 @@ import com.fr.stable.ArrayUtils;
import com.fr.stable.EncodeConstants;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.plugin.PluginConstants;
import com.fr.stable.project.ProjectConstants;
import com.fr.stable.xml.XMLTools;
import javax.swing.*;
import java.io.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URLDecoder;
import java.util.ArrayList;
@ -42,6 +45,8 @@ public class PluginHelper {
public static final String DEPENDENCE_DOWNLOAD_PATH = System.getProperty("user.dir") + "/download/dependence";
public static final String TEMP_FILE = "temp.zip";
public static final String CONNECTION_404 = "404";
private static final String LOW_VERSION = "0";
/**
* 下载插件
@ -337,7 +342,66 @@ public class PluginHelper {
* @return 当前插件比老的插件版本高则返回true否则返回false
*/
public static boolean isNewThan(Plugin plugin, Plugin oldPlugin) {
return ComparatorUtils.compare(plugin.getVersion(), oldPlugin.getVersion()) >= 0;
return compareVersion(plugin.getVersion(), oldPlugin.getVersion()) >= 0;
}
private static int compareVersion(String version1, String version2) {
if (StringUtils.isBlank(version1)) {
version1 = LOW_VERSION;
}
if (StringUtils.isBlank(version2)) {
version2 = LOW_VERSION;
}
//1.1.1类型
String[] v1 = parseVersion(version1);
String[] v2 = parseVersion(version2);
return compareVersion(v1, v2);
}
private static int compareVersion(String[] v1, String[] v2) {
//v1,v2都是1.1.1类型的数组
int result = 0;
int tempResult;
for (int i = 0; i < v1.length; i++) {
if (i >= v2.length) {
//一直没分出大小,v2用完了,v1大
result = 1;
break;
}
tempResult = compareIntStr(v1[i], v2[i]);
if (tempResult != 0) {
//分出大小,停止后续比较
result = tempResult;
break;
}
}
//循环完了v1,如果还没比出大小
if (result == 0 && v2.length > v1.length) {
result = -1;
}
return result;
}
private static int compareIntStr(String s1, String s2) {
return Integer.parseInt(s1) - Integer.parseInt(s2);
}
private static String[] parseVersion(String versionStr) {
char c;
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < versionStr.length(); i++) {
c = versionStr.charAt(i);
if (Character.isDigit(c)) {
sBuilder.append(c);
} else if (c == '.') {
sBuilder.append("-");
}
}
return sBuilder.toString().split("-");
}
private static String sendInstalledPluginInfo(final Plugin plugin) {

Loading…
Cancel
Save