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
33
34 if ((nbChildren == 2) || (nbChildren == 4)) {
35 String symbName = (nbChildren == 2) ? "int" : "defint";
36 formatedObject += omFormater.writeStartApplication();
37
38 formatedObject += omFormater.writeSymbol(omFormater.getCdName(objectId), symbName);
39
40
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
59
60 formatedObject += omFormater.writeStartBinding();
61 formatedObject += omFormater.writeSymbol("lambda");
62
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
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 }