/*
 * Copyright (c) 2007 Stiftung Deutsches Elektronen-Synchrotron,
 * Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY.
 *
 * THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "../AS IS" BASIS.
 * WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
 * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND
 * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE
 * IN ANY RESPECT, THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR
 * CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
 * NO USE OF ANY SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
 * DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
 * OR MODIFICATIONS.
 * THE FULL LICENSE SPECIFYING FOR THE SOFTWARE THE REDISTRIBUTION, MODIFICATION,
 * USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE DISTRIBUTION OF THIS
 * PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY FIND A COPY
 * AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM
 */
/*
 * $Id$
 */
package org.csstudio.sds.cosyrules.color;

import org.csstudio.sds.model.logic.IRule;
import org.epics.css.dal.DynamicValueState;

/**
 * @author hrickens
 * @author $Author$
 * @version $Revision$
 * @since 27.09.2007
 */
public class TickmarkRule implements IRule {
    /**
     * The ID for this rule.
     */
    public static final String TYPE_ID = "org.css.sds.Tickmark";

    /**
     * Standard constructor.
     */
    public TickmarkRule() {
    }

    /**
     * {@inheritDoc}
     */
    public Object evaluate(Object[] arguments) {
        if (arguments != null){
            if(arguments.length > 1) {
                if (arguments[1] instanceof Double) {
                    int temp = (int)(((Double)arguments[1])+0.5);
                    if((temp==0)){
                        return Double.NaN;
                    }
                } else if (arguments[1] instanceof Long) {
                    if(((Long) arguments[1])==0){
                        return Double.NaN;
                    }
                } else if (arguments[1] instanceof String) {
                    if(((String) arguments[1]).equals("NO_ALARM")){
                        return Double.NaN;
                    }
                }
            }
            if(arguments.length > 0) {
                return arguments[0]; 
            }
        }
        return 0.0;
    }

}

@@ -1819,24 +1819,204 @@
  %7D%0A%0A    /**%0A
+     * Normally the first argument was return unless the second argument is%0A     * %22No_ALARM%22 then return Double.NaN. This switch off the Tick mark on the%0A     * Bargraph.%0A     * %0A
      * %7B@inh
@@ -2111,16 +2111,17 @@
 != null)
+ 
 %7B%0A      
@@ -2120,32 +2120,33 @@
 %7B%0A            if
+ 
 (arguments.lengt
@@ -2244,16 +2244,17 @@
  = (int)
+ 
 (((Doubl
@@ -2255,16 +2255,17 @@
 (Double)
+ 
 argument
@@ -2273,9 +2273,11 @@
 %5B1%5D)
-+
+ + 
 0.5)
@@ -2304,19 +2304,23 @@
   if
+ 
 ((temp
+ 
 ==
+ 
 0))
+ 
 %7B%0A  
@@ -2463,16 +2463,17 @@
       if
+ 
 (((Long)
@@ -2490,12 +2490,15 @@
 %5B1%5D)
+ 
 ==
+ 
 0)
+ 
 %7B%0A  
@@ -2643,16 +2643,17 @@
       if
+ 
 (((Strin
@@ -2688,16 +2688,17 @@
 ALARM%22))
+ 
 %7B%0A      
@@ -2802,16 +2802,17 @@
       if
+ 
 (argumen
@@ -2864,17 +2864,16 @@
 ents%5B0%5D;
- 
 %0A       

Add description