Enno hat geschrieben:
Vorschlag zur Lösung: Neuer Parameter, echeck -V, gibt nur echeck version 4.4.5 aus, und tut sonst nichts.
Eine Lösung für die Integration in Magellan kann es nur sein, wenn sich die neue echeck Version genauso verhält, wie die alte. Oder Magellan muss auf diesen neuen Parameter angepasst werden (was vielleicht sogar die bessere Variante wäre).
In der Klasse magellan.library.utils.JECheck wird für die Ermittelung der echeck Version die Methode getVersion aufgerufen. Dazu wird die erste Zeile der Ausgabe von "echeck -h" ausgewertet:
Code:
/**
* Returns the version of the specified ECheck executable file.
*
* @throws IOException DOCUMENT-ME
*/
public static Version getVersion(File eCheckExe, Properties settings) throws IOException {
Version v = null;
String version = null;
String line = null;
BufferedReader br = null;
try {
br = new BufferedReader(new JECheck(eCheckExe, null, "-h", settings));
line = br.readLine().toLowerCase();
br.close();
int verStart = line.indexOf("version ") + "version ".length();
int verEnd = line.indexOf(",", verStart);
if ((verStart > 0) && (verEnd > verStart)) {
version = line.substring(verStart, verEnd);
// Fiete: problems wirth version 4.3.2-3, build 2-3 cannot convert to int
// solution: ignore -3 asuming, only in build number a "-" will occure
int verEnd2 = version.indexOf("-");
if (verEnd2 > 1) {
version = version.substring(0, verEnd2);
}
v = new Version(version, ".");
}
} catch (Exception e) {
v = null;
JECheck.log.error(e);
throw new IOException("Cannot retrieve version information: " + e.toString());
}
if (v == null)
throw new IOException("Cannot retrieve version information");
return v;
}