2 * Copyright 2011-2012 GRNET S.A. All rights reserved.
4 * Redistribution and use in source and binary forms, with or
5 * without modification, are permitted provided that the following
8 * 1. Redistributions of source code must retain the above
9 * copyright notice, this list of conditions and the following
12 * 2. Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following
14 * disclaimer in the documentation and/or other materials
15 * provided with the distribution.
17 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 * POSSIBILITY OF SUCH DAMAGE.
30 * The views and conclusions contained in the software and
31 * documentation are those of the authors and should not be
32 * interpreted as representing official policies, either expressed
33 * or implied, of GRNET S.A.
36 package gr.grnet.aquarium.message.avro
38 import gr.grnet.aquarium.message.avro.gen.{UserStateMsg, IMEventMsg, ResourceEventMsg, PolicyMsg}
42 * @author Christos KK Loverdos <loverdos@gmail.com>
44 object OrderingHelpers {
45 final val DefaultPolicyMsgOrdering = new Ordering[PolicyMsg] {
46 def compare(x: PolicyMsg, y: PolicyMsg): Int = {
47 val x_getValidFromMillis = x.getValidFromMillis
48 val y_getValidFromMillis = y.getValidFromMillis
50 if(x_getValidFromMillis < y_getValidFromMillis) {
53 else if (x_getValidFromMillis == y_getValidFromMillis) {
61 final val DefaultResourceEventMsgOrdering = new Ordering[ResourceEventMsg] {
62 def compare(x: ResourceEventMsg, y: ResourceEventMsg): Int = {
63 val x_getOccurredMillis = x.getOccurredMillis
64 val y_getOccurredMillis = y.getOccurredMillis
66 if(x_getOccurredMillis < y_getOccurredMillis) {
69 else if (x_getOccurredMillis == y_getOccurredMillis) {
77 final val DefaultIMEventMsgOrdering = new Ordering[IMEventMsg] {
78 def compare(x: IMEventMsg, y: IMEventMsg): Int = {
79 val x_getOccurredMillis = x.getOccurredMillis
80 val y_getOccurredMillis = y.getOccurredMillis
82 if(x_getOccurredMillis < y_getOccurredMillis) {
85 else if(x_getOccurredMillis == y_getOccurredMillis) {
93 final val DefaultUserStateMsgOrdering = new Ordering[UserStateMsg] {
94 def compare(x: UserStateMsg, y: UserStateMsg): Int = {
95 val x_getValidFromMillis = x.getAgreementHistory().getAgreements().get(0).getValidFromMillis
96 val y_getValidFromMillis = y.getAgreementHistory().getAgreements().get(0).getValidFromMillis
98 if(x_getValidFromMillis < y_getValidFromMillis) {
101 else if(x_getValidFromMillis == y_getValidFromMillis) {