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
| public class CalculAction extends AbstractAction {
// Properties
public Fenetre fenetre;
public GrandeFenetreResultat grandeFenetreResultat = new GrandeFenetreResultat();
public FenetreResultat fenetreResultat;
// Constructor
public CalculAction(Fenetre fenetre, String texte) {
super(texte);
this.fenetre = fenetre;
}
// Méthode du CallPutFlag
@Override
public void actionPerformed(ActionEvent e) {
// Creation de la fenetre résultat
fenetreResultat = new FenetreResultat();
grandeFenetreResultat.add(fenetreResultat);
fenetreResultat.setMaxiBarre(Integer.parseInt(fenetre.getJtf9()
.getText()));
// Création d'un thread dédié au calcul
Thread threadCalcul = new Thread() {
@Override
public void run() {
if (fenetre.getCall().isSelected()) {
fenetre.setCallPutFlag("c");
} else if (fenetre.getPut().isSelected()) {
fenetre.setCallPutFlag("p");
} else if (fenetre.getCallPutFlag() == "") {
fenetre.getResultat().setText(
"Please choose either call or put option!");
}
// Calcul
try {
MonteCarloSimulationNtimes simulation = new MonteCarloSimulationNtimes(
fenetre.getCallPutFlag(),
Double.parseDouble(fenetre.getJtf2().getText()),
Double.parseDouble(fenetre.getJtf3().getText()),
Double.parseDouble(fenetre.getJtf4().getText()),
Double.parseDouble(fenetre.getJtf5().getText()),
Double.parseDouble(fenetre.getJtf6().getText()),
Double.parseDouble(fenetre.getJtf7().getText()),
Double.parseDouble(fenetre.getJtf8().getText()),
Double.parseDouble(fenetre.getJtf9().getText()));
if (fenetre.getCallPutFlag() == null) {
fenetre.getResultat().setText(
"Please choose either call or put option!");
} else {
double dResultat = 0;
// Envoyer l'objet au serveur
try {
fenetreResultat.out.writeObject(simulation);
} catch (IOException ioException) {
System.out.println("Probleme d'envoi");
}
while (dResultat == 0) {
// Recevoir l'objet
try {
MessageServeur msg = (MessageServeur) fenetreResultat.in
.readObject();
if (msg.resultat != 0) {
dResultat = msg.resultat;
fenetreResultat.getResultat().setText(
Double.toString(dResultat));
System.out.println(dResultat);
} else if (msg.n != -1) {
fenetreResultat.progres = msg.n;
System.out.println(msg.n);
}
} catch (IOException ioException) {
System.out.println("Probleme de reception");
ioException.printStackTrace();
} catch (ClassNotFoundException classNotFoundException) {
System.out.println("Probleme de classe");
classNotFoundException.printStackTrace();
}
}
}
} catch (NumberFormatException numberFormatException) {
fenetre.getResultat()
.setText(
"Please give me all the characteristics of the option!");
}
}
};
threadCalcul.start();
}
} |
Partager