|
From: <de...@us...> - 2015-11-11 22:53:23
|
Revision: 9193
http://sourceforge.net/p/fudaa/svn/9193
Author: deniger
Date: 2015-11-11 22:53:21 +0000 (Wed, 11 Nov 2015)
Log Message:
-----------
CRUE-667
Modified Paths:
--------------
trunk/soft/fudaa-crue/crue-emh/src/main/java/org/fudaa/dodico/crue/metier/emh/Calc.java
trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/edition/EditionUpdateActiveClimMs.java
trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/edition/EditionUpdateActiveClimMsTest.java
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/ModellingComputeDataTopComponent.java
trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/CalculNodeFactory.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/CLimMsImporter.java
trunk/soft/fudaa-crue/ui-views/src/main/java/org/fudaa/fudaa/crue/views/DonCLimMLineBuilder.java
Modified: trunk/soft/fudaa-crue/crue-emh/src/main/java/org/fudaa/dodico/crue/metier/emh/Calc.java
===================================================================
--- trunk/soft/fudaa-crue/crue-emh/src/main/java/org/fudaa/dodico/crue/metier/emh/Calc.java 2015-11-05 22:02:10 UTC (rev 9192)
+++ trunk/soft/fudaa-crue/crue-emh/src/main/java/org/fudaa/dodico/crue/metier/emh/Calc.java 2015-11-11 22:53:21 UTC (rev 9193)
@@ -6,6 +6,8 @@
import java.util.Iterator;
import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.commons.lang.StringUtils;
import org.fudaa.dodico.crue.common.BusinessMessages;
import org.fudaa.dodico.crue.common.annotation.PropertyDesc;
@@ -32,14 +34,27 @@
public abstract void remove(EMH emh);
public abstract void addDclm(DonCLimM dclm);
+
public abstract void removeDclm(DonCLimM dclm);
@Override
protected Object clone() throws CloneNotSupportedException {
- Calc res=(Calc) super.clone();
+ Calc res = (Calc) super.clone();
return res;
}
+ public Calc cloneWithNameComment() {
+ try {
+ final Calc newInstance = getClass().newInstance();
+ newInstance.nom = nom;
+ newInstance.commentaire = commentaire;
+ return newInstance;
+ } catch (Exception instantiationException) {
+ Logger.getLogger(Calc.class.getName()).log(Level.INFO, "message {0}", instantiationException);
+ }
+ return null;
+ }
+
/**
* ne clone pas les emh...
*
@@ -132,4 +147,4 @@
public String getNom() {
return nom;
}
-}
\ No newline at end of file
+}
Modified: trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/edition/EditionUpdateActiveClimMs.java
===================================================================
--- trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/edition/EditionUpdateActiveClimMs.java 2015-11-05 22:02:10 UTC (rev 9192)
+++ trunk/soft/fudaa-crue/crue-project/src/main/java/org/fudaa/dodico/crue/edition/EditionUpdateActiveClimMs.java 2015-11-11 22:53:21 UTC (rev 9193)
@@ -8,20 +8,30 @@
import gnu.trove.TLongObjectHashMap;
import gnu.trove.TLongObjectIterator;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.fudaa.ctulu.CtuluLog;
+import org.fudaa.ctulu.CtuluLogGroup;
import org.fudaa.dodico.crue.common.BusinessMessages;
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.CalcPseudoPermItem;
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.DonCLimMScenario;
import org.fudaa.dodico.crue.metier.emh.EMH;
import org.fudaa.dodico.crue.metier.emh.EMHScenario;
+import org.fudaa.dodico.crue.metier.emh.OrdCalc;
+import org.fudaa.dodico.crue.metier.emh.OrdCalcScenario;
import org.fudaa.dodico.crue.metier.factory.DclmFactory;
+import org.fudaa.dodico.crue.metier.factory.OrdCalcFactory;
+import org.fudaa.dodico.crue.validation.ValidationHelper;
/**
* Met à jour les ClimM active d'un calcul.
@@ -36,8 +46,7 @@
this.ccm = ccm;
}
- public CtuluLog updateCLimMs(List<DonCLimMLineContent> newCalcs, EMHScenario parent) {
- CtuluLog log = new CtuluLog(BusinessMessages.RESOURCE_BUNDLE);
+ public CtuluLogGroup updateCLimMs(List<DonCLimMLineContent> newCalcsAndClimMs, EMHScenario parent) {
Map<Class, DclmFactory.CalcBuilder> builderByClass = new HashMap<Class, DclmFactory.CalcBuilder>();
for (DclmFactory.CalcBuilder calcBuilder : DclmFactory.getPseudoPerm()) {
builderByClass.put(calcBuilder.getDclmClass(), calcBuilder);
@@ -45,30 +54,36 @@
for (DclmFactory.CalcBuilder calcBuilder : DclmFactory.getTrans()) {
builderByClass.put(calcBuilder.getDclmClass(), calcBuilder);
}
- for (DonCLimMLineContent donCLimMLineContent : newCalcs) {
+ final List<OrdCalc> currentOrdCalcs = parent.getOrdCalcScenario().getOrdCalc();
+ Map<String, OrdCalc> currentOrdCalcsByCalcName = new HashMap<>();
+ for (OrdCalc currentOrdCalc : currentOrdCalcs) {
+ currentOrdCalcsByCalcName.put(currentOrdCalc.getCalc().getNom(), currentOrdCalc);
+ }
+ CtuluLogGroup group = new CtuluLogGroup(BusinessMessages.RESOURCE_BUNDLE);
+ List<Calc> newCalcs = new ArrayList<>();
+ List<OrdCalc> newOrdCalcs = new ArrayList<>();
+ Set<String> newCalculNames = new HashSet<>();
+ final CtuluLog log = group.createLog();
+ for (DonCLimMLineContent donCLimMLineContent : newCalcsAndClimMs) {
TLongObjectHashMap<DonCLimM> dclmsByEMHId = donCLimMLineContent.getDclmsByEMHId();
+ final Calc calcul = donCLimMLineContent.getCalc().cloneWithNameComment();
+ newCalculNames.add(calcul.getNom());
+ newCalcs.add(calcul);
+ OrdCalc currentOcal = currentOrdCalcsByCalcName.get(calcul.getNom());
+ if (currentOcal == null) {
+ OrdCalc newOcal = OrdCalcFactory.createDefaultOcal(calcul, ccm);
+ newOrdCalcs.add(newOcal);
+ } else {
+ OrdCalc newOcal = currentOcal.deepCloneButNotCalc(calcul);
+ newOrdCalcs.add(newOcal);
+ }
for (TLongObjectIterator<DonCLimM> it = dclmsByEMHId.iterator(); it.hasNext();) {
it.advance();
final DonCLimMCommonItem dclm = (DonCLimMCommonItem) it.value();
if (dclm == null) {
continue;
}
- dclm.setUserActive(true);
final EMH emh = dclm.getEmh();
- if (emh == null) {
- log.addSevereError("Erreur interne sur EMH null" + donCLimMLineContent.getCalc().getNom());
- }
- if (!emh.getUiId().equals(it.key())) {
- log.addSevereError("Erreur interne sur EMH avec " + donCLimMLineContent.getCalc().getNom() + "/" + it.value().getEmhId());
- }
- DonCLimM activeClim = getActiveClim(emh, dclm.getCalculParent().getNom());
- if (activeClim == null) {
- log.addSevereError("Erreur interne. dclim non active " + donCLimMLineContent.getCalc().getNom() + "/" + it.value().getEmhId());
- }
- if (!dclm.getCalculParent().getId().equals(donCLimMLineContent.getCalc().getId())) {
- log.addSevereError("Erreur interne sur Calc parent "
- + donCLimMLineContent.getCalc().getNom() + "/" + it.value().getEmhId());
- }
DclmFactory.CalcBuilder builder = builderByClass.get(dclm.getClass());
if (!builder.isAccepted(emh)) {
log.addSevereError("dclim.dclmNotAccepted", dclm.getCalculParent().getNom(), emh.getNom(), builder.getNom());
@@ -81,36 +96,41 @@
log.addSevereError("dclim.loiNotDefined", dclm.getCalculParent().getNom(), emh.getNom());
}
}
+ dclm.setCalculParent(calcul);
+ dclm.setUserActive(true);
+ calcul.addDclm(dclm);
}
}
- if (log.containsErrorOrSevereError()) {
- return log;
- }
- for (DonCLimMLineContent donCLimMLineContent : newCalcs) {
- TLongObjectHashMap<DonCLimM> dclmsByEMHId = donCLimMLineContent.getDclmsByEMHId();
- for (TLongObjectIterator<DonCLimM> it = dclmsByEMHId.iterator(); it.hasNext();) {
- it.advance();
- final DonCLimMCommonItem newDclm = (DonCLimMCommonItem) it.value();
- if (newDclm == null) {
- continue;
- }
- final EMH emh = newDclm.getEmh();
- //on enleve
- DonCLimM oldClim = getActiveClim(emh, newDclm.getNomCalculParent());
- if (oldClim == newDclm) {
- continue;
- }
- //l'ordre est important:
- newDclm.getCalculParent().removeDclm(oldClim);
- emh.removeInfosEMH(oldClim);
- //on ajoute
- newDclm.getCalculParent().addDclm(newDclm);
- newDclm.setEmh(emh);
- emh.addInfosEMH(newDclm);
+ final List<Calc> currentCalculs = parent.getDonCLimMScenario().getCalc();
+ for (Calc currentCalcul : currentCalculs) {
+ if (!newCalculNames.contains(currentCalcul.getNom())) {
+ newCalcs.add(currentCalcul.deepClone());
}
+
}
+ OrdCalcScenario ocalTemp = new OrdCalcScenario();
+ DonCLimMScenario dclmTemp = new DonCLimMScenario();
+ for (OrdCalc ordCalc : newOrdCalcs) {
+ ocalTemp.addOrdCalc(ordCalc);
+ }
+ for (Calc calc : newCalcs) {
+ dclmTemp.addCalc(calc);
+ }
+
+ group.addLog(ValidationHelper.validateDonCLimMScenarioAndClim(dclmTemp, ccm));
+ group.addLog(ValidationHelper.validateOrdCalcScenario(ocalTemp, ccm));
+ if (group.containsFatalError()) {
+ return group;
+ }
- return log;
+ EditionUpdateCalc updater = new EditionUpdateCalc();
+ updater.updateCalcs(newCalcs, newOrdCalcs, parent);
+//// modellingScenarioModificationService.setScenarioModified(new ScenarioModificationEvent(EnumModification.OCAL));
+// setModified(false);
+// if (Boolean.TRUE.equals(getClientProperty("TEST"))) {
+// scenarioReloaded();
+// }
+ return group;
}
protected DonCLimM getActiveClim(EMH emh, String calculNom) {
Modified: trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/edition/EditionUpdateActiveClimMsTest.java
===================================================================
--- trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/edition/EditionUpdateActiveClimMsTest.java 2015-11-05 22:02:10 UTC (rev 9192)
+++ trunk/soft/fudaa-crue/crue-project/src/test/java/org/fudaa/dodico/crue/edition/EditionUpdateActiveClimMsTest.java 2015-11-11 22:53:21 UTC (rev 9193)
@@ -8,6 +8,7 @@
import java.util.ArrayList;
import java.util.List;
import org.fudaa.ctulu.CtuluLog;
+import org.fudaa.ctulu.CtuluLogGroup;
import org.fudaa.dodico.crue.config.ccm.CrueConfigMetier;
import org.fudaa.dodico.crue.config.coeur.TestCoeurConfig;
import org.fudaa.dodico.crue.edition.bean.DonCLimMLineContent;
@@ -58,9 +59,10 @@
newDclm.setEmh(nd);
newDclm.setCalculParent(ocal.getCalc());
List<DonCLimMLineContent> newCalcs = createEntry(nd, newDclm, ocal);
- CtuluLog updateCLimMs = update.updateCLimMs(newCalcs, emhScenario);
- assertFalse(updateCLimMs.containsErrorOrSevereError());
+ CtuluLogGroup updateCLimMs = update.updateCLimMs(newCalcs, emhScenario);
+ assertFalse(updateCLimMs.containsError() || updateCLimMs.containsFatalError());
List<InfosEMH> infosEMH = nd.getInfosEMH();
+ ocal = emhScenario.getOrdCalcScenario().getOrdCalc().get(0);
List<DonCLimM> listeDCLMUserActive = ocal.getCalc().getlisteDCLMUserActive();
assertTrue(infosEMH.contains(newDclm));
assertTrue(newDclm.getEmh() != null);
@@ -75,13 +77,13 @@
newDclmFalse.setCalculParent(ocal.getCalc());
newCalcs = createEntry(nd, newDclmFalse, ocal);
updateCLimMs = update.updateCLimMs(newCalcs, emhScenario);
- assertTrue(updateCLimMs.containsErrorOrSevereError());
- assertEquals(1, updateCLimMs.getRecords().size());
+ assertTrue(updateCLimMs.containsError() || updateCLimMs.containsFatalError());
+ assertEquals(1, updateCLimMs.getLogs().get(0).getRecords().size());
}
public List<DonCLimMLineContent> createEntry(final EMH nd, final DonCLimM newDclm, OrdCalc ocal) {
- List<DonCLimMLineContent> newCalcs = new ArrayList<DonCLimMLineContent>();
- TLongObjectHashMap<DonCLimM> newValues = new TLongObjectHashMap<DonCLimM>();
+ List<DonCLimMLineContent> newCalcs = new ArrayList<>();
+ TLongObjectHashMap<DonCLimM> newValues = new TLongObjectHashMap<>();
newValues.put(nd.getUiId(), newDclm);
DonCLimMLineContent updated = new DonCLimMLineContent(ocal.getCalc(), newValues);
newCalcs.add(updated);
Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/ModellingComputeDataTopComponent.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/ModellingComputeDataTopComponent.java 2015-11-05 22:02:10 UTC (rev 9192)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/ModellingComputeDataTopComponent.java 2015-11-11 22:53:21 UTC (rev 9193)
@@ -126,8 +126,8 @@
@Override
public void valideModificationHandler() {
Node[] nodes = getExplorerManager().getRootContext().getChildren().getNodes();
- List<Calc> newCalcs = new ArrayList<Calc>();
- List<OrdCalc> newOrdCalcs = new ArrayList<OrdCalc>();
+ List<Calc> newCalcs = new ArrayList<>();
+ List<OrdCalc> newOrdCalcs = new ArrayList<>();
for (Node node : nodes) {
CalculNode calculNode = (CalculNode) node;
newCalcs.add(calculNode.getCalc());
Modified: trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/CalculNodeFactory.java
===================================================================
--- trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/CalculNodeFactory.java 2015-11-05 22:02:10 UTC (rev 9192)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/CalculNodeFactory.java 2015-11-11 22:53:21 UTC (rev 9193)
@@ -70,7 +70,7 @@
if (modellingScenarioService.getScenarioLoaded() == null) {
return Collections.emptyList();
}
- List<CalculNode> nodes = new ArrayList<CalculNode>();
+ List<CalculNode> nodes = new ArrayList<>();
OrdCalcCloner cloner = new OrdCalcCloner();
Result cloneOrdCalcAndCalc = cloner.cloneAndSort(modellingScenarioService.getScenarioLoaded());
final Map<Calc, OrdCalc> ordCalcByCalc = CalcHelper.getOrdCalcByCalc(cloneOrdCalcAndCalc.ordCalcs);
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:02:10 UTC (rev 9192)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopComponent.java 2015-11-11 22:53:21 UTC (rev 9193)
@@ -7,6 +7,7 @@
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import org.fudaa.ctulu.CtuluLog;
+import org.fudaa.ctulu.CtuluLogGroup;
import org.fudaa.ctulu.gui.CtuluLibSwing;
import org.fudaa.dodico.crue.common.Pair;
import org.fudaa.dodico.crue.edition.EditionUpdateActiveClimMs;
@@ -92,6 +93,7 @@
}
});
add(newCenter);
+ newCenter.setName(CENTER_NAME);
revalidate();
repaint();
newCenter.revalidate();
@@ -142,13 +144,13 @@
}
}
List<DonCLimMLineContent> dclims = tableModel.getDclims();
- CtuluLog res = new EditionUpdateActiveClimMs(getCcm()).updateCLimMs(dclims, getScenario());
- if (!res.containsErrorOrSevereError()) {
+ CtuluLogGroup res = new EditionUpdateActiveClimMs(getCcm()).updateCLimMs(dclims, getScenario());
+ if (!res.containsFatalError()) {
modellingScenarioModificationService.setScenarioModified(new ScenarioModificationEvent(EnumModification.OCAL));
setModified(false);
}
- if (res.isNotEmpty()) {
+ if (res.containsSomething()) {
LogsDisplayer.displayError(res, getName());
}
}
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:02:10 UTC (rev 9192)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/ModellingListCLimMsTopExportImportPopupBuilder.java 2015-11-11 22:53:21 UTC (rev 9193)
@@ -76,6 +76,7 @@
getMessage(ModellingListCLimMsTopExportImportPopupBuilder.class, "button.import.name"));
if (result != null) {
tc.rebuildCenterFor(result);
+ tc.setModified(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:02:10 UTC (rev 9192)
+++ trunk/soft/fudaa-crue/ui-modelling/src/main/java/org/fudaa/fudaa/crue/modelling/calcul/importer/CLimMsImporter.java 2015-11-11 22:53:21 UTC (rev 9193)
@@ -83,7 +83,6 @@
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();
@@ -138,6 +137,9 @@
}
}
+ if (create != null) {
+ valueByEmhUid.put(emh.getUiId(), create);
+ }
}
}
if (log.isNotEmpty()) {
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:02:10 UTC (rev 9192)
+++ trunk/soft/fudaa-crue/ui-views/src/main/java/org/fudaa/fudaa/crue/views/DonCLimMLineBuilder.java 2015-11-11 22:53:21 UTC (rev 9193)
@@ -39,11 +39,11 @@
DonClimMTableModel build(EMHScenario scenario, boolean clone) {
List<OrdCalc> ordCalcs = scenario.getOrdCalcScenario().getOrdCalc();
- List<DonCLimMLineContent> lines = new ArrayList<DonCLimMLineContent>();
- Set<Long> emhs = new HashSet<Long>();
+ List<DonCLimMLineContent> lines = new ArrayList<>();
+ Set<Long> emhs = new HashSet<>();
for (OrdCalc ordCalc : ordCalcs) {
List<DonCLimM> listeDCLMUserActive = ordCalc.getCalc().getlisteDCLMUserActive();
- TLongObjectHashMap<DonCLimM> dclmsByEMHId = new TLongObjectHashMap<DonCLimM>();
+ TLongObjectHashMap<DonCLimM> dclmsByEMHId = new TLongObjectHashMap<>();
for (DonCLimM donCLimM : listeDCLMUserActive) {
try {
if (!donCLimM.getActuallyActive()) {//EMH non active...
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|