Author: chatellier Date: 2010-12-15 15:55:26 +0000 (Wed, 15 Dec 2010) New Revision: 418 Log: Recherche des bornes min/max ?\195?\160 partir desquelles il y a des donn?\195?\169es Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/LengthStructureMatrixRenderer.java Modified: trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/LengthStructureMatrixRenderer.java =================================================================== --- trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/LengthStructureMatrixRenderer.java 2010-12-15 15:35:37 UTC (rev 417) +++ trunk/coser-ui/src/main/java/fr/ifremer/coser/ui/common/LengthStructureMatrixRenderer.java 2010-12-15 15:55:26 UTC (rev 418) @@ -23,9 +23,6 @@ package fr.ifremer.coser.ui.common; -import static org.nuiton.i18n.I18n._; -import static org.nuiton.i18n.I18n.n_; - import java.util.List; import org.jfree.data.category.CategoryDataset; @@ -34,8 +31,6 @@ import org.nuiton.math.matrix.viewer.renderer.MatrixChartRenderer; import org.nuiton.math.matrix.viewer.renderer.jfreechart.GraphMatrixNDDataset; -import fr.ifremer.coser.CoserConstants.Category; - /** * JFreeChart matrix panel renderer. * @@ -62,10 +57,30 @@ if ("coser.business.common.length".equals(semantic0Name)) { DefaultCategoryDataset defaultDataset = new DefaultCategoryDataset(); List<?> semantic0 = matrix.getSemantic(0); - double first = (Double)semantic0.get(0); - double last = (Double)semantic0.get(semantic0.size() - 1); + double first = Double.MAX_VALUE; + double last = Double.MIN_VALUE; + + // on cherche les bornes qui ont des valeurs sup à 0.0 + // sinon, ya du vide autour des choses demandées + // mais le vide entre est requis (trou de données) + for (Object categorySem : matrix.getSemantic(0)) { + for (Object serieSem : matrix.getSemantic(1)) { + Double value = matrix.getValue(new Object[] { categorySem, serieSem }); + if (value > 0.0) { + double category = (Double)categorySem; + if (first > category) { + first = category; + } + if (last < category) { + last = category; + } + } + } + } + + // on verifie toutes les valeurs pour savoir si c'est un + // pas entier ou un demi pas boolean haltStep = false; - for (Object number : semantic0) { double dNumber = (Double)number; if (dNumber - Math.floor(dNumber) > 0) { @@ -73,12 +88,14 @@ break; } } - + for (double index = first ; index <= last ; index += (haltStep) ? 0.5 : 1) { for (Object serieSem : matrix.getSemantic(1)) { Double value = null; + // il n'y a pas de valeur dans la matrices + // pour les pas intermédiaires ajouté if (semantic0.contains(index)) { value = matrix.getValue(new Object[] { index, serieSem }); }