KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > alfresco > repo > action > evaluator > compare > NumericPropertyValueComparator


1 /*
2  * Copyright (C) 2005 Alfresco, Inc.
3  *
4  * Licensed under the Mozilla Public License version 1.1
5  * with a permitted attribution clause. You may obtain a
6  * copy of the License at
7  *
8  * http://www.alfresco.org/legal/license.txt
9  *
10  * Unless required by applicable law or agreed to in writing,
11  * software distributed under the License is distributed on an
12  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13  * either express or implied. See the License for the specific
14  * language governing permissions and limitations under the
15  * License.
16  */

17 package org.alfresco.repo.action.evaluator.compare;
18
19 import java.io.Serializable JavaDoc;
20
21 import org.alfresco.repo.action.evaluator.ComparePropertyValueEvaluator;
22 import org.alfresco.service.cmr.action.ActionServiceException;
23 import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
24
25 /**
26  * Numeric property value comparator.
27  *
28  * @author Roy Wetherall
29  */

30 public class NumericPropertyValueComparator implements PropertyValueComparator
31 {
32     /**
33      * I18N message ids
34      */

35     private static final String JavaDoc MSGID_INVALID_OPERATION = "numeric_property_value_comparator.invalid_operation";
36     
37     /**
38      * @see org.alfresco.repo.action.evaluator.compare.PropertyValueComparator#compare(java.io.Serializable, java.io.Serializable, org.alfresco.repo.action.evaluator.compare.ComparePropertyValueOperation)
39      */

40     public boolean compare(
41             Serializable JavaDoc propertyValue,
42             Serializable JavaDoc compareValue,
43             ComparePropertyValueOperation operation)
44     {
45         boolean result = false;
46         if (operation == null)
47         {
48             operation = ComparePropertyValueOperation.EQUALS;
49         }
50         
51         // TODO need to check that doing this potential conversion does not cause a problem
52
double property = ((Number JavaDoc)propertyValue).doubleValue();
53         double compare = ((Number JavaDoc)compareValue).doubleValue();
54         
55         switch (operation)
56         {
57             case EQUALS:
58             {
59                 result = (property == compare);
60                 break;
61             }
62             case GREATER_THAN:
63             {
64                 result = (property > compare);
65                 break;
66             }
67             case GREATER_THAN_EQUAL:
68             {
69                 result = (property >= compare);
70                 break;
71             }
72             case LESS_THAN:
73             {
74                 result = (property < compare);
75                 break;
76             }
77             case LESS_THAN_EQUAL:
78             {
79                 result = (property <= compare);
80                 break;
81             }
82             default:
83             {
84                 // Raise an invalid operation exception
85
throw new ActionServiceException(
86                         MSGID_INVALID_OPERATION,
87                         new Object JavaDoc[]{operation.toString()});
88             }
89         }
90         
91         return result;
92     }
93
94     /**
95      * @see org.alfresco.repo.action.evaluator.compare.PropertyValueComparator#registerComparator(org.alfresco.repo.action.evaluator.ComparePropertyValueEvaluator)
96      */

97     public void registerComparator(ComparePropertyValueEvaluator evaluator)
98     {
99         evaluator.registerComparator(DataTypeDefinition.DOUBLE, this);
100         evaluator.registerComparator(DataTypeDefinition.FLOAT, this);
101         evaluator.registerComparator(DataTypeDefinition.INT, this);
102         evaluator.registerComparator(DataTypeDefinition.LONG, this);
103         
104     }
105
106 }
107
Popular Tags