Update of /cvsroot/fudaa/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac
In directory sc8-pr-cvs1:/tmp/cvs-serv1411/tr/telemac
Added Files:
TrTelemacCasProcess.java TrTelemacFilleEntite.java
TrTelemacImplHelper.java TrTelemacParametres.java
TrTelemacProjet.java
Log Message:
Projet preprocesseur commun
--- NEW FILE: TrTelemacCasProcess.java ---
/*
* @file TelemacCasProcess.java
* @creation 16 avr. 2003
* @modification $Date: 2003/05/19 14:31:48 $
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.tr.telemac;
import java.awt.Frame;
import java.io.File;
import java.io.IOException;
import com.memoire.bu.BuCommonImplementation;
import org.fudaa.dodico.commun.DodicoLib;
import org.fudaa.dodico.commun.ProgressionInterface;
import org.fudaa.dodico.fichiers.FileReaderInterface;
import org.fudaa.dodico.h2d.H2dFileFormat;
import org.fudaa.dodico.telemac.io.TelemacCasFileFormat;
import org.fudaa.fudaa.commun.FudaaLib;
import org.fudaa.fudaa.tr.dico.TrDicoEntiteFile;
/**
* @author deniger
* @version $Id: TrTelemacCasProcess.java,v 1.1 2003/05/19 14:31:48 deniger Exp $
*/
public class TrTelemacCasProcess
{
ProgressionInterface progress_;
BuCommonImplementation impl_;
boolean error_;
Frame frame_;
public TrTelemacCasProcess(ProgressionInterface _progress, BuCommonImplementation _impl)
{
progress_ = _progress;
impl_ = _impl;
if (impl_ != null)
frame_ = _impl.getFrame();
}
public TrTelemacCasProcess(ProgressionInterface _progress)
{
progress_ = _progress;
}
public TrTelemacParametres createProjet(File _f, TelemacCasFileFormat ft_)
{
TrTelemacParametres r = new TrTelemacParametres();
r.setCas(ft_, _f, this);
if (error_)
return null;
return r;
}
protected void error(String _s)
{
error_ = true;
FudaaLib.showError(impl_, "Erreur", _s);
}
public void maj(TrDicoEntiteFile _e)
{
if (_e.containsErrors())
{
_e.getAnalyze().printResume();
}
}
protected Object read(String _baseDir, String _file, H2dFileFormat _fileFormat, TrDicoEntiteFile _baseEntFile)
{
File f = DodicoLib.getAbsolutePath(_baseDir, _file);
return read(f, _fileFormat, _baseEntFile);
}
protected Object read(File _file, H2dFileFormat _fileFormat, TrDicoEntiteFile _baseEntFile)
{
FileReaderInterface reader = _fileFormat.createReader();
IOException[] e = _fileFormat.read(_file, reader, progress_);
manageException(e, reader, _file);
updateFileDescription(reader, _file, _baseEntFile);
return reader.getInterface();
}
protected void manageException(IOException[] e, FileReaderInterface _i, File _f)
{
if (e != null)
{
System.out.println("impossible de fermer " + _f);
e[0].printStackTrace();
}
}
protected static void updateFileDescription(FileReaderInterface _reader, File _f, TrDicoEntiteFile _r)
{
_r.setLoaded(_reader.getAnalyze(), System.currentTimeMillis(), _reader.getFileFormat(), DodicoLib.getConanicalPath(_f));
}
}
--- NEW FILE: TrTelemacFilleEntite.java ---
/*
* @file TrTelemacFilleEntite.java
* @creation 29 avr. 2003
* @modification $Date: 2003/05/19 14:31:49 $
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.tr.telemac;
import java.awt.Color;
import java.awt.Component;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import com.memoire.bu.BuBorderLayout;
import com.memoire.bu.BuButton;
import com.memoire.bu.BuButtonLayout;
import com.memoire.bu.BuInternalFrame;
import com.memoire.bu.BuList;
import com.memoire.bu.BuMenuItem;
import com.memoire.bu.BuPanel;
import com.memoire.bu.BuPopupMenu;
import com.memoire.bu.BuScrollPane;
import com.memoire.bu.BuSplit2Pane;
import com.memoire.bu.BuTabbedPane;
import com.memoire.bu.BuTable;
import com.memoire.bu.BuVerticalLayout;
import org.fudaa.dodico.commun.DodicoLib;
import org.fudaa.dodico.h2d.H2dParametres;
import org.fudaa.fudaa.tr.dico.TrDicoEntiteFile;
import org.fudaa.fudaa.tr.dico.TrDicoEntitePanel;
/**
* @author deniger
* @version $Id: TrTelemacFilleEntite.java,v 1.1 2003/05/19 14:31:49 deniger Exp $
*/
public class TrTelemacFilleEntite extends BuInternalFrame implements MouseListener
{
BuTable table_;
TrTelemacParametres.BaseFileEntiteTableModel model_;
TrTelemacParametres params_;
public TrTelemacFilleEntite(TrTelemacProjet _proj, TrTelemacParametres.BaseFileEntiteTableModel _model)
{
super(_proj.getTitre(), true, false, false, true);
model_ = _model;
params_ = _proj.getTelemacParamatres();
table_ = new BuTable(_model);
table_.addMouseListener(this);
//table_.setPreferredScrollableViewportSize(new Dimension(300, 300));
BuTabbedPane pane = new BuTabbedPane();
BuPanel pnFichiers = new BuPanel();
pnFichiers.setLayout(new BuBorderLayout(5, 5));
pnFichiers.add(new BuScrollPane(table_), BuBorderLayout.CENTER);
TableColumnModel columnModel = table_.getColumnModel();
TableColumn col = columnModel.getColumn(0);
col.setCellRenderer(new FirstCellRenderer());
col = columnModel.getColumn(1);
col.setCellRenderer(new SecondCellRenderer());
BuPanel est = new BuPanel();
est.setLayout(new BuButtonLayout(5, BuButtonLayout.RIGHT));
BuButton bu = new BuButton("Editer");
bu.addActionListener(this);
bu.setActionCommand("EDITER");
est.add(bu);
pnFichiers.add(bu, BuBorderLayout.SOUTH);
pane.addTab("Projet", null, pnFichiers, "Les fichiers du projet");
pane.setSelectedIndex(0);
BuPanel propLeft = new BuPanel();
propLeft.setLayout(new BuVerticalLayout());
BuList list = new BuList();
list.setListData(params_.getDico().getRubriques());
propLeft.add(new BuScrollPane(list));
TrDicoEntitePanel propRight= new TrDicoEntitePanel(params_.getEntiteTableModel());
BuSplit2Pane split = new BuSplit2Pane(propLeft, propRight);
pane.addTab("Propriétés", null, split, "Les propriétés");
setContentPane(pane);
}
public void mouseDown(MouseEvent _evt)
{
}
public void mouseEntered(MouseEvent _evt)
{
}
public void mouseExited(MouseEvent _evt)
{
}
public void mousePressed(MouseEvent _evt)
{
if (_evt.isPopupTrigger() || ((_evt.getModifiers() & MouseEvent.BUTTON3_MASK) != 0))
{
int i = table_.rowAtPoint(new Point(_evt.getX(), _evt.getY()));
if (i >= 0)
table_.setRowSelectionInterval(i, i);
popupMenu(_evt);
}
}
private void popupMenu(MouseEvent _evt)
{
int r = table_.getSelectedRow();
int xe = _evt.getX();
int ye = _evt.getY();
BuPopupMenu menu = new BuPopupMenu(false);
//xe = 20 - menu.getSize().width;
//ye -= 5;
BuMenuItem item = new BuMenuItem("Editer");
item.setActionCommand("EDITER");
item.addActionListener(this);
menu.add(item);
menu.show((JComponent) _evt.getSource(), xe, ye);
}
public void mouseReleased(MouseEvent _evt)
{
}
public void mouseUp(MouseEvent _evt)
{
}
public void mouseClicked(MouseEvent _evt)
{
}
private class FirstCellRenderer extends DefaultTableCellRenderer
{
public FirstCellRenderer()
{
super();
}
protected void setValue(Object value)
{
setText(((TrDicoEntiteFile) value).getEntite().getNom());
}
/**
*
*/
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
TrDicoEntiteFile entFile = (TrDicoEntiteFile) value;
setToolTipText(DodicoLib.getAbsolutePath(params_.getDirBase(), entFile.getValue()).toString());
if (H2dParametres.FICHIER_PRINCIPAL.equals(entFile.getType()))
{
c.setForeground(Color.blue);
}
else
{
c.setForeground(Color.black);
}
return c;
}
}
private class SecondCellRenderer extends DefaultTableCellRenderer
{
public SecondCellRenderer()
{
super();
}
protected void setValue(Object value)
{
setText((String) value);
}
}
/**
*
*/
public void actionPerformed(ActionEvent _evt)
{
String com = _evt.getActionCommand();
if ("EDITER".equals(com))
{
int r = table_.getSelectedRow();
model_.editer(r);
}
else
{
super.actionPerformed(_evt);
}
}
}
--- NEW FILE: TrTelemacImplHelper.java ---
/*
* @file TrTelemacImplHelper.java
* @creation 29 avr. 2003
* @modification $Date: 2003/05/19 14:31:49 $
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.tr.telemac;
import java.io.File;
import com.memoire.bu.BuTask;
import com.memoire.bu.BuTaskOperation;
import org.fudaa.dodico.commun.ProgressionBuAdapter;
import org.fudaa.dodico.telemac.io.TelemacCasFileFormat;
import org.fudaa.fudaa.tr.TrImplHelper;
import org.fudaa.fudaa.tr.TrImplementation;
/**
* @author deniger
* @version $Id: TrTelemacImplHelper.java,v 1.1 2003/05/19 14:31:49 deniger Exp $
*/
public class TrTelemacImplHelper extends TrImplHelper
{
TrImplementation impl_;
public TrTelemacImplHelper(TrImplementation _impl)
{
impl_=_impl;
}
public void ouvrir()
{
final File fic = impl_.ouvrirFileChooser(TelemacCasFileFormat.getInstance().getExtensions(), "Télémac Fichier cas");
if (fic != null)
{
impl_.setLastDir(fic);
new BuTaskOperation(impl_, "import fichier cas")
{
public void act()
{
ouvrirOpr(fic, this);
}
}
.start();
}
}
public void ouvrirOpr(File _f, BuTask _t)
{
TrTelemacCasProcess process = new TrTelemacCasProcess(new ProgressionBuAdapter(_t), impl_);
TrTelemacParametres param = process.createProjet(_f, TelemacCasFileFormat.getInstance());
if (param != null)
{
TrTelemacProjet proj = new TrTelemacProjet(param);
impl_.addProjet(proj);
}
}
}
--- NEW FILE: TrTelemacParametres.java ---
/*
* @file TelemacProjet.java
* @creation 16 avr. 2003
* @modification $Date: 2003/05/19 14:31:49 $
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.tr.telemac;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.swing.table.AbstractTableModel;
import com.memoire.bu.BuInformationsDocument;
import org.fudaa.dodico.commun.DodicoLib;
import org.fudaa.dodico.corba.tr.LTrCodeCalcul;
import org.fudaa.dodico.corba.tr.STrProjetH2d;
import org.fudaa.dodico.dico.DicoEntite;
import org.fudaa.dodico.dico.DicoModelAbstract;
import org.fudaa.dodico.h2d.H2dFileFormat;
import org.fudaa.dodico.h2d.H2dLib;
import org.fudaa.dodico.h2d.H2dParametres;
import org.fudaa.dodico.telemac.io.SerafinInterface;
import org.fudaa.dodico.telemac.io.TelemacCLInterface;
import org.fudaa.dodico.telemac.io.TelemacCasFileFormat;
import org.fudaa.dodico.telemac.io.TelemacCasInterface;
import org.fudaa.dodico.telemac.io.TelemacLiquideInterface;
import org.fudaa.fudaa.tr.TrEditor;
import org.fudaa.fudaa.tr.TrLib;
import org.fudaa.fudaa.tr.dico.TrDicoEntiteFile;
import org.fudaa.fudaa.tr.dico.TrDicoEntiteTableModel;
/**
* @author deniger
* @version $Id: TrTelemacParametres.java,v 1.1 2003/05/19 14:31:49 deniger Exp $
*/
public class TrTelemacParametres extends H2dParametres
{
public final class BaseFileEntiteTableModel extends AbstractTableModel
{
public int getRowCount()
{
return entiteFiles_.size();
}
public int getColumnCount()
{
return 2;
}
public Object getValueAt(int _r, int _c)
{
TrDicoEntiteFile ent = (TrDicoEntiteFile) entiteFiles_.get(_r);
if (_c == 0)
return ent;
else if (_c == 1)
{
return ent.getValue();
}
return null;
}
public String getColumnName(int _c)
{
if (_c == 0)
return "Description";
else
return "Fichier";
}
public void editer(int _r)
{
TrDicoEntiteFile entFile = (TrDicoEntiteFile) entiteFiles_.get(_r);
TrEditor.getInstance().edit(entFile, DodicoLib.getAbsolutePath(dirBase_, entFile.getValue()));
}
}
STrProjetH2d projet_;
private String dirBase_;
private TelemacCasFileFormat ft_;
private BuInformationsDocument infosDoc_;
/**
* Entites-valeurs de ce projet.
*/
private Hashtable entitesValeurs_;
/**
* contient l'id et la description des fichiers speciaux de ce projet
*/
private ArrayList entiteFiles_;
private TrDicoEntiteFile principal_;
public TrTelemacParametres()
{
}
private void initProjet(TelemacCasFileFormat _ft)
{
projet_ = new STrProjetH2d();
projet_.codeCalcul = LTrCodeCalcul.TELEMAC;
projet_.version = _ft.getVersion();
ft_ = _ft;
}
public void updateKey(DicoEntite _ent, String _newValue)
{
if (entitesValeurs_.containsKey(_ent))
{
entitesValeurs_.put(_ent, _newValue);
}
else
{
System.out.println("Entite non trouve");
}
}
public String getTitre()
{
return getEntiteValue(ft_.getTitreEntite());
}
public TrDicoEntiteFile getMainEntityFile()
{
return principal_;
}
public void setCas(TelemacCasFileFormat _ft, File _fichierCas, TrTelemacCasProcess _p)
{
initProjet(_ft);
dirBase_ = DodicoLib.getConanicalPath(_fichierCas.getParentFile());
DicoEntite fichierPrincEntite = ft_.getFichierPrincipalEntite();
if (fichierPrincEntite == null)
{
_p.error("La definition du fichier principal n'a pas été trouvée");
return;
}
principal_ = new TrDicoEntiteFile(FICHIER_PRINCIPAL, fichierPrincEntite, _fichierCas.getName());
TelemacCasInterface inter = (TelemacCasInterface) _p.read(_fichierCas, _ft, principal_);
if ((principal_.containsErrors()))
{
_p.error("Le fichier cas est invalide");
}
else
{
entitesValeurs_ = inter.getInputs();
//suppression de l'entite correspondante au fichier cas
entitesValeurs_.remove(fichierPrincEntite);
//Les entites representant des fichiers du fichier cas
DicoEntite[] entFichiers = ft_.getDico().getFichierEntitesFor(entitesValeurs_);
entiteFiles_ = new ArrayList(entFichiers.length + 3);
synchronized (entiteFiles_)
{
entiteFiles_.add(principal_);
int n = entFichiers.length - 1;
DicoEntite e;
String specialType;
for (int i = n; i >= 0; i--)
{
e = entFichiers[i];
specialType = ft_.getSpecialType(e);
//si fichier special
if (specialType != null)
{
//si ce n'est pas le principal, on l'ajoute
if (!FICHIER_PRINCIPAL.equals(specialType))
{
entiteFiles_.add(new TrDicoEntiteFile(specialType, e, (String) entitesValeurs_.remove(e)));
}
}
else
{
entiteFiles_.add(new TrDicoEntiteFile(null, e, (String) entitesValeurs_.remove(e)));
}
}
}
}
}
public DicoModelAbstract getDico()
{
return ft_.getDico();
}
public boolean loadAll(TrTelemacCasProcess _p)
{
return loadGeometrie(_p) && loadConditionsLimite(_p) && loadConditionsLimiteLiquide(_p);
}
protected synchronized TrDicoEntiteFile getSpecialFileEntite(String _ID)
{
TrDicoEntiteFile ent;
for (Iterator it = entiteFiles_.iterator(); it.hasNext();)
{
ent = (TrDicoEntiteFile) it.next();
if (_ID.equals(ent.getId()))
return ent;
}
return null;
}
protected String getEntiteValue(DicoEntite _e)
{
return (String) entitesValeurs_.get(_e);
}
public boolean loadGeometrie(TrTelemacCasProcess _p)
{
TrDicoEntiteFile entFile = getSpecialFileEntite(H2dParametres.FICHIER_GEOMETRIE);
if (entFile == null)
{
_p.error(TrLib.geti18n("Définition du fichier géométrie non trouvée."));
return false;
}
SerafinInterface sInter = (SerafinInterface) read(_p, entFile, ft_.getDefaultSerafinFormat(), true);
if (sInter == null)
return false;
String fond = ft_.getDefaultSerafinFormat().getVariableFond();
int numVariable = DodicoLib.findObject(sInter.getVariables(), fond);
if (numVariable < 0)
{
//pour l'instant
_p.error("bathymétrie non trouvée variable FOND ou es-tu ?");
return false;
}
int nbPasTemps = sInter.getNbPasDeTemps();
if (nbPasTemps > 1)
{
System.out.println("la variable à t=0 sera prise");
}
double[] fondValues = sInter.getDonnees(0, numVariable);
projet_.maillage = sInter.getMaillage();
return H2dLib.setBathymetrie(projet_.maillage, fondValues);
}
public boolean loadConditionsLimite(TrTelemacCasProcess _p)
{
TrDicoEntiteFile entFile = getSpecialFileEntite(H2dParametres.FICHIER_CL);
if (entFile == null)
{
_p.error(TrLib.geti18n("Définition du fichier de conditions limites non trouvée."));
return false;
}
TelemacCLInterface inter = (TelemacCLInterface) read(_p, entFile, ft_.getDefaultTelemacCLFormat(), true);
if (inter == null)
return false;
projet_.conditionsLimites = inter.getLines();
return true;
}
public boolean loadConditionsLimiteLiquide(TrTelemacCasProcess _p)
{
TrDicoEntiteFile entFile = getSpecialFileEntite(H2dParametres.FICHIER_CL_LIQUIDE);
if (entFile == null)
{
_p.error(TrLib.geti18n("Définition du fichier de conditions limites liquides non trouvée."));
return false;
}
TelemacLiquideInterface inter = (TelemacLiquideInterface) read(_p, entFile, ft_.getDefaultTelemacLiquideFormat(), false);
if (inter == null)
return false;
projet_.evolutionFrontieresLiquides = inter.getEvolutionsFrontieresLiquides();
return true;
}
public boolean loadFond(TrTelemacCasProcess _p)
{
_p.error("non supporté pour l'instant");
return false;
}
private Object read(TrTelemacCasProcess _p, TrDicoEntiteFile _entiteFile, H2dFileFormat _fileFormat, boolean _isVideError)
{
DicoEntite ent = _entiteFile.getEntite();
if (ent == null)
{
if (_isVideError)
{
_p.error("ce n'est pas une entree valide du fichier dico !");
}
return null;
}
String value = getEntiteValue(ent);
//ne devrait jamais arriver
if (value == null)
{
if (_isVideError)
{
_p.error(ent.getNom() + " spécifié mais vide !!!");
}
return null;
}
Object r = _p.read(dirBase_, value, _fileFormat, _entiteFile);
if (_entiteFile.containsErrors())
{
_p.error(ent.getNom() + " fichier invalide");
_p.maj(_entiteFile);
return null;
}
return r;
}
/**
* @return
*/
public String getDirBase()
{
return dirBase_;
}
/**
* @param _string
*/
public void setDirBase(String _string)
{
dirBase_ = _string;
}
/**
* @see org.fudaa.dodico.tr.TrProjetH2d#getInformationsDocument()
*/
public BuInformationsDocument getInformationsDocument()
{
if (infosDoc_ != null)
{
infosDoc_ = new BuInformationsDocument();
}
return infosDoc_;
}
public BaseFileEntiteTableModel getBaseFileEntiteTableModel()
{
return new BaseFileEntiteTableModel();
}
public TrDicoEntiteTableModel getEntiteTableModel()
{
return new TrDicoEntiteTableModel(new HashSet(entitesValeurs_.keySet()))
{
public final Set getAllEntiteSet()
{
return new HashSet(entitesValeurs_.keySet());
}
public final void setValue(DicoEntite _ent, String _value)
{
TrTelemacParametres.this.updateKey(_ent, _value);
}
public Map getUnModifiableEntiteValue()
{
return Collections.unmodifiableMap(entitesValeurs_);
}
public final String getValue(DicoEntite _ent)
{
return (String) entitesValeurs_.get(_ent);
}
};
}
// public TableModel getEntiteTableModel()
// {
// return new AbstractTableModel()
// {
// public int getRowCount()
// {
// return 1;
// }
//
// public int getColumnCount()
// {
// return 2;
// }
//
// public Object getValueAt(int _r, int _c)
// {
// return null;
// }
//
// };
//
// }
}
--- NEW FILE: TrTelemacProjet.java ---
/*
* @file TrTelemacProjet.java
* @creation 29 avr. 2003
* @modification $Date: 2003/05/19 14:31:49 $
* @license GNU General Public License 2
* @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
* @mail de...@fu...
*/
package org.fudaa.fudaa.tr.telemac;
import java.awt.Dimension;
import com.memoire.bu.BuCommonImplementation;
import org.fudaa.dodico.h2d.H2dParametres;
import org.fudaa.fudaa.tr.TrProjet;
/**
* @author deniger
* @version $Id: TrTelemacProjet.java,v 1.1 2003/05/19 14:31:49 deniger Exp $
*/
public class TrTelemacProjet extends TrProjet
{
TrTelemacParametres params_;
TrTelemacFilleEntite entiteFille_;
public TrTelemacProjet(TrTelemacParametres _p)
{
params_=_p;
}
public void active(BuCommonImplementation _impl)
{
if(entiteFille_==null)
{
entiteFille_=new TrTelemacFilleEntite(this,params_.getBaseFileEntiteTableModel());
Dimension dim=_impl.getMainPanel().getDesktop().getSize();
entiteFille_.setSize((int)(dim.getWidth()*0.8),(int)(dim.getHeight()*0.8));
entiteFille_.setLocation(0,0);
_impl.addInternalFrame(entiteFille_);
}
entiteFille_.pack();
entiteFille_.setVisible(true);
}
public H2dParametres getParamatres()
{
return getTelemacParamatres();
}
public TrTelemacParametres getTelemacParamatres()
{
return params_;
}
}
|