org.nuiton.math.matrix.MatrixEncoder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nuiton-matrix Show documentation
Show all versions of nuiton-matrix Show documentation
Librairie de matrice multi-dimensions.
The newest version!
/* *##% NuitonMatrix
* Copyright (C) 2004 - 2009 CodeLutin
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Lesser Public License for more details.
*
* You should have received a copy of the GNU General Lesser Public
* License along with this program. If not, see
* . ##%*/
package org.nuiton.math.matrix;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* MatriceEncoder.
*
* Created: 21 oct. 2004
*
* @author Benjamin Poussin
* @version $Revision: 187 $
*
* Mise a jour: $Date: 2009-10-16 19:17:29 +0200 (ven., 16 oct. 2009) $
* par : $Author: tchemit $
*/
public class MatrixEncoder { // MatriceEncoder
protected Writer out = null;
public MatrixEncoder(Writer out) {
this.out = out;
}
/**
* Methode qui peut etre surcharge par les enfants Elle sert a mettre sous
* forme XML les objets de semantiques Par defaut cette méthode converti en
* représentation chaine les objets Un objet deviendra donc une chaine de
* caractere lors de la lecture de la matrice à partir du XML si cette
* méthode n'est pas surchargée. Le seul objet convenablement supporté sont
* les représentation objet des types primitifs.
*
* @param o
* @throws IOException
* @return semntics as xml
*/
protected String getSemanticsAsXml(Object o) throws IOException {
String xml = null;
// on ne fait rien car la valeur par defaut lorsqu'on relit
// la matrice est null
if (o != null) {
// par defaut si on ne sait pas comment mettre en XML un objet
// on dit qu'il est de type String et on appelle la methode
// toString sur l'objet
// A la relecture l'objet sera donc une string
String type = String.class.getName();
if (o instanceof Number || o instanceof Boolean) {
type = o.getClass().getName();
}
xml = "";
}
return xml;
}
public void writeMatrice(MatrixND mat) throws IOException {
// l'element que l'on defini comme element par defaut est celui
// que l'on retrouve le plus souvent
double defaultValue = mat.getMaxOccurence();
out.write("\n");
// ecriture des noms des dimensions
for (int i = 0; i < mat.getDimCount(); i++) {
String dimName = mat.getDimensionName(i);
// si le nom est non null et non vide on l'ecrit,
// sinon c la valeur par defaut lorsqu'on relit la matrice
// donc ca ne sert a rien de le mettre dans le XML
if (dimName != null && !"".equals(dimName)) {
out.write(" ");
out.write(mat.getDimensionName(i));
out.write(" \n");
}
}
// ecriture de la semantique
for (int i = 0; i < mat.getDimCount(); i++) {
List> sem = mat.getSemantic(i);
List \n");
}
} // MatriceEncoder