samples/apifest1/day2/stackbasedsolution/src/org/netbeans/apifest/boolcircuit/Operation.java
changeset 52 4257f4cf226b
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/samples/apifest1/day2/stackbasedsolution/src/org/netbeans/apifest/boolcircuit/Operation.java	Sat Jun 14 09:52:45 2008 +0200
     1.3 @@ -0,0 +1,84 @@
     1.4 +/*
     1.5 + * Operation.java
     1.6 + *
     1.7 + * Created on July 12, 2006, 3:06 PM
     1.8 + *
     1.9 + * To change this template, choose Tools | Template Manager
    1.10 + * and open the template in the editor.
    1.11 + */
    1.12 +
    1.13 +package org.netbeans.apifest.boolcircuit;
    1.14 +
    1.15 +/**
    1.16 + *
    1.17 + */
    1.18 +public interface Operation {
    1.19 +    public char evaluate (char i1, char i2) throws IllegalArgumentException;
    1.20 +    public double evaluate (double i1, double i2) throws IllegalArgumentException;
    1.21 +    public final static Operation OR = new Or ();
    1.22 +    public final static Operation AND = new And ();
    1.23 +    public final static Operation NEG = new Neg ();
    1.24 +    
    1.25 +    
    1.26 +    static class And implements Operation {
    1.27 +        public char evaluate(char i1, char i2) throws IllegalArgumentException {
    1.28 +            if (i1 != '0' && i1 != '1') {
    1.29 +                throw new IllegalArgumentException ("Invalid input parameter: " + i1);
    1.30 +            }
    1.31 +            if (i2 != '0' && i2 != '1') {
    1.32 +                throw new IllegalArgumentException ("Invalid input parameter: " + i2);
    1.33 +            }
    1.34 +            return i1 == '1' && i2 == '1' ? '1' : '0';
    1.35 +        }
    1.36 +
    1.37 +        public double evaluate(double i1, double i2) throws IllegalArgumentException {
    1.38 +            if (i1 < 0 || i1 > 1) {
    1.39 +                throw new IllegalArgumentException ("Invalid input parameter: " + i1);
    1.40 +            }
    1.41 +            if (i2 < 0 || i2 > 1) {
    1.42 +                throw new IllegalArgumentException ("Invalid input parameter: " + i2);
    1.43 +            }
    1.44 +            return i1 * i2;
    1.45 +        }
    1.46 +    }
    1.47 +    static class Or implements Operation {
    1.48 +        public char evaluate(char i1, char i2) throws IllegalArgumentException {
    1.49 +            if (i1 != '0' && i1 != '1') {
    1.50 +                throw new IllegalArgumentException ("Invalid input parameter: " + i1);
    1.51 +            }
    1.52 +            if (i2 != '0' && i2 != '1') {
    1.53 +                throw new IllegalArgumentException ("Invalid input parameter: " + i2);
    1.54 +            }
    1.55 +            return i1 == '1' || i2 == '1' ? '1' : '0';
    1.56 +        }
    1.57 +
    1.58 +        public double evaluate(double i1, double i2) throws IllegalArgumentException {
    1.59 +            if (i1 < 0 || i1 > 1) {
    1.60 +                throw new IllegalArgumentException ("Invalid input parameter: " + i1);
    1.61 +            }
    1.62 +            if (i2 < 0 || i2 > 1) {
    1.63 +                throw new IllegalArgumentException ("Invalid input parameter: " + i2);
    1.64 +            }
    1.65 +            return 1 - (1 - i1) * (1 - i2);
    1.66 +        }
    1.67 +    }
    1.68 +    static class Neg implements Operation {
    1.69 +        public char evaluate(char i1, char i2) throws IllegalArgumentException {
    1.70 +            if (i1 != '0' && i1 != '1') {
    1.71 +                throw new IllegalArgumentException ("Invalid input parameter: " + i1);
    1.72 +            }
    1.73 +            return i1 == '1' ? '0' : '1';
    1.74 +        }
    1.75 +
    1.76 +        public double evaluate(double i1, double i2) throws IllegalArgumentException {
    1.77 +            if (i1 < 0 || i1 > 1) {
    1.78 +                throw new IllegalArgumentException ("Invalid input parameter: " + i1);
    1.79 +            }
    1.80 +            if (i2 < 0 || i2 > 1) {
    1.81 +                throw new IllegalArgumentException ("Invalid input parameter: " + i2);
    1.82 +            }
    1.83 +            return 1 - i1;
    1.84 +        }
    1.85 +    }
    1.86 +}
    1.87 +