r4365 - trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher
Author: bpoussin Date: 2016-09-01 11:42:02 +0200 (Thu, 01 Sep 2016) New Revision: 4365 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4365 Log: fixes #8484: Am?\195?\169liorer l'affichage du temps de progression des simulations Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java Modified: trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2016-09-01 09:35:53 UTC (rev 4364) +++ trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTableModel.java 2016-09-01 09:42:02 UTC (rev 4365) @@ -27,24 +27,23 @@ import static org.nuiton.i18n.I18n.t; +import fr.ifremer.isisfish.datastore.SimulationInformation; +import fr.ifremer.isisfish.simulator.SimulationControl; +import fr.ifremer.isisfish.simulator.SimulationParameter; +import fr.ifremer.isisfish.types.TimeStep; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.WeakHashMap; - import javax.swing.JProgressBar; import javax.swing.SwingUtilities; import javax.swing.table.AbstractTableModel; - +import org.apache.commons.lang3.time.DurationFormatUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - -import fr.ifremer.isisfish.simulator.SimulationControl; -import fr.ifremer.isisfish.simulator.SimulationParameter; -import fr.ifremer.isisfish.types.TimeStep; -import org.apache.commons.lang3.time.DurationFormatUtils; import org.nuiton.profiling.Unit; /** @@ -67,11 +66,11 @@ private static final long serialVersionUID = 2414926794815727974L; /** to use log facility, just put in your code: log.info(\"...\"); */ - private static Log log = LogFactory + private final static Log log = LogFactory .getLog(SimulationServiceTableModel.class); /** Columns names. */ - protected final static String[] columnHeader = new String[] { + protected final static String[] COLUMN_HEADER = new String[] { t("isisfish.queue.id"), t("isisfish.queue.plan"), t("isisfish.queue.launcher"), @@ -116,6 +115,7 @@ jobs.add(job); jobIds.put(id, job); SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { fireTableRowsInserted(jobs.size() - 1, jobs.size() - 1); } @@ -132,6 +132,7 @@ jobs.remove(index); jobIds.remove(id); SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { fireTableRowsDeleted(index, index); } @@ -143,6 +144,7 @@ public void clearJob() { jobs.clear(); SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { fireTableDataChanged(); } @@ -190,6 +192,7 @@ /* * @see javax.swing.table.TableModel#getRowCount() */ + @Override public int getRowCount() { int result = jobs.size(); return result; @@ -198,8 +201,9 @@ /* * @see javax.swing.table.TableModel#getColumnCount() */ + @Override public int getColumnCount() { - int result = columnHeader.length; + int result = COLUMN_HEADER.length; return result; } @@ -216,12 +220,13 @@ */ @Override public String getColumnName(int column) { - return columnHeader[column]; + return COLUMN_HEADER[column]; } /* * @see javax.swing.table.TableModel#getValueAt(int, int) */ + @Override public Object getValueAt(int rowIndex, int columnIndex) { // FIXME echatellier : hack ArrayIndexOutOfBoundException for unknown @@ -284,15 +289,21 @@ int value = (int) control.getProgress(); int max = (int) control.getProgressMax(); + double meanTime = control.getTimeStepMeanTime(); - String restTime = ""; int rest = max - value; - double time = rest * control.getTimeStepMeanTime(); - if (time > 0) { - long milli = (long)Unit.Time.s.convertTo(Unit.Time.milli, time); - restTime = DurationFormatUtils.formatDurationHMS(milli); + double time = rest * meanTime; + if (time <= 0) { + // fin de simulation, on met le temps de simulation + SimulationInformation info = control.getSimulation().getInformation(); + Date start = info.getSimulationStart(); + Date end = info.getSimulationEnd(); + time = (end.getTime() - start.getTime()) / 1000; } + long milli = (long)Unit.Time.s.convertTo(Unit.Time.milli, time); + String restTime = DurationFormatUtils.formatDurationHMS(milli); + pb.setMaximum(max); pb.setValue(value); @@ -324,11 +335,13 @@ setData(); } + @Override public void setData() { model.setJobs(new ArrayList<SimulationJob>(simulationService .getJobDones())); } + @Override public void simulationStart(SimulationService simService, SimulationJob job) { // this happens when job is restarted @@ -336,11 +349,13 @@ model.removeJob(job); } + @Override public void simulationStop(SimulationService simService, SimulationJob job) { model.addJob(job); } + @Override public void clearJobDone(SimulationService simService) { model.clearJob(); } @@ -397,6 +412,7 @@ this.model = model; } + @Override public void propertyChange(PropertyChangeEvent evt) { SimulationControl control = (SimulationControl) evt.getSource(); String id = control.getId(); @@ -405,6 +421,7 @@ final int index = model.getJobs().indexOf(job); if (index >= 0) { SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { fireTableRowsUpdated(index, index); }
participants (1)
-
bpoussin@users.forge.codelutin.com