samples/apifest1/day1/elementbasedsolution/src/org/netbeans/apifest/boolcircuit/Circuit.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 09:52:47 +0200
changeset 53 a0b47629aad8
parent 52 4257f4cf226b
permissions -rw-r--r--
Including solutions till day 2
     1 /*
     2  * The contents of this file are subject to the terms of the Common Development
     3  * and Distribution License (the License). You may not use this file except in
     4  * compliance with the License.
     5  *
     6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
     7  * or http://www.netbeans.org/cddl.txt.
     8  *
     9  * When distributing Covered Code, include this CDDL Header Notice in each file
    10  * and include the License file at http://www.netbeans.org/cddl.txt.
    11  * If applicable, add the following below the CDDL Header, with the fields
    12  * enclosed by brackets [] replaced by your own identifying information:
    13  * "Portions Copyrighted [year] [name of copyright owner]"
    14  *
    15  * The Original Software is NetBeans. The Initial Developer of the Original
    16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
    17  * Microsystems, Inc. All Rights Reserved.
    18  */
    19 
    20 package org.netbeans.apifest.boolcircuit;
    21 
    22 /**
    23  */
    24 // BEGIN: apifest.day1.elementbasedsolution.Circuit
    25 public final class Circuit {
    26     private Circuit() {
    27     }
    28     
    29     public static Element and(final Element e1, final Element e2) {
    30         return new Element() {
    31             public boolean result() {
    32                 return e1.result() && e2.result();
    33             }
    34         };
    35     }
    36     public static Element or(final Element e1, final Element e2) {
    37         return new Element() {
    38             public boolean result() {
    39                 return e1.result() || e2.result();
    40             }
    41         };
    42     }
    43 
    44     public static Element not(final Element e1) {
    45         return new Element() {
    46             public boolean result() {
    47                 return !e1.result();
    48             }
    49         };
    50     }
    51     
    52     public static Variable var() {
    53         return new Variable();
    54     }
    55     
    56     public static abstract class Element {
    57         private Element() {
    58         }
    59         
    60         public abstract boolean result();
    61     }
    62     
    63     public static final class Variable extends Element {
    64         private boolean value;
    65         
    66         public void assignValue(boolean b) {
    67             value = b;
    68         }
    69 
    70         public boolean result() {
    71             return value;
    72         }
    73     }
    74 }
    75 // END: apifest.day1.elementbasedsolution.Circuit