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. |