]> git.argeo.org Git - gpl/argeo-suite.git/blob - org.argeo.app.api/src/org/argeo/app/api/IdRange.java
Add new icons
[gpl/argeo-suite.git] / org.argeo.app.api / src / org / argeo / app / api / IdRange.java
1 package org.argeo.app.api;
2
3 /** A range of numerical IDs (typically numerical uid or gid). */
4 public class IdRange {
5
6 private final long min;
7 private final long max;
8
9 public IdRange(long min, long max) {
10 this.min = min;
11 this.max = max;
12 }
13
14 public IdRange(long minPow10) {
15 this(minPow10, maxFromMinPow10(minPow10));
16 }
17
18 public long getMin() {
19 return min;
20 }
21
22 public long getMax() {
23 return max;
24 }
25
26 private static long maxFromMinPow10(long minPow10) {
27 if ((minPow10 % 100) != 0) {
28 throw new IllegalArgumentException(minPow10 + " must at least ends with two zeroes");
29 }
30 int exp = 2;
31 exp: for (int i = exp + 1; i < 10; i++) {
32 if ((minPow10 % pow10(i)) != 0)
33 break exp;
34 exp++;
35 }
36 System.out.println(exp);
37
38 long max = minPow10 + pow10(exp) - 1;
39 return max;
40 }
41
42 /** Power of 10. */
43 private static long pow10(int exp) {
44 if (exp == 0)
45 return 1;
46 else
47 return 10 * pow10(exp - 1);
48 }
49
50 public static void main(String... args) {
51 System.out.println(maxFromMinPow10(100));
52 System.out.println(maxFromMinPow10(78500));
53 System.out.println(maxFromMinPow10(716850000));
54
55 // System.out.println(pow10(6));
56 // System.out.println(maxFromMinPow10(12));
57 // System.out.println(maxFromMinPow10(124));
58 // System.out.println(maxFromMinPow10(99814565));
59 }
60 }