All Downloads are FREE. Search and download functionalities are using the official Maven repository.

oms3.control.Time Maven / Gradle / Ivy

There is a newer version: 0.10.8
Show newest version
/*
 * $Id$
 * 
 * This software is provided 'as-is', without any express or implied
 * warranty. In no event will the authors be held liable for any damages
 * arising from the use of this software.
 * 
 * Permission is granted to anyone to use this software for any purpose,
 * including commercial applications, and to alter it and redistribute it
 * freely, subject to the following restrictions:
 * 
 *  1. The origin of this software must not be misrepresented; you must not
 *     claim that you wrote the original software. If you use this software
 *     in a product, an acknowledgment in the product documentation would be
 *     appreciated but is not required.
 * 
 *  2. Altered source versions must be plainly marked as such, and must not be
 *     misrepresented as being the original software.
 * 
 *  3. This notice may not be removed or altered from any source
 *     distribution.
 */
package oms3.control;

import oms3.annotations.Execute;
import oms3.annotations.In;
import oms3.annotations.Out;
import java.util.GregorianCalendar;

/** 
 * Time Control Component
 *  
 * @author od
 * @version $Id$ 
 */
public class Time extends While {
    
    @In  public GregorianCalendar start;
    @In  public GregorianCalendar end;
    @In  public int field;
    @In  public int amount;
    
    public static class TimeControl  {

        @Out public boolean done;
        @Out public GregorianCalendar current;
        
        @In  public GregorianCalendar start;
        @In  public GregorianCalendar end;
        @In  public int field;
        @In  public int amount;

        TimeControl() {
            current = start;
        }
        
        public void initialize() {
            current = start;
        }

        @Execute 
        public void execute() {
            if (current == null) {
                current = start;
            }
            current.add(field, amount);
            done = current.before(end);
        }
    }

    TimeControl tc = new TimeControl();

    public Time() {
        conditional(tc, "done");
            
        in2in("start", tc, "start");
        in2in("end", tc, "end");
        in2in("field", tc, "field");
        in2in("amount", tc, "amount");
    }
        
    protected void connectTime(Object cmd, String curr) {
        out2in(tc, "current", cmd, curr);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy