View Javadoc

1   package fr.ove.openmath.jome.formaters.om;
2   
3   import fr.ove.utils.*;
4   import fr.ove.openmath.jome.model.*;
5   import fr.ove.openmath.jome.formaters.om.*;
6   
7   /***
8   * Formats the formula tree structure as its corresponding OpenMath object.<BR>
9   * This is the formater for integrals.
10  *
11  * @author © 2000 DIRAT Laurent
12  * @version 1.0 21/02/2000
13  */
14  public class IntegralFormater implements Formater {
15      /***
16      * Returns the specified object formatted as a string.
17      * @param formatedObject the formatted object (for structured object, could represents the beginning).
18      * @param formaterRepository where the different other formaters are.
19      * @param obj the object to format.
20      */
21      public String format(String formatedObject, FormaterRepository formaterRepository, Object obj) {
22          OpenMathFormater omFormater = (OpenMathFormater) formaterRepository;
23          FormulaTreeStructure fts = (FormulaTreeStructure) obj;
24          
25          FormulaTreeStructure ftsChild;
26          Formater formater;
27          
28          String objectId = fts.getResourceIdentifier();
29          
30          int nbChildren = fts.getNbChildren();
31          
32          // Si ne nbre de fils est 2 ou 4, alors on a une intÈgrale "OM-exportable"
33          // Si 2, alors intÈgrale indÈfinie, sinon, intÈgrale dÈfinie
34          if ((nbChildren == 2) || (nbChildren == 4)) {
35              String symbName = (nbChildren == 2) ? "int" : "defint";
36              formatedObject += omFormater.writeStartApplication();
37              // On rÈcupËre le nom du CD, puisque le symbole est dÈterminÈ ici.
38              formatedObject += omFormater.writeSymbol(omFormater.getCdName(objectId), symbName);
39              
40              // Faut spÈcifier l'intervalle
41              if (nbChildren == 4) {
42                  formatedObject += omFormater.writeStartApplication();
43                  formatedObject += omFormater.writeSymbol("interval", "interval");
44                  
45                  ftsChild = (FormulaTreeStructure) fts.getChild(2).getChild(0);
46                  objectId = ftsChild.getResourceIdentifier();
47                  formater = formaterRepository.getFormater(objectId);
48                  formatedObject = formater.format(formatedObject, formaterRepository, ftsChild);
49                  
50                  ftsChild = (FormulaTreeStructure) fts.getChild(3);
51                  objectId = ftsChild.getResourceIdentifier();
52                  formater = formaterRepository.getFormater(objectId);
53                  formatedObject = formater.format(formatedObject, formaterRepository, ftsChild);
54                  
55                  formatedObject += omFormater.writeEndApplication();
56              }
57              
58              // La fonction intÈgrÈe
59              // CrÈation du bind
60              formatedObject += omFormater.writeStartBinding();
61              formatedObject += omFormater.writeSymbol("lambda");
62              // On met la variable liÈe.
63              formatedObject += omFormater.writeStartBoundVariables();
64              
65              ftsChild = (FormulaTreeStructure) fts.getChild(1);
66              objectId = ftsChild.getResourceIdentifier();
67              formater = formaterRepository.getFormater(objectId);
68              formatedObject = formater.format(formatedObject, formaterRepository, ftsChild);
69              
70              formatedObject += omFormater.writeEndBoundVariables();
71              
72              // On met maintenant l'objet du bind, i.e. l'argument.
73              ftsChild = (FormulaTreeStructure) fts.getChild(0);
74              objectId = ftsChild.getResourceIdentifier();
75              formater = formaterRepository.getFormater(objectId);
76              formatedObject = formater.format(formatedObject, formaterRepository, ftsChild);
77              
78              formatedObject += omFormater.writeEndBinding();
79              formatedObject += omFormater.writeEndApplication();
80          }
81          
82          return formatedObject;
83      }
84  }