]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.util/src/org/argeo/util/register/RankingKey.java
Use runtime namespace context as default.
[lgpl/argeo-commons.git] / org.argeo.util / src / org / argeo / util / register / RankingKey.java
1 package org.argeo.util.register;
2
3 import java.util.Map;
4 import java.util.Objects;
5
6 /**
7 * Key used to classify and filter available components.
8 */
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";
13
14 private String pid;
15 private Integer ranking = 0;
16 private Long id = 0l;
17
18 public RankingKey(String pid, Integer ranking, Long id) {
19 super();
20 this.pid = pid;
21 this.ranking = ranking;
22 this.id = id;
23 }
24
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())
29 : 0;
30 this.id = properties.containsKey(SERVICE_ID) ? (Long) properties.get(SERVICE_ID) : null;
31 }
32
33 @Override
34 public int hashCode() {
35 Integer result = 0;
36 if (pid != null)
37 result = +pid.hashCode();
38 if (ranking != null)
39 result = +ranking;
40 return result;
41 }
42
43 @Override
44 protected Object clone() throws CloneNotSupportedException {
45 return new RankingKey(pid, ranking, id);
46 }
47
48 @Override
49 public String toString() {
50 StringBuilder sb = new StringBuilder("");
51 if (pid != null)
52 sb.append(pid);
53 if (ranking != null && ranking != 0)
54 sb.append(' ').append(ranking);
55 return sb.toString();
56 }
57
58 @Override
59 public boolean equals(Object obj) {
60 if (!(obj instanceof RankingKey))
61 return false;
62 RankingKey other = (RankingKey) obj;
63 return Objects.equals(pid, other.pid) && Objects.equals(ranking, other.ranking) && Objects.equals(id, other.id);
64 }
65
66 @Override
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);
73 else
74 return 0;
75 else
76 return ranking.compareTo(o.ranking);
77 } else {
78 return pid.compareTo(o.pid);
79 }
80
81 } else {
82 }
83 return -1;
84 }
85
86 public String getPid() {
87 return pid;
88 }
89
90 public Integer getRanking() {
91 return ranking;
92 }
93
94 public Long getId() {
95 return id;
96 }
97
98 public static RankingKey minPid(String pid) {
99 return new RankingKey(pid, Integer.MIN_VALUE, null);
100 }
101
102 public static RankingKey maxPid(String pid) {
103 return new RankingKey(pid, Integer.MAX_VALUE, null);
104 }
105 }