samples/apifest1/day1/stackbasedsolution/src/org/netbeans/apifest/boolcircuit/Operation.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 09:52:45 +0200
changeset 52 4257f4cf226b
permissions -rw-r--r--
Adding samples from API fest to the repository, including pieces of their code in the document, not just links
jtulach@52
     1
/*
jtulach@52
     2
 * Operation.java
jtulach@52
     3
 *
jtulach@52
     4
 * Created on July 12, 2006, 3:06 PM
jtulach@52
     5
 *
jtulach@52
     6
 * To change this template, choose Tools | Template Manager
jtulach@52
     7
 * and open the template in the editor.
jtulach@52
     8
 */
jtulach@52
     9
jtulach@52
    10
package org.netbeans.apifest.boolcircuit;
jtulach@52
    11
jtulach@52
    12
/**
jtulach@52
    13
 *
jtulach@52
    14
 */
jtulach@52
    15
public interface Operation {
jtulach@52
    16
    public char evaluate (char i1, char i2) throws IllegalArgumentException;
jtulach@52
    17
    public final static Operation OR = new Or ();
jtulach@52
    18
    public final static Operation AND = new And ();
jtulach@52
    19
    public final static Operation NEG = new Neg ();
jtulach@52
    20
    
jtulach@52
    21
    
jtulach@52
    22
    static class And implements Operation {
jtulach@52
    23
        public char evaluate(char i1, char i2) throws IllegalArgumentException {
jtulach@52
    24
            if (i1 != '0' && i1 != '1') {
jtulach@52
    25
                throw new IllegalArgumentException ("Invalid input parameter: " + i1);
jtulach@52
    26
            }
jtulach@52
    27
            if (i2 != '0' && i2 != '1') {
jtulach@52
    28
                throw new IllegalArgumentException ("Invalid input parameter: " + i2);
jtulach@52
    29
            }
jtulach@52
    30
            return i1 == '1' && i2 == '1' ? '1' : '0';
jtulach@52
    31
        }
jtulach@52
    32
    }
jtulach@52
    33
    static class Or implements Operation {
jtulach@52
    34
        public char evaluate(char i1, char i2) throws IllegalArgumentException {
jtulach@52
    35
            if (i1 != '0' && i1 != '1') {
jtulach@52
    36
                throw new IllegalArgumentException ("Invalid input parameter: " + i1);
jtulach@52
    37
            }
jtulach@52
    38
            if (i2 != '0' && i2 != '1') {
jtulach@52
    39
                throw new IllegalArgumentException ("Invalid input parameter: " + i2);
jtulach@52
    40
            }
jtulach@52
    41
            return i1 == '1' || i2 == '1' ? '1' : '0';
jtulach@52
    42
        }
jtulach@52
    43
    }
jtulach@52
    44
    static class Neg implements Operation {
jtulach@52
    45
        public char evaluate(char i1, char i2) throws IllegalArgumentException {
jtulach@52
    46
            if (i1 != '0' && i1 != '1') {
jtulach@52
    47
                throw new IllegalArgumentException ("Invalid input parameter: " + i1);
jtulach@52
    48
            }
jtulach@52
    49
            return i1 == '1' ? '0' : '1';
jtulach@52
    50
        }
jtulach@52
    51
    }
jtulach@52
    52
}
jtulach@52
    53