|
From: <de...@us...> - 2015-11-05 22:02:13
|
Revision: 9192
http://sourceforge.net/p/fudaa/svn/9192
Author: deniger
Date: 2015-11-05 22:02:10 +0000 (Thu, 05 Nov 2015)
Log Message:
-----------
CRUE-644
Modified Paths:
--------------
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsProgressRunnable.java
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopComponent.java
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopExportImportPopupBuilder.java
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportValue.java
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImporter.java
trunk/soft/fudaa-crue/ui-modelling/src/main/resources/org/fudaa/fudaa/crue/modelling/calcul/importer/Bundle.properties
trunk/soft/fudaa-crue/ui-views/src/main/java/org/fudaa/fudaa/crue/views/DonCLimMLineBuilder.java
trunk/soft/fudaa-crue/ui-views/src/main/java/org/fudaa/fudaa/crue/views/DonClimMTableModel.java
Added Paths:
-----------
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportData.java
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportLine.java
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportLinesBuilder.java
Removed Paths:
-------------
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportKey.java
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportKeyFromArray.java
Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsProgressRunnable.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsProgressRunnable.java 2015-11-05 22:01:14 UTC (rev 9191)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsProgressRunnable.java 2015-11-05 22:02:10 UTC (rev 9192)
@@ -22,6 +22,7 @@
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.fudaa.ctulu.CtuluLibFile;
import org.fudaa.fudaa.crue.modelling.calcul.importer.CLimMsImporter;
+import org.fudaa.fudaa.crue.views.DonClimMTableModel;
import org.netbeans.api.progress.ProgressHandle;
import org.netbeans.api.progress.ProgressRunnable;
import org.openide.util.Exceptions;
@@ -30,7 +31,7 @@
*
* @author Frederic Deniger
*/
-public class ModellingListCLimMsProgressRunnable implements ProgressRunnable<Object> {
+public class ModellingListCLimMsProgressRunnable implements ProgressRunnable<DonClimMTableModel> {
private File file;
private final ModellingListCLimMsTopComponent topComponent;
@@ -47,8 +48,7 @@
}
@Override
- public Object run(ProgressHandle handle) {
- Reader reader = null;
+ public DonClimMTableModel run(ProgressHandle handle) {
String[][] values = null;
if (initValues != null) {
char sep = '\t';
@@ -62,10 +62,9 @@
if (values == null) {
return null;
}
- CLimMsImporter importer = new CLimMsImporter(topComponent.getCcm(), topComponent.getScenario().getLoiConteneur(), values);
+ CLimMsImporter importer = new CLimMsImporter(topComponent.getCcm(), topComponent.getScenario(), values);
importer.setTableModel(topComponent.tableModel);
- importer.importData();
- return null;
+ return importer.importData();
}
protected String getValue(Cell cell) {
Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopComponent.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopComponent.java 2015-11-05 22:01:14 UTC (rev 9191)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopComponent.java 2015-11-05 22:02:10 UTC (rev 9192)
@@ -70,9 +70,34 @@
@Override
public ExplorerManager getExplorerManager() {
return null;
-// return helper.getExplorerManager();
}
+ protected void rebuildCenterFor(DonClimMTableModel newModel) {
+ JComponent oldCenter = CtuluLibSwing.findChildByName(this, CENTER_NAME);
+ remove(oldCenter);
+ setDoubleBuffered(false);
+ final ModellingOpenDLHYAction loiDisplayer = new ModellingOpenDLHYAction();
+ final ModellingListCLimMsTopExportImportPopupBuilder popupReceiver = new ModellingListCLimMsTopExportImportPopupBuilder(
+ this, loiDisplayer);
+ Pair<JScrollPane, DonClimMTableModel> createScrollPane = new DonCLimMLineBuilder().createScrollPane(newModel, getCcm(), getScenario(), true,
+ loiDisplayer,
+ popupReceiver);
+ tableModel = createScrollPane.second;
+ final JScrollPane newCenter = createScrollPane.first;
+ popupReceiver.install(newCenter);
+ tableModel.addTableModelListener(new TableModelListener() {
+ @Override
+ public void tableChanged(TableModelEvent e) {
+ setModified(true);
+ }
+ });
+ add(newCenter);
+ revalidate();
+ repaint();
+ newCenter.revalidate();
+ newCenter.repaint();
+ }
+
@Override
protected void scenarioUnloaded() {
super.scenarioUnloaded();
Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopExportImportPopupBuilder.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopExportImportPopupBuilder.java 2015-11-05 22:01:14 UTC (rev 9191)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopExportImportPopupBuilder.java 2015-11-05 22:02:10 UTC (rev 9192)
@@ -16,6 +16,7 @@
import org.fudaa.ctulu.gui.CtuluTableSimpleExporter;
import org.fudaa.fudaa.crue.common.helper.CrueProgressUtils;
import org.fudaa.fudaa.crue.common.helper.CtuluUIForNetbeans;
+import org.fudaa.fudaa.crue.views.DonClimMTableModel;
import org.fudaa.fudaa.crue.views.LoiDisplayer;
import org.fudaa.fudaa.crue.views.LoiDisplayerInstaller;
import org.fudaa.fudaa.crue.views.export.DonClimMExportTableModel;
@@ -70,8 +71,12 @@
ModellingListCLimMsTopExportImportPopupBuilder.class,
"button.import.name"));
if (res == JFileChooser.APPROVE_OPTION) {
- CrueProgressUtils.showProgressDialogAndRun(new ModellingListCLimMsProgressRunnable(fileChooser.getSelectedFile(), tc), NbBundle.
+ final DonClimMTableModel result = CrueProgressUtils.showProgressDialogAndRun(new ModellingListCLimMsProgressRunnable(fileChooser.
+ getSelectedFile(), tc), NbBundle.
getMessage(ModellingListCLimMsTopExportImportPopupBuilder.class, "button.import.name"));
+ if (result != null) {
+ tc.rebuildCenterFor(result);
+ }
}
}
Added: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportData.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportData.java (rev 0)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportData.java 2015-11-05 22:02:10 UTC (rev 9192)
@@ -0,0 +1,27 @@
+/*
+ GPL 2
+ */
+package org.fudaa.fudaa.crue.modelling.calcul.importer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author Frederic Deniger
+ */
+public class CLimMsImportData {
+
+ private final List<CLimMsImportLine> calculs = new ArrayList<>();
+ private final List<String> emhs = new ArrayList<>();
+
+ public List<CLimMsImportLine> getCalculs() {
+ return calculs;
+ }
+
+ public List<String> getEmhs() {
+ return emhs;
+ }
+
+
+}
Deleted: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportKey.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportKey.java 2015-11-05 22:01:14 UTC (rev 9191)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportKey.java 2015-11-05 22:02:10 UTC (rev 9192)
@@ -1,58 +0,0 @@
-/*
- GPL 2
- */
-package org.fudaa.fudaa.crue.modelling.calcul.importer;
-
-/**
- *
- * @author Frederic Deniger
- */
-public class CLimMsImportKey {
-
- private final String emh;
- private final String calculId;
-
- public CLimMsImportKey(String emhId, String calculId) {
- this.emh = emhId;
- this.calculId = calculId;
- }
-
- @Override
- public int hashCode() {
- int hash = 7;
- hash = 59 * hash + (this.emh != null ? this.emh.hashCode() : 0);
- hash = 59 * hash + (this.calculId != null ? this.calculId.hashCode() : 0);
- return hash;
- }
-
- public String getEmh() {
- return emh;
- }
-
- public String getCalculId() {
- return calculId;
- }
-
- @Override
- public String toString() {
- return calculId + ", " + emh;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final CLimMsImportKey other = (CLimMsImportKey) obj;
- if ((this.emh == null) ? (other.emh != null) : !this.emh.equals(other.emh)) {
- return false;
- }
- if ((this.calculId == null) ? (other.calculId != null) : !this.calculId.equals(other.calculId)) {
- return false;
- }
- return true;
- }
-}
Deleted: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportKeyFromArray.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportKeyFromArray.java 2015-11-05 22:01:14 UTC (rev 9191)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportKeyFromArray.java 2015-11-05 22:02:10 UTC (rev 9192)
@@ -1,72 +0,0 @@
-/*
- GPL 2
- */
-package org.fudaa.fudaa.crue.modelling.calcul.importer;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.apache.commons.lang.StringUtils;
-import org.fudaa.ctulu.CtuluLog;
-import org.fudaa.dodico.crue.common.io.CrueIOResu;
-import org.openide.util.NbBundle;
-
-/**
- *
- * @author Frederic Deniger
- */
-public class CLimMsImportKeyFromArray {
-
- public CLimMsImportKeyFromArray() {
- }
-
- public CrueIOResu<Map<CLimMsImportKey, CLimMsImportValue>> extract(String[][] values) {
- CrueIOResu<Map<CLimMsImportKey, CLimMsImportValue>> ioRes = new CrueIOResu<Map<CLimMsImportKey, CLimMsImportValue>>();
- Map<CLimMsImportKey, CLimMsImportValue> res = new HashMap<CLimMsImportKey, CLimMsImportValue>();
- CtuluLog log = new CtuluLog();
- //on parse les colonne
- //calcul;EMH 1 (;
- ioRes.setAnalyse(log);
- ioRes.setMetier(res);
- if (values.length == 0) {
- return ioRes;
- }
- final int nbColumns = values[0].length;
- if (nbColumns % 2 == 0) {
- log.addSevereError(NbBundle.getMessage(CLimMsImportKeyFromArray.class, "climImport.wrongColumnsNumber"));
- return ioRes;
- }
- List<String> emhs = new ArrayList<String>();
- for (int i = 1; i < nbColumns; i += 2) {
- String emh1 = StringUtils.substringBeforeLast(values[0][i], "(").trim();
- String emh2 = StringUtils.substringBeforeLast(values[0][i + 1], "(").trim();
- if (!StringUtils.equals(emh1, emh2)) {
- log.addSevereError(NbBundle.getMessage(CLimMsImportKeyFromArray.class, "climImport.wrongColumnsOrganization"));
- } else {
- emhs.add(emh1);
- }
- }
- final int nbEmhs = emhs.size();
- for (int row = 1; row < values.length; row++) {
- String[] val = values[row];
- if (val.length != nbColumns) {
- log.addSevereError(NbBundle.getMessage(CLimMsImportKeyFromArray.class, "climImport.ligneWithWrongColumnsNumber"), Integer.
- toString(row + 1));
- return ioRes;
- }
- String calcId = val[0];
- for (int i = 0; i < nbEmhs; i++) {
- CLimMsImportKey key = new CLimMsImportKey(emhs.get(i), calcId);
- CLimMsImportValue value = new CLimMsImportValue(val[1 + 2 * i], val[2 + 2 * i]);
- res.put(key, value);
- }
- }
- if (log.containsErrorOrSevereError()) {
- return ioRes;
- }
-
-
- return ioRes;
- }
-}
Copied: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportLine.java (from rev 9158, trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportKey.java)
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportLine.java (rev 0)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportLine.java 2015-11-05 22:02:10 UTC (rev 9192)
@@ -0,0 +1,65 @@
+/*
+ GPL 2
+ */
+package org.fudaa.fudaa.crue.modelling.calcul.importer;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import org.fudaa.dodico.crue.metier.factory.CruePrefix;
+
+/**
+ *
+ * @author Frederic Deniger
+ */
+public class CLimMsImportLine {
+
+ private final String calculId;
+ private final List<CLimMsImportValue> values = new ArrayList<>();
+
+ public CLimMsImportLine(String calculId) {
+ this.calculId = calculId;
+ }
+
+ public String getCalculId() {
+ return calculId;
+ }
+
+ public List<CLimMsImportValue> getValues() {
+ return values;
+ }
+
+ public boolean isNameValide() {
+ return calculId.startsWith(CruePrefix.P_CALCUL_PSEUDOPERMANENT) || calculId.startsWith(CruePrefix.P_CALCUL_TRANSITOIRE);
+ }
+
+ public boolean isTransitoire() {
+ return calculId.startsWith(CruePrefix.P_CALCUL_TRANSITOIRE);
+ }
+ public boolean isPermanent() {
+ return calculId.startsWith(CruePrefix.P_CALCUL_PSEUDOPERMANENT);
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 97 * hash + Objects.hashCode(this.calculId);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final CLimMsImportLine other = (CLimMsImportLine) obj;
+ if (!Objects.equals(this.calculId, other.calculId)) {
+ return false;
+ }
+ return true;
+ }
+
+}
Copied: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportLinesBuilder.java (from rev 9158, trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportKeyFromArray.java)
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportLinesBuilder.java (rev 0)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportLinesBuilder.java 2015-11-05 22:02:10 UTC (rev 9192)
@@ -0,0 +1,87 @@
+/*
+ GPL 2
+ */
+package org.fudaa.fudaa.crue.modelling.calcul.importer;
+
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.commons.lang.StringUtils;
+import org.fudaa.ctulu.CtuluLog;
+import org.fudaa.dodico.crue.common.io.CrueIOResu;
+import org.openide.util.NbBundle;
+
+/**
+ * Permet simplement de lire les données. Ne fait pas de tests métiers sur les données. Test uniquement si doublons dans les données
+ *
+ * @author Frederic Deniger
+ */
+public class CLimMsImportLinesBuilder {
+
+ public CLimMsImportLinesBuilder() {
+ }
+
+ public CrueIOResu<CLimMsImportData> extract(String[][] values) {
+ CrueIOResu<CLimMsImportData> ioRes = new CrueIOResu<>();
+ CLimMsImportData res = new CLimMsImportData();
+ CtuluLog log = new CtuluLog();
+ //on parse les colonne
+ //calcul;EMH 1 (;
+ ioRes.setAnalyse(log);
+ ioRes.setMetier(res);
+ if (values.length == 0) {
+ return ioRes;
+ }
+ final int nbColumns = values[0].length;
+ if (nbColumns % 2 == 0) {
+ log.addSevereError(NbBundle.getMessage(CLimMsImportLinesBuilder.class, "climImport.wrongColumnsNumber"));
+ return ioRes;
+ }
+ for (int i = 1; i < nbColumns; i += 2) {
+ String emh1 = StringUtils.substringBeforeLast(values[0][i], "(").trim();
+ String emh2 = StringUtils.substringBeforeLast(values[0][i + 1], "(").trim();
+ if (!StringUtils.equals(emh1, emh2)) {
+ log.addSevereError(NbBundle.getMessage(CLimMsImportLinesBuilder.class, "climImport.wrongColumnsOrganization"));
+ } else if (res.getEmhs().contains(emh1)) {
+ log.addSevereError(NbBundle.getMessage(CLimMsImportLinesBuilder.class, "climImport.doublonEMH", emh1));
+ } else {
+ res.getEmhs().add(emh1);
+ }
+ }
+ final int nbEmhs = res.getEmhs().size();
+ Set<String> definedCalcul = new HashSet<>();
+ for (int row = 1; row < values.length; row++) {
+ String[] val = values[row];
+ if (val.length > nbColumns) {
+ log.addSevereError(NbBundle.getMessage(CLimMsImportLinesBuilder.class, "climImport.ligneWithWrongColumnsNumber"), Integer.
+ toString(row + 1), Integer.toString(nbColumns));
+ return ioRes;
+ }
+ String calcId = val[0];
+ if (definedCalcul.contains(calcId)) {
+ log.addSevereError(NbBundle.getMessage(CLimMsImportLinesBuilder.class, "climImport.doublonCalcul"), calcId);
+ }
+ definedCalcul.add(calcId);
+ CLimMsImportLine line = new CLimMsImportLine(calcId);
+ boolean existing = false;
+ for (int i = 0; i < nbEmhs; i++) {
+ String emh = res.getEmhs().get(i);
+ int idxCol = 2 + 2 * i;
+ if (val.length > idxCol) {
+ CLimMsImportValue value = new CLimMsImportValue(emh, val[idxCol - 1], val[idxCol]);
+ if (StringUtils.isNotBlank(value.getTypeClimM()) && StringUtils.isNotBlank(value.getValue())) {
+ line.getValues().add(value);
+ existing = true;
+ }
+ }
+ }
+ if (existing) {
+ res.getCalculs().add(line);
+ }
+ }
+ if (log.containsErrorOrSevereError()) {
+ return ioRes;
+ }
+
+ return ioRes;
+ }
+}
Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportValue.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportValue.java 2015-11-05 22:01:14 UTC (rev 9191)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImportValue.java 2015-11-05 22:02:10 UTC (rev 9192)
@@ -3,28 +3,38 @@
*/
package org.fudaa.fudaa.crue.modelling.calcul.importer;
+import java.util.Objects;
+
/**
*
* @author Frederic Deniger
*/
public class CLimMsImportValue {
+ private final String emh;
private final String typeClimM;
private final String value;
- public CLimMsImportValue(String typeClimM, String value) {
+ public CLimMsImportValue(String emh, String typeClimM, String value) {
+ this.emh = emh;
this.typeClimM = typeClimM;
this.value = value;
}
- @Override
- public int hashCode() {
- int hash = 7;
- hash = 59 * hash + (this.typeClimM != null ? this.typeClimM.hashCode() : 0);
- hash = 59 * hash + (this.value != null ? this.value.hashCode() : 0);
- return hash;
+ public String getEmh() {
+ return emh;
}
+
+ public boolean isPermanent() {
+ try {
+ Double.parseDouble(value);
+ return true;
+ } catch (NumberFormatException numberFormatException) {
+ }
+ return false;
+ }
+
public String getTypeClimM() {
return typeClimM;
}
@@ -39,6 +49,15 @@
}
@Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 59 * hash + Objects.hashCode(this.emh);
+ hash = 59 * hash + Objects.hashCode(this.typeClimM);
+ hash = 59 * hash + Objects.hashCode(this.value);
+ return hash;
+ }
+
+ @Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
@@ -47,12 +66,16 @@
return false;
}
final CLimMsImportValue other = (CLimMsImportValue) obj;
- if ((this.typeClimM == null) ? (other.typeClimM != null) : !this.typeClimM.equals(other.typeClimM)) {
+ if (!Objects.equals(this.emh, other.emh)) {
return false;
}
- if ((this.value == null) ? (other.value != null) : !this.value.equals(other.value)) {
+ if (!Objects.equals(this.typeClimM, other.typeClimM)) {
return false;
}
+ if (!Objects.equals(this.value, other.value)) {
+ return false;
+ }
return true;
}
+
}
Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImporter.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImporter.java 2015-11-05 22:01:14 UTC (rev 9191)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImporter.java 2015-11-05 22:02:10 UTC (rev 9192)
@@ -3,25 +3,29 @@
*/
package org.fudaa.fudaa.crue.modelling.calcul.importer;
+import gnu.trove.TLongObjectHashMap;
import java.util.ArrayList;
import java.util.Iterator;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
-import org.apache.commons.lang.StringUtils;
+import java.util.MissingResourceException;
import org.fudaa.ctulu.CtuluLog;
import org.fudaa.dodico.crue.common.io.CrueIOResu;
import org.fudaa.dodico.crue.common.transformer.TransformerHelper;
import org.fudaa.dodico.crue.config.ccm.CrueConfigMetier;
+import org.fudaa.dodico.crue.edition.bean.DonCLimMLineContent;
+import org.fudaa.dodico.crue.metier.emh.Calc;
+import org.fudaa.dodico.crue.metier.emh.CalcPseudoPerm;
import org.fudaa.dodico.crue.metier.emh.CalcPseudoPermBrancheOrificeManoeuvre;
import org.fudaa.dodico.crue.metier.emh.CalcPseudoPermItem;
+import org.fudaa.dodico.crue.metier.emh.CalcTrans;
import org.fudaa.dodico.crue.metier.emh.CalcTransBrancheOrificeManoeuvre;
import org.fudaa.dodico.crue.metier.emh.CalcTransItem;
import org.fudaa.dodico.crue.metier.emh.DonCLimM;
import org.fudaa.dodico.crue.metier.emh.DonCLimMCommonItem;
import org.fudaa.dodico.crue.metier.emh.DonLoiHYConteneur;
import org.fudaa.dodico.crue.metier.emh.EMH;
+import org.fudaa.dodico.crue.metier.emh.EMHScenario;
import org.fudaa.dodico.crue.metier.emh.EnumSensOuv;
import org.fudaa.dodico.crue.metier.emh.Loi;
import org.fudaa.dodico.crue.metier.factory.DclmFactory;
@@ -41,115 +45,145 @@
private final String[][] values;
private final CrueConfigMetier ccm;
private final DonLoiHYConteneur loiConteneur;
+ private final EMHScenario scenario;
- public CLimMsImporter(CrueConfigMetier ccm, DonLoiHYConteneur loiConteneur, String[][] values) {
+ public CLimMsImporter(CrueConfigMetier ccm, EMHScenario scenario, String[][] values) {
this.values = values;
this.ccm = ccm;
- this.loiConteneur = loiConteneur;
+ this.scenario = scenario;
+ this.loiConteneur = scenario.getLoiConteneur();
}
DonClimMTableModel model;
- public void importData() {
- CLimMsImportKeyFromArray fromArray = new CLimMsImportKeyFromArray();
- CrueIOResu<Map<CLimMsImportKey, CLimMsImportValue>> importedData = fromArray.extract(values);
+ public DonClimMTableModel importData() {
+ CLimMsImportLinesBuilder fromArray = new CLimMsImportLinesBuilder();
+ CrueIOResu<CLimMsImportData> importedData = fromArray.extract(values);
final CtuluLog log = importedData.getAnalyse();
if (log.containsErrorOrSevereError()) {
LogsDisplayer.displayError(log, NbBundle.getMessage(CLimMsImporter.class, "importCLimMs.bilan"));
- return;
+ return null;
}
- Map<CLimMsImportKey, CLimMsImportValue> metier = importedData.getMetier();
- Set<CLimMsImportKey> notComputedData = new LinkedHashSet<CLimMsImportKey>();
- notComputedData.addAll(metier.keySet());
+
+ CLimMsImportData importedValues = importedData.getMetier();
+ final Map<String, EMH> emhByNom = scenario.getIdRegistry().getEmhByNom();
+ CtuluLog logCheckEMH = valideImportDatas(emhByNom, importedValues);
+ if (logCheckEMH.containsErrorOrSevereError()) {
+ LogsDisplayer.displayError(logCheckEMH, NbBundle.getMessage(CLimMsImporter.class, "importCLimMs.bilan"));
+ return null;
+ }
+ List<DonCLimMLineContent> dclimFinal = new ArrayList<>();
+ List<EMH> emhsFinal = new ArrayList<>();
+ for (String emh : importedValues.getEmhs()) {
+ emhsFinal.add(emhByNom.get(emh));
+ }
String versHaut = EnumSensOuv.OUV_VERS_HAUT.geti18n();
String versBas = EnumSensOuv.OUV_VERS_BAS.geti18n();
- for (int col = 0; col < model.getColumnCount(); col++) {
- for (int row = 0; row < model.getRowCount(); row++) {
- DonCLimM currentCLimM = (DonCLimM) model.getValueAt(row, col);
- if (currentCLimM == null) {
- continue;
+ for (CLimMsImportLine imported : importedValues.getCalculs()) {
+ //pas de lignes: on ignore
+ if (imported.getValues().isEmpty()) {
+ continue;
+ }
+// DonCLimM currentCLimM = (DonCLimM) model.getValueAt(row, col);
+ String calculName = imported.getCalculId();
+ boolean transitoire = imported.isTransitoire();
+ Calc newCalcul = transitoire ? new CalcTrans() : new CalcPseudoPerm();
+ newCalcul.setNom(calculName);
+ final TLongObjectHashMap<DonCLimM> valueByEmhUid = new TLongObjectHashMap<>();
+ dclimFinal.add(new DonCLimMLineContent(newCalcul, valueByEmhUid));
+ for (CLimMsImportValue value : imported.getValues()) {
+ String nom = value.getEmh();
+ String typeClimM = value.getTypeClimM();
+ EMH emh = emhByNom.get(nom);
+ Map<String, DclmFactory.CalcBuilder> toMapOfNom = findBuilders(newCalcul, emh);
+ DclmFactory.CalcBuilder builder = toMapOfNom.get(typeClimM);
+ DonCLimMCommonItem create = null;
+ if (builder != null) {
+ create = builder.create(ccm);
+ } else if (versHaut.equals(typeClimM) || versBas.equals(typeClimM)) {
+ final DclmFactory.CalcBuilder<? extends DonCLimMCommonItem> ouvBuilder = transitoire ? new DclmFactory.CalcTransBrancheOrificeManoeuvreCreator() : new DclmFactory.CalcPseudoPermBrancheOrificeManoeuvreCreator();
+ if (toMapOfNom.containsKey(ouvBuilder.geti18n())) {
+ create = ouvBuilder.create(ccm);
+ EnumSensOuv sens = versHaut.equals(typeClimM) ? EnumSensOuv.OUV_VERS_HAUT : EnumSensOuv.OUV_VERS_BAS;
+ if (transitoire) {
+ ((CalcTransBrancheOrificeManoeuvre) create).setSensOuv(sens);
+ } else {
+ ((CalcPseudoPermBrancheOrificeManoeuvre) create).setSensOuv(sens);
+ }
+ }
}
- String cal = currentCLimM.getCalculParent().getNom();
- String nom = currentCLimM.getEmh().getNom();
- CLimMsImportKey key = new CLimMsImportKey(nom, cal);
- CLimMsImportValue value = metier.get(key);
- notComputedData.remove(key);
- if (value != null && StringUtils.isNotBlank(value.getValue())) {
- String typeClimM = value.getTypeClimM();
- EMH emh = currentCLimM.getEmh();
- Map<String, DclmFactory.CalcBuilder> toMapOfNom = findBuilders(currentCLimM);
- DclmFactory.CalcBuilder builder = toMapOfNom.get(typeClimM);
- boolean transitoire = currentCLimM.getCalculParent().isTransitoire();
- DonCLimMCommonItem create = null;
- if (builder != null) {
- create = builder.create(ccm);
- } else if (versHaut.equals(typeClimM) || versBas.equals(typeClimM)) {
- final DclmFactory.CalcBuilder<? extends DonCLimMCommonItem> ouvBuilder = transitoire ? new DclmFactory.CalcTransBrancheOrificeManoeuvreCreator() : new DclmFactory.CalcPseudoPermBrancheOrificeManoeuvreCreator();
- if (toMapOfNom.containsKey(ouvBuilder.geti18n())) {
- create = ouvBuilder.create(ccm);
- EnumSensOuv sens = versHaut.equals(typeClimM) ? EnumSensOuv.OUV_VERS_HAUT : EnumSensOuv.OUV_VERS_BAS;
- if (transitoire) {
- ((CalcTransBrancheOrificeManoeuvre) create).setSensOuv(sens);
- } else {
- ((CalcPseudoPermBrancheOrificeManoeuvre) create).setSensOuv(sens);
- }
+ if (create == null) {
+ log.addWarn(NbBundle.getMessage(CLimMsImporter.class, "importClimMs.typeNotValid", typeClimM, emh.
+ getNom()));
+ } else {
+ create.setEmh(emh);
+ create.setCalculParent(newCalcul);
+ if (transitoire) {
+ CalcTransItem permItem = (CalcTransItem) create;
+ List<Loi> filterDLHY = LoiHelper.filterDLHY(loiConteneur, permItem.getTypeLoi());
+ Loi loi = TransformerHelper.toMapOfId(filterDLHY).get(value.getValue().toUpperCase());
+ if (loi != null) {
+ permItem.setLoi(loi);
+ } else {
+ create = null;
+ log.addWarn(NbBundle.getMessage(CLimMsImporter.class, "importClimMs.loiNotValid", value.getValue(), emh.getNom(), calculName));
}
- }
- if (create == null) {
- log.addWarn(org.openide.util.NbBundle.getMessage(CLimMsImporter.class, "importClimMs.typeNotValid", typeClimM, emh.
- getNom()));
} else {
- create.setEmh(emh);
- create.setCalculParent(currentCLimM.getCalculParent());
- if (transitoire) {
- CalcTransItem permItem = (CalcTransItem) create;
- List<Loi> filterDLHY = LoiHelper.filterDLHY(loiConteneur, permItem.getTypeLoi());
- Loi loi = TransformerHelper.toMapOfId(filterDLHY).get(value.getValue().toUpperCase());
- if (loi != null) {
- permItem.setLoi(loi);
- } else {
- create = null;
- log.addWarn(NbBundle.getMessage(CLimMsImporter.class, "importClimMs.loiNotValid", value.getValue(), emh.getNom(), currentCLimM.
- getCalculParent().getNom()));
- }
- } else {
- try {
- ((CalcPseudoPermItem) create).setValue(Double.parseDouble(value.getValue()));
- } catch (NumberFormatException numberFormatException) {
- create = null;
- log.addWarn(NbBundle.getMessage(CLimMsImporter.class, "importClimMs.valueNotValid", value.getValue(), emh.getNom(), currentCLimM.
- getCalculParent().getNom()));
+ try {
+ ((CalcPseudoPermItem) create).setValue(Double.parseDouble(value.getValue()));
+ } catch (NumberFormatException numberFormatException) {
+ create = null;
+ log.addWarn(NbBundle.getMessage(CLimMsImporter.class, "importClimMs.valueNotValid", value.getValue(), emh.getNom(), calculName));
- }
-
}
- if (create != null) {
- model.setValueAt(create, row, col);
- }
}
}
}
-
}
- if (!notComputedData.isEmpty()) {
- for (CLimMsImportKey cLimMsImportKey : notComputedData) {
- log.addWarn(NbBundle.getMessage(CLimMsImporter.class, "importClimMs.skipLine", cLimMsImportKey.toString()));
- }
- }
if (log.isNotEmpty()) {
LogsDisplayer.displayError(log, NbBundle.getMessage(CLimMsImporter.class, "importCLimMs.bilan"));
}
+ return new DonClimMTableModel(dclimFinal, emhsFinal);
}
+ private CtuluLog valideImportDatas(Map<String, EMH> emhByNom, CLimMsImportData values) throws MissingResourceException {
+ CtuluLog logCheckEMH = new CtuluLog();
+ for (String emh : values.getEmhs()) {
+ if (!emhByNom.containsKey(emh)) {
+ logCheckEMH.addSevereError(NbBundle.getMessage(CLimMsImporter.class, "climImport.unknownEMH"), emh);
+ }
+ }
+ for (CLimMsImportLine calcul : values.getCalculs()) {
+ if (!calcul.isNameValide()) {
+ logCheckEMH.addSevereError(NbBundle.getMessage(CLimMsImporter.class, "climImport.nameCalculUnknown"), calcul.getCalculId());
+ } else {
+ boolean ispermanent = calcul.isPermanent();
+ for (CLimMsImportValue value : calcul.getValues()) {
+ if (value.isPermanent() != ispermanent) {
+ if (ispermanent) {
+ logCheckEMH.addSevereError(NbBundle.getMessage(CLimMsImporter.class, "climImport.calculPermanentNoPermanentValue"), calcul.
+ getCalculId(), value.getEmh());
+ } else {
+ logCheckEMH.addSevereError(NbBundle.getMessage(CLimMsImporter.class, "climImport.calculTransitoireNoTransitoireValue"), calcul.
+ getCalculId(), value.getEmh());
+ }
+ }
+ }
+ }
+
+ }
+ return logCheckEMH;
+ }
+
public void setTableModel(DonClimMTableModel tableModel) {
this.model = tableModel;
}
- protected Map<String, DclmFactory.CalcBuilder> findBuilders(DonCLimM clim) {
- List<DclmFactory.CalcBuilder> creators = new ArrayList<DclmFactory.CalcBuilder>(DclmFactory.getCreatorsSens(clim.getCalculParent()));
+ protected Map<String, DclmFactory.CalcBuilder> findBuilders(Calc calcul, EMH emh) {
+ List<DclmFactory.CalcBuilder> creators = new ArrayList<>(DclmFactory.getCreatorsSens(calcul));
for (Iterator<DclmFactory.CalcBuilder> it = creators.iterator(); it.hasNext();) {
DclmFactory.CalcBuilder calcBuilder = it.next();
- if (!calcBuilder.isAccepted(clim.getEmh())) {
+ if (!calcBuilder.isAccepted(emh)) {
it.remove();
}
}
Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/resources/org/fudaa/fudaa/crue/modelling/calcul/importer/Bundle.properties
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/resources/org/fudaa/fudaa/crue/modelling/calcul/importer/Bundle.properties 2015-11-05 22:01:14 UTC (rev 9191)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/resources/org/fudaa/fudaa/crue/modelling/calcul/importer/Bundle.properties 2015-11-05 22:02:10 UTC (rev 9192)
@@ -4,9 +4,16 @@
import.cini.nbModifiedValue={0} valeurs modifi\u00e9es
climImport.wrongColumnsNumber=Le nombre de colonnes du fichier d'import doit \u00eatre impair. Ent\u00eate attendue: colonne 1=nom calcul; colonne 2=emh 1 (type);emh 1 (valeur)
climImport.wrongColumnsOrganization=Dans la ligne d'ent\u00eate, il doit y avoir 2 colonnes par EMH: type et valeur. Ent\u00eate attendue: colonne 1=nom calcul; colonne 2=emh 1 (type);emh 1 (valeur)
-climImport.ligneWithWrongColumnsNumber=La ligne {0} doit contenir {1} colonnes
+climImport.ligneWithWrongColumnsNumber=La ligne {0} doit contenir au maximum {1} colonnes
+climImport.doublonCalcul=Le calcul {0} est d\u00e9fini plusieurs fois
+climImport.doublonEMH=L''EMH {0} est d\u00e9finie plusieurs fois dans les DCLM
importCLimMs.bilan=Import des CLimMs
importClimMs.typeNotValid=Le type {0} n''est pas valide pour l''EMH {1}
importClimMs.valueNotValid=La valeur {0} pour l''EMH {1} du calcul {2} n''est pas valide
importClimMs.loiNotValid=La loi {0} pour l''EMH {1} du calcul {2} n''est pas pr\u00e9sente dans le sc\u00e9nario
importClimMs.skipLine=La ligne {0} du fichier d''import a \u00e9t\u00e9 ignor\u00e9e
+climImport.unknownEMH=L''EMH {0} n''existe pas
+climImport.nameCalculUnknown=Le calcul {0} ne suit pas la convention de nommage: le pr\u00e9fixe doit \u00eatre CC_P pour pseudo-permanent et CC_T pour transitoire.
+climImport.NonConsistentDclimValue=Les valeurs du calcul {0} ne sont pas consistentes ( permanentes et transitoire)
+climImport.calculPermanentNoPermanentValue=Le calcul {0} de type pseudo-permanent contient une valeur non coh\u00e9rente pour l''EMH {0}
+climImport.calculTransitoireNoTransitoireValue=Le calcul {0} de type transitoire contient une valeur non coh\u00e9rente pour l''EMH {0}
Modified: trunk/soft/fudaa-crue/ui-views/src/main/java/org/fudaa/fudaa/crue/views/DonCLimMLineBuilder.java
===================================================================
--- trunk/soft/fudaa-crue/ui-views/src/main/java/org/fudaa/fudaa/crue/views/DonCLimMLineBuilder.java 2015-11-05 22:01:14 UTC (rev 9191)
+++ trunk/soft/fudaa-crue/ui-views/src/main/java/org/fudaa/fudaa/crue/views/DonCLimMLineBuilder.java 2015-11-05 22:02:10 UTC (rev 9192)
@@ -60,7 +60,7 @@
lines.add(new DonCLimMLineContent(ordCalc.getCalc(), dclmsByEMHId));
}
List<EMH> allSimpleEMH = HierarchyChildFactory.getEMHInNetworkOrder(null, scenario);
- List<EMH> emhToDisplay = new ArrayList<EMH>();
+ List<EMH> emhToDisplay = new ArrayList<>();
for (EMH emh : allSimpleEMH) {
if (emhs.contains(emh.getUiId())) {
emhToDisplay.add(emh);
@@ -74,7 +74,12 @@
DonClimMTableModel res = build(scenario, editable);
res.setEditable(true);
- List<String> rows = new ArrayList<String>();
+ return createScrollPane(res, ccm, scenario, editable, loiDisplayer, rowPopupReceiver);
+ }
+
+ public Pair<JScrollPane, DonClimMTableModel> createScrollPane(DonClimMTableModel res, CrueConfigMetier ccm,
+ EMHScenario scenario, boolean editable, final LoiDisplayer loiDisplayer, CtuluPopupListener.PopupReceiver rowPopupReceiver) {
+ List<String> rows = new ArrayList<>();
List<DonCLimMLineContent> dclims = res.getDclims();
for (DonCLimMLineContent donCLimMLine : dclims) {
rows.add(donCLimMLine.getCalc().getNom());
@@ -116,7 +121,6 @@
}
}
-
}
}
});
Modified: trunk/soft/fudaa-crue/ui-views/src/main/java/org/fudaa/fudaa/crue/views/DonClimMTableModel.java
===================================================================
--- trunk/soft/fudaa-crue/ui-views/src/main/java/org/fudaa/fudaa/crue/views/DonClimMTableModel.java 2015-11-05 22:01:14 UTC (rev 9191)
+++ trunk/soft/fudaa-crue/ui-views/src/main/java/org/fudaa/fudaa/crue/views/DonClimMTableModel.java 2015-11-05 22:02:10 UTC (rev 9192)
@@ -5,8 +5,11 @@
import org.fudaa.dodico.crue.edition.bean.DonCLimMLineContent;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.swing.table.AbstractTableModel;
+import org.fudaa.dodico.crue.metier.emh.Calc;
import org.fudaa.dodico.crue.metier.emh.DonCLimM;
import org.fudaa.dodico.crue.metier.emh.EMH;
@@ -16,8 +19,8 @@
*/
public class DonClimMTableModel extends AbstractTableModel {
- private final List<DonCLimMLineContent> dclims;
- private final List<EMH> emhs;
+ private List<DonCLimMLineContent> dclims;
+ private List<EMH> emhs;
private boolean editable;
public DonClimMTableModel(List<DonCLimMLineContent> dclims, List<EMH> emhs) {
@@ -29,6 +32,14 @@
return editable;
}
+ public Map<String, Calc> getCalcByNom() {
+ Map<String, Calc> res = new HashMap<>();
+ for (DonCLimMLineContent dclim : dclims) {
+ res.put(dclim.getCalc().getNom(), dclim.getCalc());
+ }
+ return res;
+ }
+
public void setEditable(boolean editable) {
this.editable = editable;
}
@@ -78,4 +89,6 @@
public List<EMH> getEmhs() {
return emhs;
}
+
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|