tmf: Update copyright headers in tmf.ui
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / views / uml2sd / util / SortAsyncForBackward.java
CommitLineData
73005152 1/**********************************************************************
c8422608 2 * Copyright (c) 2005, 2012 IBM Corporation, Ericsson
73005152
BH
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
abbdd66a
AM
7 *
8 * Contributors:
c8422608
AM
9 * IBM - Initial API and implementation
10 * Bernd Hufmann - Updated for TMF
73005152 11 **********************************************************************/
c8422608 12
73005152
BH
13package org.eclipse.linuxtools.tmf.ui.views.uml2sd.util;
14
15import java.io.Serializable;
16import java.util.Comparator;
17
18import org.eclipse.linuxtools.tmf.ui.views.uml2sd.core.AsyncMessage;
19import org.eclipse.linuxtools.tmf.ui.views.uml2sd.core.GraphNode;
20
21/**
abbdd66a
AM
22 * Asynchronous message comparator.
23 *
73005152
BH
24 * Compares two asyncMessages only taking into account the event occurrence when their
25 * appear.<br>
abbdd66a 26 *
73005152 27 * Used to order the AsyncMessage list insuring that the previous node has both of his ends smaller than the current node
abbdd66a 28 *
df0b8ff4 29 * @version 1.0
73005152 30 * @author sveyrier
abbdd66a 31 *
73005152
BH
32 */
33public class SortAsyncForBackward implements Comparator<GraphNode>, Serializable {
abbdd66a 34
df0b8ff4
BH
35 // ------------------------------------------------------------------------
36 // Constants
37 // ------------------------------------------------------------------------
73005152
BH
38 /**
39 * Serial version UID
40 */
41 private static final long serialVersionUID = 603959931263853359L;
42
df0b8ff4
BH
43 // ------------------------------------------------------------------------
44 // Methods
45 // ------------------------------------------------------------------------
46
47 /*
48 * (non-Javadoc)
49 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
73005152
BH
50 */
51 @Override
52 public int compare(GraphNode arg0, GraphNode arg1) {
53 if (arg0 instanceof AsyncMessage && arg1 instanceof AsyncMessage) {
54 AsyncMessage m1 = (AsyncMessage) arg0;
55 AsyncMessage m2 = (AsyncMessage) arg1;
56 int m1Max, m2Max;
57 // AsyncMessage has two ends which may have different event occurrences
58 // Search for the greater event occurrence for each messages
df0b8ff4 59 if (m1.getStartOccurrence() > m1.getEndOccurrence()) {
73005152 60 m1Max = m1.getStartOccurrence();
df0b8ff4 61 } else {
73005152 62 m1Max = m1.getEndOccurrence();
df0b8ff4
BH
63 }
64 if (m2.getStartOccurrence() > m2.getEndOccurrence()) {
73005152 65 m2Max = m2.getStartOccurrence();
df0b8ff4 66 } else {
73005152 67 m2Max = m2.getEndOccurrence();
df0b8ff4 68 }
73005152
BH
69
70 int m1Min, m2Min;
71 // Search for the smaller event occurrence for each messages
df0b8ff4 72 if (m1.getStartOccurrence() > m1.getEndOccurrence()) {
73005152 73 m1Min = m1.getEndOccurrence();
df0b8ff4 74 } else {
73005152 75 m1Min = m1.getStartOccurrence();
df0b8ff4
BH
76 }
77 if (m2.getStartOccurrence() > m2.getEndOccurrence()) {
73005152 78 m2Min = m2.getEndOccurrence();
df0b8ff4 79 } else {
73005152 80 m2Min = m2.getStartOccurrence();
df0b8ff4 81 }
73005152 82
df0b8ff4 83 if (m1Max > m2Max) {
73005152 84 return 1;
df0b8ff4
BH
85 } else if (m1Max == m2Max) {
86 if (m1Min == m2Min) {
73005152 87 return 0;
df0b8ff4 88 } else if (m1Min > m2Min) {
73005152 89 return -1;
df0b8ff4 90 } else {
73005152 91 return 1;
df0b8ff4
BH
92 }
93 } else {
73005152 94 return -1;
df0b8ff4 95 }
df0b8ff4 96 }
abbdd66a 97 return 0;
73005152
BH
98 }
99
100}
This page took 0.035907 seconds and 5 git commands to generate.