1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
// methode 07A
@FXML
private void executerFichierJava02() {
final Service<Integer> service01 = new Service<Integer>() {
// --- step 03, override createTask() method
@Override
protected Task<Integer> createTask() {
return new Task<Integer>() {
// --- step 04, override call() method
@Override
protected Integer call() throws Exception {
ClassPB pbCombines = retourner2ProcessBuilder("/usr/bin/javac",
"-d",
"./out",
"../JavaFX_Test01_Hello_Devstory/src/module-info.java",
"../JavaFX_Test01_Hello_Devstory/src/application/Main.java",
"/usr/bin/java",
"-p",
"./out",
"-m",
"JavaFX_Test01_Hello_Devstory/application.Main");
// variable de portée class qui définit
// l'etat du Service
// si tt se passe bien, doit passer
// par les valeurs 1, 2 et 3
return etat;
}
};
}
};
// --------------------------------------------------------
//
// 2° possibilité, en utilisant des callbacks
service01.setOnReady(event -> {
// n'apparait pas ds la console
System.out.println("par le callback, service 01 ready");
System.out.println("valeur de etat: " + etat);
System.out.println("valeur de getException(): " + service01.getException());
System.out.println("valeur de getValue(): " + service01.getValue());
});
service01.setOnScheduled(event -> {
System.out.println("par le callback, service 01 scheduled");
etat = 1;
System.out.println("valeur de etat: " + etat);
System.out.println("valeur de getException(): " + service01.getException());
System.out.println("valeur de getValue(): " + service01.getValue());
});
service01.setOnRunning(event -> {
System.out.println("par le callback, service 01 running...");
etat = 2;
System.out.println("valeur de etat: " + etat);
System.out.println("valeur de getException(): " + service01.getException());
System.out.println("valeur de getValue(): " + service01.getValue());
});
service01.setOnSucceeded(event -> {
System.out.println("par le callback, service 01, etat, success");
System.out.println("service 01, etat, terminé");
etat = 3;
System.out.println("valeur de etat: " + etat);
System.out.println("valeur de getException(): " + service01.getException());
System.out.println("valeur de getValue(): " + service01.getValue());
});
service01.setOnFailed(event -> {
System.out.println("par le callback, service 01, etat, failed");
System.err.println("echec du service");
etat = 4;
System.out.println("valeur de etat: " + etat);
service01.getException().printStackTrace();
System.out.println("valeur de getException(): " + service01.getException());
System.out.println("valeur de getValue(): " + service01.getValue());
});
service01.setOnCancelled(event -> {
System.out.println("par le callback, service 01, etat, cancelled");
etat = 5;
System.out.println("valeur de etat: " + etat);
System.out.println("valeur de getException(): " + service01.getException());
System.out.println("valeur de getValue(): " + service01.getValue());
});
// --------------------------------------------------------
// demarrer l'instance de Service
// la variable portée class
// prend la valeur de la variable portée locale
serviceB = service01;
// on demarre l'instance service de Service
serviceB.start();
}
// =======================================================
// methode 07C
public static ClassPB retourner2ProcessBuilder(String p01,
String p02,
String p03,
String p04,
String p05,
String p06,
String p07,
String p08,
String p09,
String p10) {
// ProcessBuilder pb01 = new ProcessBuilder("/usr/bin/javac", "-d", "./out", "../JavaFX_Test01_Hello_Devstory/src/module-info.java", "../JavaFX_Test01_Hello_Devstory/src/application/Main.java");
ProcessBuilder pb01 = new ProcessBuilder(p01, p02, p03, p04, p05);
// ProcessBuilder pb02 = new ProcessBuilder("/usr/bin/java", "-p", "./out", "-m", "JavaFX_Test01_Hello_Devstory/application.Main");
ProcessBuilder pb02 = new ProcessBuilder(p06, p07, p08, p09, p10);
try {
pb01
.inheritIO()
.start()
.waitFor();
} catch (InterruptedException except) {
except.printStackTrace();
} catch (IOException except) {
except.printStackTrace();
}
try {
pb02
.inheritIO()
.start()
.waitFor();
} catch (InterruptedException except) {
except.printStackTrace();
} catch (IOException except) {
except.printStackTrace();
}
return new ClassPB(pb01, pb02);
} |