src/java/isac/util/Formalization.java
author jloinig
Tue, 21 Jun 2005 17:16:36 +0200
changeset 2476 a6fa6012d68b
parent 2446 80c153cd2028
child 2490 212894547819
permissions -rw-r--r--
JL: cosmetics
mhochrei@1085
     1
/****************************************************************** 
wneuper@2286
     2
 * Copyright (c) 2003, Mario Hochreiter, Student of 
wneuper@2286
     3
 * Software Engineering at FH-Hagenberg, Austria. 
wneuper@2286
     4
 * Project member of the isac team at the Institute for 
wneuper@2286
     5
 * Software-Technologie, Graz University of Technology, Austria. 
wneuper@2286
     6
 * 
wneuper@2286
     7
 * Use is subject to license terms.
wneuper@2286
     8
 ******************************************************************/
mhochrei@1085
     9
mhochrei@1085
    10
package isac.util;
mhochrei@1085
    11
mhochrei@1085
    12
import java.io.Serializable;
mhochrei@1085
    13
import java.util.ArrayList;
mhochrei@1085
    14
import java.util.Iterator;
mhochrei@1085
    15
mhochrei@1085
    16
/**
wneuper@2286
    17
 * Every calculation in the isac system starts with a formalization that
wneuper@2286
    18
 * characterizes the calculation. A formalization object can contain multiple
wneuper@2286
    19
 * <code>Variant</code> objects because a calculation can be calculated in
wneuper@2286
    20
 * different ways (using different methods to solve the calculation).
wneuper@2286
    21
 * 
mhochrei@1085
    22
 * @author Mario Hochreiter
mhochrei@1085
    23
 * @version 0.1
wneuper@2286
    24
 *  
mhochrei@1085
    25
 */
mhochrei@1085
    26
public class Formalization implements Serializable {
rgradisc@1191
    27
jloinig@2476
    28
    protected ArrayList variants_;
agriesma@1205
    29
jloinig@2476
    30
    public Formalization() {
jloinig@2476
    31
        variants_ = new ArrayList();
jloinig@2476
    32
    }
wneuper@2286
    33
jloinig@2476
    34
    public void addNewVariant(Variant v) {
jloinig@2476
    35
        variants_.add(v);
jloinig@2476
    36
    }
wneuper@2286
    37
jloinig@2476
    38
    public Iterator iterator() {
jloinig@2476
    39
        return new FormalizationIterator(this);
jloinig@2476
    40
    }
wneuper@2286
    41
jloinig@2476
    42
    public String toString() {
jloinig@2476
    43
        String content = "<FORMALIZATION>\n";
jloinig@2476
    44
        for (int index = 0; index < variants_.size(); index++)
jloinig@2476
    45
            content += variants_.get(index) + "\n";
jloinig@2476
    46
        content += "</FORMALIZATION>\n";
jloinig@2476
    47
        return content;
jloinig@2476
    48
    }
wneuper@2286
    49
jloinig@2476
    50
    /**
jloinig@2476
    51
     * Format the object in a way that the bridge can handle it
jloinig@2476
    52
     * 
jloinig@2476
    53
     * @return SML representation of this Formalization
jloinig@2476
    54
     */
jloinig@2476
    55
    public String toSMLString() {
jloinig@2476
    56
        // Use this String for empty Formalization:
jloinig@2476
    57
        // Calculation from scratch
wneuper@2286
    58
jloinig@2476
    59
        if (variants_.isEmpty())
jloinig@2476
    60
                return "[([], (\"e_domID\", [\"e_pblID\"], [\"e_metID\"]))]";
jloinig@2476
    61
        // e_domID, etc. will disappear soon: empty formalization would be
jloinig@2476
    62
        // "[([], (\"\", [], []))]"
jloinig@2476
    63
        StringBuffer sb = new StringBuffer();
jloinig@2476
    64
        int size = variants_.size();
jloinig@2476
    65
        int i = 0;
jloinig@2476
    66
        Variant v;
wneuper@2286
    67
jloinig@2476
    68
        sb.append("[");
jloinig@2476
    69
        Iterator it = variants_.iterator();
jloinig@2476
    70
        while (it.hasNext()) {
jloinig@2476
    71
            v = (Variant) it.next();
jloinig@2476
    72
            sb.append("(");
jloinig@2476
    73
            sb.append(v.toSMLString());
jloinig@2476
    74
            sb.append(")");
jloinig@2476
    75
            if (i < size - 1) {
jloinig@2476
    76
                sb.append(",");
jloinig@2476
    77
            }
jloinig@2476
    78
            i++;
jloinig@2476
    79
        }
jloinig@2476
    80
        sb.append("]");
jloinig@2476
    81
        return sb.toString();
jloinig@2476
    82
jloinig@2476
    83
    }
mhochrei@1085
    84
}
mhochrei@1085
    85
mhochrei@1085
    86
class FormalizationIterator implements Iterator {
rgradisc@1191
    87
jloinig@2476
    88
    Iterator it_;
mhochrei@1085
    89
jloinig@2476
    90
    FormalizationIterator(Formalization f) {
jloinig@2476
    91
        it_ = f.variants_.iterator();
jloinig@2476
    92
    }
mhochrei@1085
    93
jloinig@2476
    94
    public void remove() {
jloinig@2476
    95
        it_.remove();
jloinig@2476
    96
    }
mhochrei@1085
    97
jloinig@2476
    98
    public boolean hasNext() {
jloinig@2476
    99
        return it_.hasNext();
jloinig@2476
   100
    }
jloinig@2476
   101
jloinig@2476
   102
    public Object next() {
jloinig@2476
   103
        return it_.next();
jloinig@2476
   104
    }
wneuper@2286
   105
}