|
From: <bma...@us...> - 2016-12-16 09:49:08
|
Revision: 9484
http://sourceforge.net/p/fudaa/svn/9484
Author: bmarchan
Date: 2016-12-16 09:49:05 +0000 (Fri, 16 Dec 2016)
Log Message:
-----------
Export de rapport de jaugeage (2ieme partie)
Modified Paths:
--------------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExportGaugingReportFillValuesPanel.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivShow3DTransectPanel.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java
Added Paths:
-----------
trunk/soft/fudaa-lspiv/distrib/src/dist/templates/
trunk/soft/fudaa-lspiv/distrib/src/dist/templates/template_gauging_fr.xlsx
Added: trunk/soft/fudaa-lspiv/distrib/src/dist/templates/template_gauging_fr.xlsx
===================================================================
(Binary files differ)
Index: trunk/soft/fudaa-lspiv/distrib/src/dist/templates/template_gauging_fr.xlsx
===================================================================
--- trunk/soft/fudaa-lspiv/distrib/src/dist/templates/template_gauging_fr.xlsx 2016-12-13 14:39:50 UTC (rev 9483)
+++ trunk/soft/fudaa-lspiv/distrib/src/dist/templates/template_gauging_fr.xlsx 2016-12-16 09:49:05 UTC (rev 9484)
Property changes on: trunk/soft/fudaa-lspiv/distrib/src/dist/templates/template_gauging_fr.xlsx
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExportGaugingReportFillValuesPanel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExportGaugingReportFillValuesPanel.java 2016-12-13 14:39:50 UTC (rev 9483)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivExportGaugingReportFillValuesPanel.java 2016-12-16 09:49:05 UTC (rev 9484)
@@ -26,7 +26,6 @@
import org.fudaa.fudaa.piv.action.PivExportGaugingReportAction;
import com.memoire.bu.BuVerticalLayout;
-import com.memoire.fu.FuLog;
/**
* Un panneau pour remplir les valeurs des cellules nomm\xE9es en vue d'exporter le rapport de jaugeage.
@@ -37,9 +36,9 @@
public class PivExportGaugingReportFillValuesPanel extends CtuluDialogPanel {
class ValuesTableModel extends AbstractTableModel {
- List<PivExportGaugingReportAction.CellExternalData> cells;
+ List<PivExportGaugingReportAction.UserCellData> cells;
- public ValuesTableModel(List<PivExportGaugingReportAction.CellExternalData> _cells) {
+ public ValuesTableModel(List<PivExportGaugingReportAction.UserCellData> _cells) {
cells=_cells;
}
@@ -59,7 +58,7 @@
return cells.get(rowIndex).description;
}
else {
- return cells.get(rowIndex).getValue();
+ return cells.get(rowIndex).getValue(0,0);
}
}
@@ -99,12 +98,12 @@
* Constructeur.
* @param _ui Le parent pour la boite de dialogue.
*/
- public PivExportGaugingReportFillValuesPanel(CtuluUI _ui, Collection<PivExportGaugingReportAction.CellExternalData> _cells) {
- ArrayList<PivExportGaugingReportAction.CellExternalData>cells=new ArrayList<>(_cells);
- cells.sort(new Comparator<PivExportGaugingReportAction.CellExternalData>() {
+ public PivExportGaugingReportFillValuesPanel(CtuluUI _ui, Collection<PivExportGaugingReportAction.UserCellData> _cells) {
+ ArrayList<PivExportGaugingReportAction.UserCellData>cells=new ArrayList<>(_cells);
+ cells.sort(new Comparator<PivExportGaugingReportAction.UserCellData>() {
@Override
- public int compare(PivExportGaugingReportAction.CellExternalData c1, PivExportGaugingReportAction.CellExternalData c2) {
+ public int compare(PivExportGaugingReportAction.UserCellData c1, PivExportGaugingReportAction.UserCellData c2) {
return c1.name.compareTo(c2.name);
}
});
@@ -130,58 +129,4 @@
add(pnValues,BorderLayout.CENTER);
}
-// @Override
-// public void setValue(Object _usedResults) {
-// if (!(_usedResults instanceof boolean[]))
-// throw new IllegalArgumentException("bad type parameter");
-// setSelectedResults((boolean[])_usedResults);
-// }
-//
-// @Override
-// public boolean[] getValue() {
-// return getSelectedResults();
-// }
-
- /**
- * D\xE9finit les resultats s\xE9lectionn\xE9s pour la moyenne.
- * @param _tool L'utilitaire
- */
-// public void setSelectedResults(boolean[] _usedResults) {
-// if (_usedResults==null) return;
-//
-// String[] values=new String[_usedResults.length];
-// for (int i=0; i<_usedResults.length; i++) {
-// values[i]=PivResource.getS("R\xE9sultat : {0}", (i+1));
-// }
-//
-// mdValues_.setData(values);
-//
-// for (int i=0; i<_usedResults.length; i++) {
-// if (_usedResults[i])
-// tbValues_.getTable().getSelectionModel().addSelectionInterval(i, i);
-// }
-//
-// }
-
-// /**
-// * @return Les r\xE9sultats selectionn\xE9s.
-// */
-// public boolean[] getSelectedResults() {
-// boolean[] idSels=new boolean[mdValues_.getRowCount()];
-// int[] sel=tbValues_.getTable().getSelectedRows();
-// for (int i : sel) {
-// idSels[i]=true;
-// }
-//
-// return idSels;
-// }
-
-// @Override
-// public boolean isDataValid() {
-// if (tbValues_.getTable().getSelectedRowCount()==0) {
-// setErrorText(PivResource.getS("Vous devez s\xE9lectionner 1 r\xE9sultat au moins pour la moyenne"));
-// return false;
-// }
-// return true;
-// }
}
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivShow3DTransectPanel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivShow3DTransectPanel.java 2016-12-13 14:39:50 UTC (rev 9483)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivShow3DTransectPanel.java 2016-12-16 09:49:05 UTC (rev 9484)
@@ -20,7 +20,7 @@
import org.fudaa.fudaa.piv.metier.PivTransect;
/**
- * Un panneau de saisie des param\xE8tres du transect pour le calcul des d\xE9bits.
+ * Un panneau d'affichage 3D des transects avec leurs vitesses calcul\xE9es.
*
* @author Bertrand Marchand (mar...@de...)
* @version $Id$
@@ -231,6 +231,10 @@
setHelpText(PivResource.getS("Clic gauche : Rotation de la vue\nCtrl+clic gauche : D\xE9placement de la vue\nShift+clic gauche : Zoom de la vue"));
}
+ public EG3dGraph get3dGraph() {
+ return pnGraph_;
+ }
+
public void setSelectedTransects(int... _isels) {
pnGraph_.removeAllDatas();
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java 2016-12-13 14:39:50 UTC (rev 9483)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivExportGaugingReportAction.java 2016-12-16 09:49:05 UTC (rev 9484)
@@ -8,22 +8,31 @@
package org.fudaa.fudaa.piv.action;
import java.awt.event.ActionEvent;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
+import java.io.IOException;
import java.util.HashMap;
+import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.ClientAnchor;
+import org.apache.poi.ss.usermodel.CreationHelper;
+import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.AreaReference;
+import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.fudaa.ctulu.CtuluLibImage;
import org.fudaa.ctulu.CtuluLog;
import org.fudaa.ctulu.gui.CtuluFileChooser;
import org.fudaa.ebli.commun.EbliActionSimple;
@@ -31,9 +40,11 @@
import org.fudaa.fudaa.piv.PivImplementation;
import org.fudaa.fudaa.piv.PivPreferences;
import org.fudaa.fudaa.piv.PivResource;
+import org.fudaa.fudaa.piv.PivShow3DTransectPanel;
import org.fudaa.fudaa.piv.PivUtils;
import org.fudaa.fudaa.piv.io.PivExeLauncher;
import org.fudaa.fudaa.piv.metier.PivComputeParameters;
+import org.fudaa.fudaa.piv.metier.PivFlowResults;
import org.fudaa.fudaa.piv.metier.PivGlobalFlowResults;
import org.fudaa.fudaa.piv.metier.PivOrthoParameters;
import org.fudaa.fudaa.piv.metier.PivOrthoPoint;
@@ -51,18 +62,34 @@
*/
public class PivExportGaugingReportAction extends EbliActionSimple {
- static abstract class AbstractCellData {
- public AbstractCellData() {}
+ static interface AbstractCellData {
+ public abstract Object getValue(int _row, int _col);
- public abstract String getValue();
+ public abstract int getNbCols();
+
+ public abstract int getNbRows();
}
- public static class CellExternalData extends AbstractCellData {
+ static abstract class AbstractScalarCellData implements AbstractCellData {
+ public AbstractScalarCellData() {}
+
+ @Override
+ public int getNbCols() {
+ return 1;
+ }
+
+ @Override
+ public int getNbRows() {
+ return 1;
+ }
+ }
+
+ public static class UserCellData extends AbstractScalarCellData {
public String name;
public String value;
public String description;
- public CellExternalData(String _name, String _description) {
+ public UserCellData(String _name, String _description) {
super();
name = _name;
description=_description;
@@ -73,17 +100,27 @@
}
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return value;
}
}
+ /**
+ * Un data retournant une image.
+ * @author Bertrand Marchand (mar...@de...)
+ */
+ public abstract static class ImageCellData extends AbstractScalarCellData {
+ @Override
+ public abstract byte[] getValue(int _row, int _col);
+ }
+
PivImplementation impl;
// CtuluDialog diProgress_;
CtuluFileChooser fcReport_;
- /** Les variables inconnues du modele Excel. */
- HashMap<String,CellExternalData> hunknownVars=new HashMap<>();
- HashMap<String,AbstractCellData> dataTypes_ = new HashMap<>();
+ /** Les variables users (inconnues du systeme) du modele Excel. */
+ HashMap<String,UserCellData> userVars=new HashMap<>();
+ /** Toutes les variables correspondantes aux cellules nomm\xE9es. */
+ HashMap<String,AbstractCellData> dataVars_ = new HashMap<>();
/**
* Constructeur.
@@ -106,171 +143,175 @@
return;
}
+ try {
-// // Export des images, eventuellement dans un autre format.
-// CtuluTaskOperationGUI r=new CtuluTaskOperationGUI(impl, PivResource.getS("Export du rapport de jaugeage")) {
-//
-// @Override
-// public void act() {
- try {
-// this.setDesc(PivResource.getS("Export du rapport de jaugeage"));
-// this.setProgression(0);
-
- computeNeededDatas();
- initDataTypes();
+ computeNeededDatas();
+ initDataTypes();
- // Lecture des cellules du template.
- String templateDir=System.getProperty(PivPreferences.PIV_TEMPLATES_PATH,System.getProperty("user.dir")+"/templates");
- String templateName="template_gauging_"+BuPreferences.BU.getStringProperty("locale.language", System.getProperty("piv.lang", "fr"))+".xlsx";
+ String templateDir=System.getProperty(PivPreferences.PIV_TEMPLATES_PATH, System.getProperty("user.dir") + "/templates");
+ String templateName="template_gauging_" + BuPreferences.BU.getStringProperty("locale.language", System.getProperty("piv.lang", "fr")) + ".xlsx";
+
+ File ftemplate=new File(templateDir, templateName);
+ if (!ftemplate.exists()) {
+ impl.error(PivResource.getS("Erreur mod\xE8le"), PivResource.getS("Le mod\xE8le {0} n'existe pas", ftemplate));
+ }
+
+ Workbook wb=new XSSFWorkbook(new FileInputStream(ftemplate));
+ CreationHelper ch = wb.getCreationHelper();
+
+ // Le nombre de cellules nomm\xE9es
+ int nbnames=wb.getNumberOfNames();
+
+ // Recup\xE9ration depuis le template des variables utilisateurs.
+
+ for (int i=0; i < nbnames; i++) {
+ Name namedCell=wb.getNameAt(i);
+
+ String cellname=namedCell.getNameName();
+ FuLog.debug(cellname);
+
+ int ind;
+ if ((ind=cellname.indexOf('.')) != -1) {
+ cellname=cellname.substring(0, ind);
+ }
+
+ if (!dataVars_.containsKey(cellname)) {
+ String desc=namedCell.getComment();
+ if (desc == null || desc.isEmpty())
+ desc=cellname;
+
+ if (!userVars.containsKey(cellname))
+ userVars.put(cellname, new UserCellData(cellname, desc));
+ }
+ }
+
+ // Saisie des valeurs depuis la table des cellules nomm\xE9es utilisateur.
+
+ if (!userVars.isEmpty()) {
+ PivExportGaugingReportFillValuesPanel diValues=new PivExportGaugingReportFillValuesPanel(impl, userVars.values());
+ if (diValues.afficheModale(impl.getFrame(), PivResource.getS("A renseigner")) == JOptionPane.CANCEL_OPTION)
+ return;
+ }
+
+ dataVars_.putAll(userVars);
+
+ // Remplissage des cellules nomm\xE9es du template depuis les datas
+
+ HashMap<String, HashMap<String, CellRangeAddress>> rowCol2CellAdress=new HashMap<>();
+
+ for (int i=0; i < nbnames; i++) {
+ Name namedCell=wb.getNameAt(i);
+
+ String cellname=namedCell.getNameName();
+ int ind;
+ if ((ind=cellname.indexOf('.')) != -1) {
+ cellname=cellname.substring(0, ind);
+ }
+
+ // Recuperation la premiere cellule de la zone nomm\xE9e
+
+ AreaReference aref=new AreaReference(namedCell.getRefersToFormula());
+ // Generalement TOP/LEFT
+ CellReference crefTL=aref.getFirstCell();
+ // Generalement BOTTOM/RIGHT
+ CellReference crefBR=aref.getLastCell();
+ Sheet currentSheet=wb.getSheet(crefTL.getSheetName());
+ Drawing drawing = currentSheet.createDrawingPatriarch();
+
+ // Ces map servent a faire le lien entre des cellules et des cellules fusionn\xE9es. Utilis\xE9 pour les tableaux.
+ HashMap<String, CellRangeAddress> rc2CellAdress=rowCol2CellAdress.get(crefTL.getSheetName());
+ if (rc2CellAdress == null) {
+ rc2CellAdress=new HashMap<>();
+ for (int imr=0; imr < currentSheet.getNumMergedRegions(); imr++) {
+ CellRangeAddress cra=currentSheet.getMergedRegion(imr);
+ rc2CellAdress.put(cra.getFirstRow() + "_" + cra.getFirstColumn(), cra);
+ }
+
+ rowCol2CellAdress.put(crefTL.getSheetName(), rc2CellAdress);
+ }
+
+ int firstRow=crefTL.getRow();
+ int firstCol=crefTL.getCol();
+
+ // Ajoute toutes les valeurs de la variable dans les zones nomm\xE9es.
+
+ AbstractCellData cellWrapper=dataVars_.get(cellname);
+
+ // Une donn\xE9e de type image.
+ if (cellWrapper instanceof ImageCellData) {
+ ImageCellData imgWrapper = (ImageCellData)cellWrapper;
+ byte[] bytes=imgWrapper.getValue(0, 0);
- File ftemplate = new File(templateDir, templateName);
- if (!ftemplate.exists()) {
- impl.error(PivResource.getS("Erreur mod\xE8le"), PivResource.getS("Le mod\xE8le {0} n'existe pas",ftemplate));
+ if (bytes==null) {
+ Row r=currentSheet.getRow(firstRow);
+ Cell c=r.getCell(firstCol);
+ c.setCellValue("**No data**");
}
-
- Workbook wb = new XSSFWorkbook(new FileInputStream(ftemplate));
+ else {
+ int ipict=wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
+ ClientAnchor anchor=ch.createClientAnchor();
+ anchor.setRow1(firstRow);
+ anchor.setCol1(firstCol);
+ anchor.setRow2(crefBR.getRow() + 1);
+ anchor.setCol2(crefBR.getCol() + 1);
- try {
- int nbnames=wb.getNumberOfNames();
-
- // Recup\xE9ration des cellules nomm\xE9es non connues
- for (int i=0; i < nbnames; i++) {
- Name namedCell=wb.getNameAt(i);
-
- String cellname = namedCell.getNameName();
- FuLog.debug(cellname);
- int ind;
- if ((ind=cellname.indexOf('.'))!=-1) {
- cellname=cellname.substring(0, ind);
+ drawing.createPicture(anchor, ipict);
+ }
+ }
+
+ // Une donn\xE9e de type valeur.
+ else {
+ int currentRow=firstRow;
+ for (int irow=0; irow < cellWrapper.getNbRows(); irow++) {
+ int currentCol=firstCol;
+ for (int icol=0; icol < cellWrapper.getNbCols(); icol++) {
+ Row r=currentSheet.getRow(currentRow);
+ Cell c=r.getCell(currentCol);
+ if (c != null) {
+ Object val=cellWrapper.getValue(irow, icol);
+ c.setCellValue(val == null ? "-" : val.toString());
}
-
- if (!dataTypes_.containsKey(cellname)) {
- String desc = namedCell.getComment();
- if (desc==null || desc.isEmpty())
- desc = cellname;
-
- CellExternalData val=new CellExternalData(cellname, desc);
- if (!hunknownVars.containsKey(cellname))
- hunknownVars.put(cellname,new CellExternalData(cellname, desc));
+ CellRangeAddress cra=rc2CellAdress.get(currentRow + "_" + currentCol);
+ if (cra == null) {
+ currentCol++;
}
+ else {
+ currentCol+=cra.getLastColumn() - cra.getFirstColumn() + 1;
+ }
}
-
- // Saisie des valeurs depuis la table des valeurs.
- if (!hunknownVars.isEmpty()) {
- PivExportGaugingReportFillValuesPanel diValues=new PivExportGaugingReportFillValuesPanel(impl, hunknownVars.values());
- if (diValues.afficheModale(impl.getFrame(),PivResource.getS("A renseigner"))==JOptionPane.CANCEL_OPTION)
- return;
+ CellRangeAddress cra=rc2CellAdress.get(currentRow + "_" + firstCol);
+ if (cra == null) {
+ currentRow++;
}
-
- dataTypes_.putAll(hunknownVars);
-
- for (int i=0; i < nbnames; i++) {
- Name namedCell=wb.getNameAt(i);
-
- String cellname = namedCell.getNameName();
- int ind;
- if ((ind=cellname.indexOf('.'))!=-1) {
- cellname=cellname.substring(0, ind);
- }
-
- // retrieve the cell at the named range and test its contents
- AreaReference aref=new AreaReference(namedCell.getRefersToFormula());
- CellReference[] crefs=aref.getAllReferencedCells();
- for (int icell=0; icell < crefs.length; icell++) {
- Sheet s=wb.getSheet(crefs[icell].getSheetName());
- Row r=s.getRow(crefs[icell].getRow());
- Cell c=r.getCell(crefs[icell].getCol());
- if (c != null) {
- if (dataTypes_.containsKey(cellname)) {
- c.setCellValue(dataTypes_.get(cellname).getValue());
- }
- else {
- c.setCellValue("#####");
- }
- }
- else {
- FuLog.debug("Null cell");
- }
- }
+ else {
+ currentRow+=cra.getLastRow() - cra.getFirstRow() + 1;
}
}
- finally {
- }
-
- // Ecriture du fichier final
- if (fcReport_==null)
- fcReport_ = new CtuluFileChooser(true);
- fcReport_.setAcceptAllFileFilterUsed(true);
- fcReport_.setFileFilter(PivUtils.FILE_FLT_XLSX);
- fcReport_.setMultiSelectionEnabled(false);
- fcReport_.setDialogTitle(PivResource.getS("Ficher Excel d'export"));
- if (fcReport_.showSaveDialog(impl.getFrame()) == JFileChooser.CANCEL_OPTION) {
- return;
- }
-
- wb.write(new FileOutputStream(fcReport_.getSelectedFile()));
-
-
-// readPdfDatas();
-
-// InputStream is=PivResource.class.getResourceAsStream("template_jaugeage_vide.pdf");
-// PdfDocument pdfdoc = new PdfDocument(new PdfReader("C:\\projets\\fudaa\\documents\\contrats\\2016_lspiv-1.5_DTG-IRSTEA\\fournitures\\formulaire_lo.pdf"), new PdfWriter("C:\\projets\\fudaa\\documents\\contrats\\2016_lspiv-1.5_DTG-IRSTEA\\fournitures\\\\out.pdf"));
-//
-// PdfAcroForm form = PdfAcroForm.getAcroForm(pdfdoc, false);
-// Map<String, PdfFormField> fields = form.getFormFields();
-// fields.get("Texte2").setValue("Essai");
-// form.flattenFields();
-
-// for (int ipage=0; ipage < pdfdoc.getNumberOfPages(); ipage++) {
-// PdfCanvas pdfcanvas=new PdfCanvas(pdfdoc, ipage+1);
-// Canvas canvas=new Canvas(pdfcanvas, pdfdoc, pdfdoc.getPage(ipage+1).getPageSize());
-// canvas.setFontSize(10);;
-//
-// for (AbstractPdfData data : getPdfDatas(ipage + 1)) {
-// canvas.showTextAligned(data.getValue(), data.posX, data.posY, TextAlignment.LEFT);
-// }
-// canvas.close();
-// }
-// pdfdoc.close();
-// Document doc = new Document(pdfdoc);
-// doc.setFixedPosition(0, 0, 200);
-// doc.add(new Paragraph("Hello"));
-// doc.close();
-
-// if (this.isStopRequested())
-// return;
}
- catch (Exception e) {
- e.printStackTrace();
- }
-// finally {
-// diProgress_.dispose();
-// }
-// }
-// };
+ }
-// PivProgressionPanel pnProgress_=new PivProgressionPanel(r);
-// diProgress_ = pnProgress_.createDialog(impl.getParentComponent());
-// diProgress_.setOption(CtuluDialog.ZERO_OPTION);
-// diProgress_.setDefaultCloseOperation(CtuluDialog.DO_NOTHING_ON_CLOSE);
-// diProgress_.setTitle(r.getName());
-//
-// r.start();
-// diProgress_.afficheDialogModal();
+ // Ecriture du fichier final
+
+ if (fcReport_ == null)
+ fcReport_=new CtuluFileChooser(true);
+ fcReport_.setAcceptAllFileFilterUsed(true);
+ fcReport_.setFileFilter(PivUtils.FILE_FLT_XLSX);
+ fcReport_.setMultiSelectionEnabled(false);
+ fcReport_.setDialogTitle(PivResource.getS("Ficher Excel d'export"));
+ if (fcReport_.showSaveDialog(impl.getFrame()) == JFileChooser.CANCEL_OPTION) {
+ return;
+ }
+
+ wb.write(new FileOutputStream(fcReport_.getSelectedFile()));
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
}
-
-// public List<AbstractCellData> getPdfDatas(int _pageNumber) {
-// List<AbstractCellData> ret = new ArrayList<>();
-//
-// for (AbstractCellData data : datas_) {
-// if (data.pageNumber==_pageNumber) {
-// ret.add(data);
-// }
-// }
-//
-// return ret;
-// }
+ /**
+ * Calcule les donn\xE9es non stock\xE9es dans le projet, necessaires \xE0 la r\xE9alisation du template.
+ */
protected void computeNeededDatas() {
// Calcul des erreurs
if (impl.getCurrentProject().getOrthoPoints() != null) {
@@ -290,42 +331,47 @@
}
public void initDataTypes() {
- dataTypes_.clear();
+ dataVars_.clear();
final PivTransect[] transects=impl.getCurrentProject().getTransects();
final PivComputeParameters pivParams = impl.getCurrentProject().getComputeParameters();
- final PivGlobalFlowResults flowResults = new PivGlobalFlowResults(impl.getCurrentProject().getFlowResults());
+ final PivFlowResults[] flowResults = impl.getCurrentProject().getFlowResults();
final PivOrthoPoint[] orthoPoints = impl.getCurrentProject().getOrthoPoints();
final PivOrthoParameters orthoParams = impl.getCurrentProject().getOrthoParameters();
- dataTypes_.put("__COEF_VITESSE",new AbstractCellData() {
+ final PivGlobalFlowResults globRes = new PivGlobalFlowResults(flowResults);
+ final Double meanDisch=globRes.getAverageScalarResult(ResultType.DISCHARGE);
+ final Double meanArea=globRes.getAverageScalarResult(ResultType.WETTED_AREA);
+ final Double meanMeanV=globRes.getAverageScalarResult(ResultType.MEAN_VELOCITY);
+
+ dataVars_.put("__COEF_VITESSE",new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
// On prend le coef de vitesse du premier transect, s'il existe
return (transects==null || transects.length==0) ? null:""+transects[0].getParams().getSurfaceCoef();
}
});
- dataTypes_.put("__CORREL_MAX",new AbstractCellData() {
+ dataVars_.put("__CORREL_MAX",new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:""+pivParams.getMaxCorrelation();
}
});
- dataTypes_.put("__CORREL_MIN",new AbstractCellData() {
+ dataVars_.put("__CORREL_MIN",new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:""+pivParams.getMinCorrelation();
}
});
- dataTypes_.put("__DEBIT_MOYEN",new AbstractCellData() {
+ dataVars_.put("__DEBIT_MOYEN",new AbstractScalarCellData() {
@Override
- public String getValue() {
- return flowResults.getAverageScalarResult(ResultType.DISCHARGE)==null ? null:flowResults.getAverageScalarResult(ResultType.DISCHARGE)+" m\xB3/s";
+ public String getValue(int _row, int _col) {
+ return meanDisch==null ? null:meanDisch+" m\xB3/s";
}
});
- dataTypes_.put("__ERREUR_MAX",new AbstractCellData() {
+ dataVars_.put("__ERREUR_MAX",new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
if (orthoPoints==null)
return null;
@@ -336,84 +382,126 @@
return maxi+" m";
}
});
- dataTypes_.put("__HAUTEUR",new AbstractCellData() {
+ dataVars_.put("__HAUTEUR",new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return orthoParams==null ? null:orthoParams.getWaterElevation()+" m";
}
});
- dataTypes_.put("__IA_M",new AbstractCellData() {
+ dataVars_.put("__IA_M",new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return (pivParams==null || orthoParams==null) ? null:(pivParams.getIASize()*orthoParams.getResolution())+" m";
}
});
- dataTypes_.put("__IA_PIX",new AbstractCellData() {
+ dataVars_.put("__IA_PIX",new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:pivParams.getIASize()+" pix";
}
});
- dataTypes_.put("__INTERTEMPS",new AbstractCellData() {
+ dataVars_.put("__INTERTEMPS",new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:pivParams.getTimeInterval()+" s";
}
});
- dataTypes_.put("__NOMBRE_GRPS", new AbstractCellData() {
+ dataVars_.put("__NOMBRE_GRPS", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return orthoPoints==null ? null:orthoPoints.length+"";
}
});
- dataTypes_.put("__NOMBRE_IMAGES", new AbstractCellData() {
+ dataVars_.put("__NOMBRE_IMAGES", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return ""+impl.getCurrentProject().getSrcImageFiles().length;
}
});
- dataTypes_.put("__NOMBRE_TRANSECTS", new AbstractCellData() {
+ dataVars_.put("__NOMBRE_TRANSECTS", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return transects==null ? null:transects.length+"";
}
});
- dataTypes_.put("__NORME_MAX", new AbstractCellData() {
+ dataVars_.put("__NORME_MAX", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:pivParams.getSmax()+" m/s";
}
});
- dataTypes_.put("__NORME_MIN", new AbstractCellData() {
+ dataVars_.put("__NORME_MIN", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:pivParams.getSmin()+" m/s";
}
});
- dataTypes_.put("__PAS_INTERPOLATION", new AbstractCellData() {
+ dataVars_.put("__PAS_INTERPOLATION", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
// On prend le pas du premier transect, s'il existe
return (transects==null || transects.length==0) ? null:transects[0].getParams().getInterpolationStep()+" m";
}
});
- dataTypes_.put("__RAYON_RECHERCHE", new AbstractCellData() {
+ dataVars_.put("__RAYON_RECHERCHE", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
// On prend le rayon du premier transect, s'il existe
return (transects==null || transects.length==0) ? null:transects[0].getParams().getRadius()+" m";
}
});
- dataTypes_.put("__RESOLUTION", new AbstractCellData() {
+ dataVars_.put("__RESOLUTION", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
// On prend le rayon du premier transect, s'il existe
return orthoParams==null ? null:orthoParams.getResolution()+" m/pix";
}
});
- dataTypes_.put("__SIM_MS", new AbstractCellData() {
+ dataVars_.put("__RESULTATS", new AbstractCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
+ if (flowResults==null)
+ return null;
+
+ switch (_col) {
+ case 0:
+ default:
+ // Num\xE9ro de transect
+ return _row+1+"";
+ case 1:
+ // D\xE9bit total
+ return flowResults[_row].getDischarge()+"";
+ case 2:
+ // Ecart debit % moyenne
+ return ((flowResults[_row].getDischarge()-meanDisch)/meanDisch*100)+"";
+ case 3:
+ // Aire mouill\xE9e
+ return flowResults[_row].getWettedArea()+"";
+ case 4:
+ // Ecart aire mouill\xE9e % moyenne
+ return ((flowResults[_row].getWettedArea()-meanArea)/meanArea*100)+"";
+ case 5:
+ // Vitese moyenne
+ return flowResults[_row].getMeanVelocity()+"";
+ case 6:
+ // Ecart vitesse moyenne % moyenne
+ return ((flowResults[_row].getMeanVelocity()-meanMeanV)/meanMeanV*100)+"";
+ }
+ }
+
+ @Override
+ public int getNbCols() {
+ return 7;
+ }
+
+ @Override
+ public int getNbRows() {
+ return transects==null ? 0 : transects.length;
+ }
+ });
+ dataVars_.put("__SIM_MS", new AbstractScalarCellData() {
+ @Override
+ public String getValue(int _row, int _col) {
if (orthoParams!=null && pivParams!=null) {
double val;
if (pivParams.getTimeInterval()==0) {
@@ -428,15 +516,15 @@
return null;
}
});
- dataTypes_.put("__SIM_PIX", new AbstractCellData() {
+ dataVars_.put("__SIM_PIX", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:pivParams.getSim()+" pix";
}
});
- dataTypes_.put("__SIP_MS", new AbstractCellData() {
+ dataVars_.put("__SIP_MS", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
if (orthoParams!=null && pivParams!=null) {
double val;
if (pivParams.getTimeInterval()==0) {
@@ -451,15 +539,15 @@
return null;
}
});
- dataTypes_.put("__SIP_PIX", new AbstractCellData() {
+ dataVars_.put("__SIP_PIX", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:pivParams.getSip()+" pix";
}
});
- dataTypes_.put("__SJM_MS", new AbstractCellData() {
+ dataVars_.put("__SJM_MS", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
if (orthoParams!=null && pivParams!=null) {
double val;
if (pivParams.getTimeInterval()==0) {
@@ -474,15 +562,15 @@
return null;
}
});
- dataTypes_.put("__SJM_PIX", new AbstractCellData() {
+ dataVars_.put("__SJM_PIX", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:pivParams.getSjm()+" pix";
}
});
- dataTypes_.put("__SJP_MS", new AbstractCellData() {
+ dataVars_.put("__SJP_MS", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
if (orthoParams!=null && pivParams!=null) {
double val;
if (pivParams.getTimeInterval()==0) {
@@ -497,86 +585,102 @@
return null;
}
});
- dataTypes_.put("__SJP_PIX", new AbstractCellData() {
+ dataVars_.put("__SJP_PIX", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:pivParams.getSjp()+" pix";
}
});
- dataTypes_.put("__VX_MAX", new AbstractCellData() {
+ dataVars_.put("__VX_MAX", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:pivParams.getVxmax()+" m/s";
}
});
- dataTypes_.put("__VX_MIN", new AbstractCellData() {
+ dataVars_.put("__VX_MIN", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:pivParams.getVxmin()+" m/s";
}
});
- dataTypes_.put("__VY_MAX", new AbstractCellData() {
+ dataVars_.put("__VY_MAX", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:pivParams.getVymax()+" m/s";
}
});
- dataTypes_.put("__VY_MIN", new AbstractCellData() {
+ dataVars_.put("__VY_MIN", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return pivParams==null ? null:pivParams.getVymin()+" m/s";
}
});
- dataTypes_.put("__X_MAX", new AbstractCellData() {
+ dataVars_.put("__X_MAX", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return orthoParams==null ? null:orthoParams.getXmax()+" m";
}
});
- dataTypes_.put("__X_MIN", new AbstractCellData() {
+ dataVars_.put("__X_MIN", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return orthoParams==null ? null:orthoParams.getXmin()+" m";
}
});
- dataTypes_.put("__Y_MAX", new AbstractCellData() {
+ dataVars_.put("__Y_MAX", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return orthoParams==null ? null:orthoParams.getYmax()+" m";
}
});
- dataTypes_.put("__Y_MIN", new AbstractCellData() {
+ dataVars_.put("__Y_MIN", new AbstractScalarCellData() {
@Override
- public String getValue() {
+ public String getValue(int _row, int _col) {
return orthoParams==null ? null:orthoParams.getYmin()+" m";
}
});
+ dataVars_.put("__VUE_2D", new ImageCellData() {
+
+ @Override
+ public byte[] getValue(int _row, int _col) {
+ BufferedImage img=impl.get2dFrame().getVisuPanel().produceImage(null);
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ try {
+ ImageIO.write(img, "png", bos);
+ return bos.toByteArray();
+ }
+ catch (IOException e) {
+ return null;
+ }
+ }
+ });
+ dataVars_.put("__VUE_3D", new ImageCellData() {
+
+ @Override
+ public byte[] getValue(int _row, int _col) {
+ if (transects==null || transects.length==0)
+ return null;
+
+ int[] isels=new int[transects.length];
+ for (int i=0; i<transects.length; i++) {
+ isels[i]=i;
+ }
+ PivShow3DTransectPanel pn=new PivShow3DTransectPanel(impl);
+ pn.setSelectedTransects(isels);
+ pn.get3dGraph().setSize(500, 500);
+ BufferedImage img=CtuluLibImage.produceImageForComponent(pn.get3dGraph(),null);
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ try {
+ ImageIO.write(img, "png", bos);
+ return bos.toByteArray();
+ }
+ catch (IOException e) {
+ return null;
+ }
+ }
+ });
}
-// public void readPdfDatas() {
-// datas_.clear();
-// datas_.add(new CellExternalData(100, 761, "CodeStation", DataType.EXTERNAL, 1, "Q0244"));
-// datas_.add(new CellExternalData(100, 747, "NomStation", DataType.EXTERNAL, 1, "Pont de la Draye"));
-// datas_.add(new CellExternalData(410, 761, "NumMesure", DataType.EXTERNAL, 1, "172"));
-// datas_.add(new CellExternalData(410, 747, "DateMesure", DataType.EXTERNAL, 1, "27/08/2015 15:52"));
-//
-// datas_.add(new CellExternalData(130, 702, "MesurePar", DataType.EXTERNAL, 1, "R. Durand"));
-// datas_.add(new CellExternalData(130, 688, "DepouillePar", DataType.EXTERNAL, 1, "T. Content"));
-//
-// datas_.add(new CellExternalData(100, 761, "CodeStation", DataType.EXTERNAL, 2, "Q0244"));
-// datas_.add(new CellExternalData(100, 747, "NomStation", DataType.EXTERNAL, 2, "Pont de la Draye"));
-// datas_.add(new CellExternalData(410, 761, "NumMesure", DataType.EXTERNAL, 2, "172"));
-// datas_.add(new CellExternalData(410, 747, "DateMesure", DataType.EXTERNAL, 2, "27/08/2015 15:52"));
-//
-// datas_.add(new AbstractCellData(130, 716, "Hauteur", DataType.EXTERNAL, 1) {
-//
-// @Override
-// public String getValue() {
-// return impl.getCurrentProject().getOrthoParameters().getWaterElevation()+" m";
-// }
-// });
-// }
-
/**
* @return true Si toutes les donn\xE9es sont pr\xE9sentes pour un lancement.
*/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|