[Yanel-commits] rev 25736 -
public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/updatefinder
simon at wyona.com
simon at wyona.com
Tue Jul 3 16:28:15 CEST 2007
Author: simon
Date: 2007-07-03 16:28:15 +0200 (Tue, 03 Jul 2007)
New Revision: 25736
Modified:
public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/updatefinder/UpdateFinder.java
Log:
added automatisation of which updater is needed
Modified: public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/updatefinder/UpdateFinder.java
===================================================================
--- public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/updatefinder/UpdateFinder.java 2007-07-03 14:26:18 UTC (rev 25735)
+++ public/yanel/trunk/src/realms/welcome-admin/yanel/resources/update-webapp/src/java/org/wyona/yanel/impl/resources/updatefinder/UpdateFinder.java 2007-07-03 14:28:15 UTC (rev 25736)
@@ -59,6 +59,8 @@
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
+import src.java.org.wyona.yanel.impl.resources.updatefinder.utils.VersionComparator;
+
import com.hp.hpl.jena.rdf.model.*;
/**
@@ -215,7 +217,7 @@
getUpdateConfirmScreen(sbContent);
} else if (request.getParameter("updateconfirmed") != null && request.getParameter("updateconfirmed").equals("updateconfirmed")) {
getUpdateScreen(sbContent);
- sbHeader.append("<meta http-equiv=\"refresh\" content=\"10; URL=" + "http://" + request.getServerName() + ":" + request.getServerPort() + "/updater/" + "\"/>");
+ sbHeader.append("<meta http-equiv=\"refresh\" content=\"10; URL=" + "http://" + request.getServerName() + ":" + request.getServerPort() + "/updater/" + "?updatelink=" + request.getParameter("updatelink") + "\"/>");
} else {
log.info("Fallback ...");
plainRequest(sbContent);
@@ -256,16 +258,24 @@
sb.append("</p>");
} else {
updateInfo = getUpdateInfo(sb);
-
+ String idVersionRevisionCurent = installInfo.getId() + "-v-" + installInfo.getVersion() + "-r-" + installInfo.getRevision();
+
sb.append("<p>");
sb.append("Your installed yanel is: " + installInfo.getId() + "-v-" + installInfo.getVersion() + "-r-" + installInfo.getRevision());
sb.append("</p>");
HashMap newestYanel = updateInfo.getNewestUpdateVersionsOf("id", "wyona-yanel-webapp");
- sb.append("<p>");
- sb.append("Newest yanel is: " + newestYanel.get("id") + "-v-" + newestYanel.get("version") + "-r-" + newestYanel.get("revision"));
- sb.append("<form method=\"post\"><input type=\"submit\" name=\"button\" value=\"update\"></input><input type=\"hidden\" name=\"update\" value=\"update\"></input><input type=\"hidden\" name=\"updatelink\" value=\""
- + newestYanel.get("updateLink") + "\"/></form>");
- sb.append("</p>");
+ String idVersionRevisionNewest = (String) newestYanel.get("id") + "-v-" + (String) newestYanel.get("version") + "-r-" + (String) newestYanel.get("revision");
+ if (idVersionRevisionNewest.equals(idVersionRevisionCurent)) {
+ sb.append("<p>");
+ sb.append("Your yanel is already the newest version.");
+ sb.append("</p>");
+ }else {
+ sb.append("<p>");
+ sb.append("Newest yanel is: " + idVersionRevisionNewest);
+ sb.append("<form method=\"post\"><input type=\"submit\" name=\"button\" value=\"update\"></input><input type=\"hidden\" name=\"update\" value=\"update\"></input><input type=\"hidden\" name=\"updatelink\" value=\""
+ + newestYanel.get("updateLink") + "\"/></form>");
+ sb.append("</p>");
+ }
sb.append("<p>");
sb.append("Other versions you can get:");
@@ -273,13 +283,14 @@
sb.append("<ul>");
for (int i = 0; i < updateInfo.getUpdateVersions().size(); i++) {
HashMap versionDetails = (HashMap) updateInfo.getUpdateVersionsOf("id", "wyona-yanel-webapp").get(i);
- if ((versionDetails.get("version") != installInfo.getVersion() && versionDetails.get("revision") != installInfo.getRevision()) || ( versionDetails.get("idd") != newestYanel.get("id") && versionDetails.get("version") != newestYanel.get("version") && versionDetails.get("revision") != newestYanel.get("revision"))) {
+ String idVersionRevisionItem = (String) versionDetails.get("id") + "-v-" + (String) versionDetails.get("version") + "-r-" + (String) versionDetails.get("revision");
+
+ if ( !idVersionRevisionItem.equals(idVersionRevisionCurent) && !idVersionRevisionItem.equals(idVersionRevisionNewest)) {
sb.append("<li>"
+ versionDetails.get("title")
+ "<ul>"
+ "<li>Version: "
- + versionDetails.get("version")
- + "Revision:" + versionDetails.get("revision")
+ + idVersionRevisionItem
+ "</li>"
+ "<li>Type: "
+ versionDetails.get("type")
@@ -345,31 +356,21 @@
}
private void getUpdateScreen(StringBuffer sb) {
- UpdateInfo updateInfo = getUpdateInfo(sb);
+
WarFetcher warFetcher = null;
try {
- String destDir = request.getSession().getServletContext().getRealPath(".")
- + File.separator + "..";
- warFetcher = new WarFetcher(request, request.getParameter("updatelink"), destDir);
-
- HashMap versionDetails = updateInfo.getUpdateVersionDetail("updateLink",
- request.getParameter("updatelink"));
- String version = (String) versionDetails.get("version");
- String revision = (String) versionDetails.get("revision");
- String id = (String) versionDetails.get("id");
-
+ String destDir = request.getSession().getServletContext().getRealPath(".") + File.separator + "..";
+ Map bestUpdater = getBestUpdater(sb);
+
+ warFetcher = new WarFetcher(request, bestUpdater.get("updateLink"), destDir);
warFetcher.fetch();
TomcatContextHandler tomcatContextHandler = new TomcatContextHandler(request);
- tomcatContextHandler.setContext("updater", id + "-v-" + version + "-r-" + revision);
- String pathToUpdater = "http://" + request.getServerName() + ":"
- + request.getServerPort() + "/updater/";
+ tomcatContextHandler.setContext("updater", bestUpdater.get("id") + "-v-" + bestUpdater.get("version") + "-r-" + bestUpdater.get("revision"));
sb.append("<p>");
- sb.append("Update done.");
- sb.append("<a href=\"" + pathToUpdater + "\">");
- sb.append("go to the Updater!");
- sb.append("</a>");
+ sb.append("Update done.<br/>");
+ sb.append("You will be redirected to the updater which will automaticaly download and install the requested yanel.");
sb.append("</p>");
} catch (Exception e) {
log.error(e.getMessage(), e);
@@ -402,6 +403,36 @@
return null;
}
}
+
+ private HashMap getBestUpdater(StringBuffer sb) {
+ UpdateInfo updateInfo = getUpdateInfo(sb);
+ InstallInfo installInfo = getInstallInfo(sb);
+
+ HashMap updateVersionDetails = updateInfo.getUpdateVersionDetail("updateLink",
+ request.getParameter("updatelink"));
+ String updateId = (String) updateVersionDetails.get("id");
+ String updateVersion = (String) updateVersionDetails.get("version");
+ String updateRevision = (String) updateVersionDetails.get("revision");
+
+ ArrayList updaters = getUpdateVersionsOf("type", "updater", installInfo.getVersion(), installInfo.getRevision());
+ VersionComparator versionComparator = new VersionComparator();
+ for (int i = 0; i < updaters.size(); i++) {
+ HashMap versionDetail = (HashMap) updaters.get(i);
+ if (versionComparator.compare((String) versionDetail.get("targetApllicationMinVersion"), updateVersion) > 0 ) {
+ updaters.remove(i);
+ }
+ if (versionComparator.compare((String) versionDetail.get("targetApllicationMaxVersion"), updateVersion) < 0 ) {
+ updaters.remove(i);
+ }
+ if (versionComparator.compare((String) versionDetail.get("targetApllicationMinRevision"), updateRevision) > 0 ) {
+ updaters.remove(i);
+ }
+ if (versionComparator.compare((String) versionDetail.get("targetApllicationMaxRevision"), updateRevision) < 0 ) {
+ updaters.remove(i);
+ }
+ }
+ Map bestUpdater = (HashMap) updaters.get(updaters.size() - 1);
+ }
/**
* Get XSLT path
More information about the Yanel-commits
mailing list