1 package fr.ifremer.quadrige3.core;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import org.jdesktop.beans.AbstractSerializableBean;
24
25
26
27
28
29
30
31 public class ProgressionCoreModel extends AbstractSerializableBean {
32
33 private static final double DEFAULT_RATE = 1;
34
35 public static final String PROPERTY_TOTAL = "total";
36
37 public static final String PROPERTY_CURRENT = "current";
38
39 public static final String PROPERTY_MESSAGE = "message";
40
41 private long total;
42
43 private long current;
44
45 private double rate = DEFAULT_RATE;
46
47 private String message;
48
49
50
51
52
53
54 public int getTotal() {
55 return (int) (total * rate);
56 }
57
58
59
60
61
62
63 public void setTotal(long total) {
64
65 rate = (total > Integer.MAX_VALUE) ? ((double) Integer.MAX_VALUE / total) : DEFAULT_RATE;
66 this.total = total;
67 firePropertyChange(PROPERTY_TOTAL, null, getTotal());
68 setCurrent(0);
69 }
70
71
72
73
74
75
76 public void adaptTotal(long total) {
77 if (total > this.total) {
78 int current = getCurrent();
79 setTotal(total);
80 setCurrent(current);
81 }
82 }
83
84
85
86
87
88
89 public int getCurrent() {
90 return (int) (current * rate);
91 }
92
93
94
95
96
97
98 public void setCurrent(long current) {
99 this.current = (current > total) ? total : current;
100 firePropertyChange(PROPERTY_CURRENT, null, getCurrent());
101 }
102
103 public void increments(int nb) {
104 setCurrent(current + nb);
105 }
106
107 public String getMessage() {
108 return message;
109 }
110
111 public void increments(String message) {
112 increments(1);
113 setMessage(message);
114 }
115
116 public void setMessage(String message) {
117 String oldMessage = getMessage();
118 this.message = message;
119 firePropertyChange(PROPERTY_MESSAGE, oldMessage, message);
120 }
121
122 }