samples/apifest1/day1/elementbasedsolution/src/org/netbeans/apifest/boolcircuit/Circuit.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 09:52:45 +0200
changeset 52 4257f4cf226b
child 53 a0b47629aad8
permissions -rw-r--r--
Adding samples from API fest to the repository, including pieces of their code in the document, not just links
     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 public final class Circuit {
    25     private Circuit() {
    26     }
    27     
    28     public static Element and(final Element e1, final Element e2) {
    29         return new Element() {
    30             public boolean result() {
    31                 return e1.result() && e2.result();
    32             }
    33         };
    34     }
    35     public static Element or(final Element e1, final Element e2) {
    36         return new Element() {
    37             public boolean result() {
    38                 return e1.result() || e2.result();
    39             }
    40         };
    41     }
    42 
    43     public static Element not(final Element e1) {
    44         return new Element() {
    45             public boolean result() {
    46                 return !e1.result();
    47             }
    48         };
    49     }
    50     
    51     public static Variable var() {
    52         return new Variable();
    53     }
    54     
    55     public static abstract class Element {
    56         private Element() {
    57         }
    58         
    59         public abstract boolean result();
    60     }
    61     
    62     public static final class Variable extends Element {
    63         private boolean value;
    64         
    65         public void assignValue(boolean b) {
    66             value = b;
    67         }
    68 
    69         public boolean result() {
    70             return value;
    71         }
    72     }
    73 }