1 package org
.argeo
.api
.register
;
4 import java
.util
.Objects
;
7 * Key used to classify and filter available components.
9 public class RankingKey
implements Comparable
<RankingKey
> {
10 public final static String SERVICE_PID
= "service.pid";
11 public final static String SERVICE_ID
= "service.id";
12 public final static String SERVICE_RANKING
= "service.ranking";
15 private Integer ranking
= 0;
18 public RankingKey(String pid
, Integer ranking
, Long id
) {
21 this.ranking
= ranking
;
25 public RankingKey(Map
<String
, Object
> properties
) {
26 this.pid
= properties
.containsKey(SERVICE_PID
) ? properties
.get(SERVICE_PID
).toString() : null;
27 this.ranking
= properties
.containsKey(SERVICE_RANKING
)
28 ? Integer
.parseInt(properties
.get(SERVICE_RANKING
).toString())
30 this.id
= properties
.containsKey(SERVICE_ID
) ?
(Long
) properties
.get(SERVICE_ID
) : null;
34 public int hashCode() {
37 result
= +pid
.hashCode();
44 protected Object
clone() throws CloneNotSupportedException
{
45 return new RankingKey(pid
, ranking
, id
);
49 public String
toString() {
50 StringBuilder sb
= new StringBuilder("");
53 if (ranking
!= null && ranking
!= 0)
54 sb
.append(' ').append(ranking
);
59 public boolean equals(Object obj
) {
60 if (!(obj
instanceof RankingKey
))
62 RankingKey other
= (RankingKey
) obj
;
63 return Objects
.equals(pid
, other
.pid
) && Objects
.equals(ranking
, other
.ranking
) && Objects
.equals(id
, other
.id
);
67 public int compareTo(RankingKey o
) {
68 if (pid
!= null && o
.pid
!= null) {
69 if (pid
.equals(o
.pid
)) {
70 if (ranking
.equals(o
.ranking
))
71 if (id
!= null && o
.id
!= null)
72 return id
.compareTo(o
.id
);
76 return ranking
.compareTo(o
.ranking
);
78 return pid
.compareTo(o
.pid
);
86 public String
getPid() {
90 public Integer
getRanking() {
98 public static RankingKey
minPid(String pid
) {
99 return new RankingKey(pid
, Integer
.MIN_VALUE
, null);
102 public static RankingKey
maxPid(String pid
) {
103 return new RankingKey(pid
, Integer
.MAX_VALUE
, null);