|
From: <bma...@us...> - 2013-12-05 11:50:59
|
Revision: 8536
http://sourceforge.net/p/fudaa/svn/8536
Author: bmarchan
Date: 2013-12-05 11:50:56 +0000 (Thu, 05 Dec 2013)
Log Message:
-----------
Mascaret : Calcul pour plusieurs formules s?\195?\169dimentaires
Modified Paths:
--------------
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierCalculSediment.java
trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierParametresSediment.java
trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dParametresSedimentEditor.java
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierCalculSediment.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierCalculSediment.java 2013-11-14 17:20:53 UTC (rev 8535)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierCalculSediment.java 2013-12-05 11:50:56 UTC (rev 8536)
@@ -1,11 +1,11 @@
package org.fudaa.dodico.hydraulique1d.metier.sediment;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
-import javax.swing.JOptionPane;
-
-import org.fudaa.dodico.hydraulique1d.Hydraulique1dResource;
import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpatial;
@@ -37,14 +37,21 @@
/**
* Calcule et ajoute les r\xE9sultats pour la variable s\xE9dimentaire des param\xE8tres.
*/
- public MetierDescriptionVariable[] computeResultsForVariable() {
- return computeResultsForVariable(params_.getFormule().getVariable());
+ public MetierDescriptionVariable[] computeResultsForVariables() {
+ Set<MetierDescriptionVariable> neededVars=new HashSet<MetierDescriptionVariable>();
+
+ for (MetierFormuleSediment form : params_.getFormules()) {
+ MetierDescriptionVariable[] vars = computeResultsForVariable(form.getVariable());
+ neededVars.addAll(Arrays.asList(vars));
+ }
+
+ return neededVars.toArray(new MetierDescriptionVariable[0]);
}
/**
* Calcule et ajoute les r\xE9sultats pour une variable s\xE9dimentaire.
* @param _var La variable s\xE9dimentaire.
- * @return null si le calcul a pu \xEAtre effectu\xE9, sinon les variables manquantes pour le calcul.
+ * @return Les variables manquantes pour le calcul, de longueur=0 si le calcul a pu \xEAtre effectu\xE9
*/
public MetierDescriptionVariable[] computeResultsForVariable(MetierDescriptionVariable _var) {
MetierFormuleSediment formule=MetierFormuleSediment.getFormule(_var);
@@ -101,6 +108,6 @@
// }
// }
// res_.addResultsVariable(MetierDescriptionVariable.PENE, vals);
- return null;
+ return ls.toArray(new MetierDescriptionVariable[0]);
}
}
Modified: trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierParametresSediment.java
===================================================================
--- trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierParametresSediment.java 2013-11-14 17:20:53 UTC (rev 8535)
+++ trunk/soft/fudaa-mascaret/server/src/main/java/org/fudaa/dodico/hydraulique1d/metier/sediment/MetierParametresSediment.java 2013-12-05 11:50:56 UTC (rev 8536)
@@ -1,7 +1,12 @@
package org.fudaa.dodico.hydraulique1d.metier.sediment;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
+import org.fudaa.dodico.hydraulique1d.metier.MetierHydraulique1d;
import org.fudaa.dodico.hydraulique1d.metier.evenement.Notifieur;
-import org.fudaa.dodico.hydraulique1d.metier.MetierHydraulique1d;
/**
* Classe de stockage des parametres de granulometrie pour le calcul de s\xE9diments.
@@ -32,8 +37,8 @@
private double densApparente_=2;
/** Contrainte critique adimensionnelle */
private double tauc_=0.047;
- /** Formule de calcul */
- private MetierFormuleSediment formule_;
+ /** Formules de calcul */
+ private MetierFormuleSediment[] formules_;
// Constructeur.
public MetierParametresSediment() {
@@ -57,7 +62,7 @@
setDensiteApparente(q.getDensiteApparente());
setDensiteMateriau(q.getDensiteMateriau());
setTauc(q.getTauc());
- setFormule(q.getFormule());
+ setFormules(q.getFormules());
setActif(q.isActif());
}
}
@@ -189,16 +194,40 @@
this.tauc_ = tauc;
}
- public MetierFormuleSediment getFormule() {
- return formule_;
+ public MetierFormuleSediment[] getFormules() {
+ return formules_;
}
- public void setFormule(MetierFormuleSediment _formule) {
- if (formule_==_formule) return;
- Notifieur.getNotifieur().fireObjetModifie(toString(), this, "Formule");
- this.formule_ = _formule;
+ public void setFormules(MetierFormuleSediment[] _formules) {
+ if (Arrays.equals(formules_, _formules)) return;
+ Notifieur.getNotifieur().fireObjetModifie(toString(), this, "Formules");
+ this.formules_ = _formules;
}
+ /**
+ * Controle que les variables pass\xE9es en param\xE8tres suffisent a calculer les formules s\xE9dimentaires.
+ *
+ * @param _vars Les variables existantes.
+ * @return Les variables manquantes, ou vide si aucune variable ne manque.
+ */
+ public MetierDescriptionVariable[] isVariablesManquantes(MetierDescriptionVariable[] _vars) {
+ Map<String,MetierDescriptionVariable> reqVariables=new HashMap<String,MetierDescriptionVariable>();
+
+ for (MetierFormuleSediment form : formules_) {
+ MetierDescriptionVariable[] vars=form.getRequiredVariable();
+ for (MetierDescriptionVariable var : vars) {
+ reqVariables.put(var.nom(),var);
+ }
+ }
+
+ for (MetierDescriptionVariable var : _vars) {
+ reqVariables.remove(var.nom());
+ }
+
+ return reqVariables.values().toArray(new MetierDescriptionVariable[0]);
+ }
+
+
@Override
public String[] getInfos() {
String[] res= new String[2];
@@ -215,7 +244,7 @@
+ " Densite apparente=" + densApparente_
+ " Densite materiau=" + densMat_
+ " Tauc=" + tauc_
- + " Formule=" + formule_ ==null ? "None":formule_.toString();
+ + " Nb formules=" + formules_ ==null ? "0":""+formules_.length;
return res;
}
Modified: trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dParametresSedimentEditor.java
===================================================================
--- trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dParametresSedimentEditor.java 2013-11-14 17:20:53 UTC (rev 8535)
+++ trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dParametresSedimentEditor.java 2013-12-05 11:50:56 UTC (rev 8536)
@@ -1,14 +1,18 @@
package org.fudaa.fudaa.hydraulique1d.editor;
import java.awt.BorderLayout;
+import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
+import java.util.Arrays;
import javax.swing.BorderFactory;
+import javax.swing.DefaultListModel;
import javax.swing.JCheckBox;
import javax.swing.JOptionPane;
+import javax.swing.JScrollPane;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
@@ -23,9 +27,9 @@
import org.fudaa.ebli.dialog.BDialogContent;
import org.fudaa.fudaa.hydraulique1d.Hydraulique1dResource;
-import com.memoire.bu.BuComboBox;
import com.memoire.bu.BuGridLayout;
import com.memoire.bu.BuLabel;
+import com.memoire.bu.BuList;
import com.memoire.bu.BuPanel;
import com.memoire.bu.BuTextField;
import com.memoire.fu.FuLog;
@@ -66,7 +70,8 @@
private BuLabel lbTEau_;
private BuTextField tfTEau_;
private BuLabel lbFormule_;
- private BuComboBox coFormule_;
+ private BuList lsFormule_;
+ private DefaultListModel mdFormule_;
private BuPanel pnCenter_;
private BuPanel pnPrincipal_;
private BorderLayout lyPrincipal_;
@@ -106,12 +111,14 @@
tfTauc_=BuTextField.createDoubleField();
lbTEau_=new BuLabel(getS("Temp\xE9rature de l'eau"));
tfTEau_=BuTextField.createDoubleField();
- lbFormule_=new BuLabel(getS("Formule"));
- coFormule_=new BuComboBox();
- coFormule_.addItem("");
+ lbFormule_=new BuLabel(getS("Formules de calcul"));
+ mdFormule_=new DefaultListModel();
for (MetierFormuleSediment item : MetierFormuleSediment.values()) {
- coFormule_.addItem(item);
+ mdFormule_.addElement(item);
}
+ lsFormule_=new BuList(mdFormule_);
+ JScrollPane spFormule=new JScrollPane(lsFormule_);
+ spFormule.setPreferredSize(new Dimension(150,100));
lyCenter_=new BuGridLayout(2,5,2);
@@ -139,7 +146,7 @@
pnCenter_.add(lbTEau_);
pnCenter_.add(tfTEau_);
pnCenter_.add(lbFormule_);
- pnCenter_.add(coFormule_);
+ pnCenter_.add(spFormule);
Border bd=BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
pnPrincipal_=new BuPanel();
@@ -204,8 +211,8 @@
return getS("Contrainte critique adimensionnelle")+" : "+getS("La valeur doit \xEAtre donn\xE9e");
if (tfTEau_.getValue()==null)
return getS("Temp\xE9rature de l'eau")+" : "+getS("La valeur doit \xEAtre donn\xE9e");
- if (coFormule_.getSelectedIndex()==0)
- return getS("La formule n'est pas donn\xE9e");
+ if (lsFormule_.getSelectedIndex()==-1)
+ return getS("Aucune formule n'est s\xE9lectionn\xE9e");
return null;
}
@@ -271,10 +278,13 @@
param_.setTEau(tEau);
changed=true;
}
- MetierFormuleSediment formule;
- formule=(MetierFormuleSediment)coFormule_.getSelectedItem();
- if (!formule.equals(param_.getFormule())) {
- param_.setFormule(formule);
+ int[] selIdx=lsFormule_.getSelectedIndices();
+ MetierFormuleSediment[] formules=new MetierFormuleSediment[selIdx.length];
+ for (int i=0; i<selIdx.length; i++) {
+ formules[i]=(MetierFormuleSediment)mdFormule_.get(selIdx[i]);
+ }
+ if (!Arrays.equals(formules, param_.getFormules())) {
+ param_.setFormules(formules);
changed=true;
}
@@ -309,13 +319,13 @@
// On ajoute le nouveau r\xE9sultat
if (etude_.sediment().parametres().isActif()) {
MetierCalculSediment calSed=new MetierCalculSediment(etude_.resultatsGeneraux().resultatsTemporelSpatial(), etude_.sediment().parametres());
- MetierDescriptionVariable[] vars=calSed.computeResultsForVariable();
- if (vars!=null) {
+ MetierDescriptionVariable[] vars=calSed.computeResultsForVariables();
+ if (vars.length!=0) {
StringBuilder sb=new StringBuilder();
for (MetierDescriptionVariable var : vars) {
sb.append("\n- ").append(var.description());
}
- JOptionPane.showMessageDialog(this, getS("Les r\xE9sultats hydrauliques suivants sont n\xE9cessaires pour le calcul s\xE9dimentologique:{0}\n\nAucun r\xE9sultat s\xE9dimentologique calcul\xE9.", sb.toString()),
+ JOptionPane.showMessageDialog(this, getS("Les r\xE9sultats hydrauliques suivants sont n\xE9cessaires pour\nle calcul s\xE9dimentologique par les formules choisies:{0}\n\nCertains r\xE9sultats s\xE9dimentologiques ne seront pas calcul\xE9s.", sb.toString()),
getS("Attention"), JOptionPane.WARNING_MESSAGE);
}
@@ -346,7 +356,7 @@
tfDensApparente_.setEnabled(b);
tfTauc_.setEnabled(b);
tfTEau_.setEnabled(b);
- coFormule_.setEnabled(b);
+ lsFormule_.setEnabled(b);
}
@Override
@@ -368,11 +378,13 @@
tfTauc_.setValue(param_.getTauc());
tfTEau_.setValue(param_.getTEau());
- if (param_.getFormule()==null) {
- coFormule_.setSelectedIndex(0);
+ if (param_.getFormules()!=null) {
+ lsFormule_.clearSelection();
+ for (MetierFormuleSediment form : param_.getFormules()) {
+ int idx=mdFormule_.indexOf(form);
+ if (idx!=-1)
+ lsFormule_.addSelectionInterval(idx,idx);
+ }
}
- else {
- coFormule_.setSelectedItem(param_.getFormule());
- }
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|