From: <de...@us...> - 2015-09-22 22:11:48
|
Revision: 9175 http://sourceforge.net/p/fudaa/svn/9175 Author: deniger Date: 2015-09-22 22:11:45 +0000 (Tue, 22 Sep 2015) Log Message: ----------- CRUE-662 Modified Paths: -------------- trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/common/AbstractLoiCourbeModel.java trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/common/DefaultLoiTableModel.java trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/section/ProfilSectionLoiTableModel.java trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/section/ProfilSectionLoiUiController.java trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/controller/LayerTraceGisBuilder.java Modified: trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/common/AbstractLoiCourbeModel.java =================================================================== --- trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/common/AbstractLoiCourbeModel.java 2015-09-22 22:09:19 UTC (rev 9174) +++ trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/common/AbstractLoiCourbeModel.java 2015-09-22 22:11:45 UTC (rev 9175) @@ -154,7 +154,6 @@ treeSet.add(ptEvolDelta); } - } return true; } @@ -524,7 +523,10 @@ } Arrays.sort(idxToRemove); for (int i = nb - 1; i >= 0; i--) { - lines.remove(idxToRemove[i]); + int idx = idxToRemove[i]; + if (idx < lines.size() && idx >= 0) { + lines.remove(idx); + } } changeDone(); return true; Modified: trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/common/DefaultLoiTableModel.java =================================================================== --- trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/common/DefaultLoiTableModel.java 2015-09-22 22:09:19 UTC (rev 9174) +++ trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/common/DefaultLoiTableModel.java 2015-09-22 22:11:45 UTC (rev 9175) @@ -1,19 +1,25 @@ package org.fudaa.fudaa.crue.loi.common; +import java.util.List; import org.apache.commons.lang.StringUtils; +import org.fudaa.ctulu.CtuluCommandComposite; +import org.fudaa.ctulu.CtuluDoubleParser; import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.table.CtuluTableExportInterface; import org.fudaa.dodico.crue.config.ccm.PropertyNature; import org.fudaa.ebli.courbe.EGAxe; import org.fudaa.ebli.courbe.EGCourbe; import org.fudaa.ebli.courbe.EGTableGraphePanel; import org.fudaa.ebli.courbe.EGTableGraphePanel.SpecTableModel; +import org.fudaa.ebli.courbe.EGTableModel; +import org.fudaa.ebli.courbe.EGTableModelUpdatable; /** * Etend le tableModel par defaut de ebli-graphe, pour ajouter une colonne indiquant les erreurs/warnings et pour ne réagir qu'au courbe des points. * * @author Frederic Deniger */ -public class DefaultLoiTableModel extends SpecTableModel { +public class DefaultLoiTableModel extends SpecTableModel implements CtuluTableExportInterface, EGTableModelUpdatable { public DefaultLoiTableModel(EGTableGraphePanel graphePanel) { super(graphePanel); @@ -27,6 +33,51 @@ } @Override + public boolean isColumnExportable(int colModel) { + return colModel != 0; + } + + @Override + public int updateLines(final List _tab, final int _selectedColumm, + final int _selectedRow, final CtuluDoubleParser _doubleParser, final CtuluCommandComposite _cmp) { + final int nbLine = _tab.size(); + final int maxUpdate = Math.min(nbLine, getCourbe().getModel().getNbValues() - _selectedRow); + for (int i = 0; i < maxUpdate; i++) { + final List listCell = (List) _tab.get(i); + final int max = Math.min(getRowCount() - _selectedColumm, listCell.size()); + for (int j = 0; j < max; j++) { + final int iCellule = i + _selectedRow; + final int jCellule = j + _selectedColumm; + if (jCellule >= 1) { + final Object o = listCell.get(j); + setValueInModel(o, _doubleParser, iCellule, jCellule, _cmp); + } + } + } + return maxUpdate; + } + + protected void setValueInModel(final Object o, final CtuluDoubleParser _doubleParser, final int iCellule, final int jCellule, + final CtuluCommandComposite _cmp) { + boolean ok = false; + double d = 0; + if (o instanceof Number) { + d = ((Number) o).doubleValue(); + ok = true; + } else if (o != null) { + try { + d = _doubleParser.parse(o.toString()); + ok = true; + } catch (final NumberFormatException e) { + ok = false; + } + } + if (ok) { + setValueAt(d, iCellule, jCellule, _cmp); + } + } + + @Override protected void selectedCourbeChanged(EGCourbe _a) { if (_a == null && getCourbe() == null) { return; Modified: trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/section/ProfilSectionLoiTableModel.java =================================================================== --- trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/section/ProfilSectionLoiTableModel.java 2015-09-22 22:09:19 UTC (rev 9174) +++ trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/section/ProfilSectionLoiTableModel.java 2015-09-22 22:11:45 UTC (rev 9175) @@ -3,6 +3,7 @@ */ package org.fudaa.fudaa.crue.loi.section; +import com.memoire.fu.FuEmptyArrays; import gnu.trove.TIntObjectHashMap; import java.util.ArrayList; import java.util.Collections; @@ -10,7 +11,12 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.apache.commons.lang.StringUtils; +import org.fudaa.ctulu.CtuluCommandComposite; +import org.fudaa.ctulu.CtuluDoubleParser; +import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ctulu.CtuluListSelection; +import org.fudaa.dodico.crue.common.transformer.TransformerHelper; import org.fudaa.dodico.crue.metier.emh.DonFrt; import org.fudaa.dodico.crue.config.lit.LitNommeLimite; import org.fudaa.ebli.courbe.EGTableGraphePanel; @@ -28,9 +34,11 @@ public static final int COLUMN_FRT = 4; protected String donFrtLimiteLitAsString; protected String donFrtLimiteLitNommeAsString; + private final ProfilSectionLoiUiController profilSectionLoiUiController; - public ProfilSectionLoiTableModel(EGTableGraphePanel graphePanel) { + public ProfilSectionLoiTableModel(EGTableGraphePanel graphePanel, ProfilSectionLoiUiController profilSectionLoiUiController) { super(graphePanel); + this.profilSectionLoiUiController = profilSectionLoiUiController; donFrtLimiteLitAsString = org.openide.util.NbBundle.getMessage(LoiMessages.class, "ProfilSection.DonFrt.LimiteLit"); donFrtLimiteLitNommeAsString = org.openide.util.NbBundle.getMessage(LoiMessages.class, "ProfilSection.DonFrt.LimiteLitNomme"); } @@ -64,10 +72,38 @@ } @Override - public String getColumnName(int _column) { + protected void setValueInModel(final Object o, final CtuluDoubleParser _doubleParser, final int iCellule, final int jCellule, + final CtuluCommandComposite _cmp) { + if (jCellule == COLUMN_ETIQUETTE) { + String etiquettesValue = o == null ? null : o.toString(); + String[] etiquettes = StringUtils.split(etiquettesValue, ";"); + final List<ProfilSectionEtiquette> allEtiquettes = ProfilSectionEtiquette.getEtiquettes(profilSectionLoiUiController.getCcm()); + List<ProfilSectionEtiquette> newEtiquettes = new ArrayList<>(); + final Map<String, ProfilSectionEtiquette> toMapOfString = CtuluLibArray.toMapOfString(allEtiquettes); + for (String etiquette : etiquettes) { + final ProfilSectionEtiquette found = toMapOfString.get(etiquette); + if (found != null) { + newEtiquettes.add(found); + } + } + setEtiquettes(newEtiquettes, iCellule); + + } else if (jCellule == COLUMN_FRT) { + String frt = o == null ? null : o.toString(); + DonFrt toSet = profilSectionLoiUiController.getDonFrtByName(frt); + setValueAt(toSet, iCellule, jCellule); + } else { + super.setValueInModel(o, _doubleParser, iCellule, jCellule, _cmp); + } + } + + @Override + public String + getColumnName(int _column) { if (_column == COLUMN_ETIQUETTE) { return NbBundle.getMessage(LoiMessages.class, "Etiquette.Label"); } + if (_column == COLUMN_FRT) { return NbBundle.getMessage(LoiMessages.class, "DonFrt.Label"); } @@ -77,6 +113,7 @@ @Override public void setValueAt(Object _value, int _rowIndex, int _columnIndex) { if (_columnIndex == COLUMN_ETIQUETTE) { + // ne rien faire ici.setEtiquettes appelé explicitement par le CellEditor. } else if (_columnIndex == COLUMN_FRT) { if (_rowIndex < getCourbe().getModel().getNbValues()) { Modified: trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/section/ProfilSectionLoiUiController.java =================================================================== --- trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/section/ProfilSectionLoiUiController.java 2015-09-22 22:09:19 UTC (rev 9174) +++ trunk/soft/fudaa-crue/ui-loi/src/main/java/org/fudaa/fudaa/crue/loi/section/ProfilSectionLoiUiController.java 2015-09-22 22:11:45 UTC (rev 9175) @@ -24,6 +24,7 @@ import org.fudaa.ctulu.CtuluLogLevel; import org.fudaa.ctulu.CtuluNumberFormatDefault; import org.fudaa.dodico.crue.common.io.CrueIOResu; +import org.fudaa.dodico.crue.common.transformer.TransformerHelper; import org.fudaa.dodico.crue.config.ccm.ConfigLoi; import org.fudaa.dodico.crue.config.ccm.CrueConfigMetier; import org.fudaa.dodico.crue.config.ccm.DecimalFormatEpsilonEnum; @@ -187,6 +188,20 @@ } } + protected DonFrt getDonFrtByName(String id) { + if (id == null) { + return null; + } + Map<String, DonFrt> toMapOfId = TransformerHelper.toMapOfId(frt); + DonFrt frt = toMapOfId.get(id.toUpperCase()); + if (frt != null) { + return frt; + } + toMapOfId = TransformerHelper.toMapOfId(frtStockage); + return toMapOfId.get(id.toUpperCase()); + + } + public JLabel getLabelValidating() { return labelValidating; } @@ -330,7 +345,7 @@ @Override protected AbstractTableModel createTableModel() { - return new ProfilSectionLoiTableModel(tableGraphePanel); + return new ProfilSectionLoiTableModel(tableGraphePanel, this); } @Override Modified: trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/controller/LayerTraceGisBuilder.java =================================================================== --- trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/controller/LayerTraceGisBuilder.java 2015-09-22 22:09:19 UTC (rev 9174) +++ trunk/soft/fudaa-crue/ui-planimetry/src/main/java/org/fudaa/fudaa/crue/planimetry/controller/LayerTraceGisBuilder.java 2015-09-22 22:11:45 UTC (rev 9175) @@ -195,6 +195,13 @@ Coordinate aval = brancheGis.getCoordinateN(segmentidx + 1); double norm = amont.distance(aval); if (norm == 0) { + if (segmentidx > 0) { + amont = brancheGis.getCoordinateN(segmentidx - 1); + norm = amont.distance(aval); + if (norm == 0) { + return null; + } + } return null; } double vx = aval.x - amont.x; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |