Skip to content

Commit 8049062

Browse files
committed
#41 Create VStringArray types
1 parent 2807b4f commit 8049062

4 files changed

Lines changed: 126 additions & 0 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package org.epics.vtype;
2+
3+
import java.util.List;
4+
5+
import org.epics.util.array.ListInteger;
6+
7+
public class IVStringArray extends VStringArray {
8+
9+
private final List<String> data;
10+
private final ListInteger sizes;
11+
private final Alarm alarm;
12+
private final Time time;
13+
14+
IVStringArray(List<String> data, ListInteger sizes, Alarm alarm, Time time) {
15+
VType.argumentNotNull("data", data);
16+
VType.argumentNotNull("sizes", sizes);
17+
VType.argumentNotNull("alarm", alarm);
18+
VType.argumentNotNull("time", time);
19+
this.data = data;
20+
this.alarm = alarm;
21+
this.time = time;
22+
this.sizes = sizes;
23+
}
24+
25+
@Override
26+
public ListInteger getSizes() {
27+
return sizes;
28+
}
29+
30+
@Override
31+
public List<String> getData() {
32+
return data;
33+
}
34+
35+
@Override
36+
public Alarm getAlarm() {
37+
return alarm;
38+
}
39+
40+
@Override
41+
public Time getTime() {
42+
return time;
43+
}
44+
45+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package org.epics.vtype;
2+
3+
import java.util.List;
4+
5+
import org.epics.util.array.ArrayInteger;
6+
import org.epics.util.array.ListInteger;
7+
8+
public abstract class VStringArray extends Array implements AlarmProvider, TimeProvider {
9+
10+
@Override
11+
public abstract List<String> getData();
12+
13+
14+
public static VStringArray of(List<String> data, ListInteger sizes, Alarm alarm, Time time) {
15+
return new IVStringArray(data, sizes, alarm, time);
16+
}
17+
18+
public static VStringArray of(List<String> data, Alarm alarm, Time time) {
19+
return of(data, ArrayInteger.of(data.size()), alarm, time);
20+
}
21+
22+
public static VStringArray of(List<String> data) {
23+
return of(data, Alarm.none(), Time.now());
24+
}
25+
26+
@Override
27+
public String toString() {
28+
StringBuilder builder = new StringBuilder();
29+
Class type = typeOf(this);
30+
builder.append(type.getSimpleName())
31+
.append("[");
32+
builder.append(getData());
33+
builder.append(", size ")
34+
.append(getSizes())
35+
.append(", ")
36+
.append(getAlarm())
37+
.append(", ")
38+
.append(getTime())
39+
.append(']');
40+
return builder.toString();
41+
}
42+
43+
}

epics-vtype/vtype/src/main/java/org/epics/vtype/VType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public abstract class VType {
4141
VShortArray.class,
4242
VUByteArray.class,
4343
VByteArray.class,
44+
VStringArray.class,
4445
VImage.class,
4546
VTable.class);
4647

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* Copyright information and license terms for this software can be
3+
* found in the file LICENSE.TXT included with the distribution.
4+
*/
5+
package org.epics.vtype;
6+
7+
import static org.hamcrest.Matchers.equalTo;
8+
import static org.junit.Assert.assertThat;
9+
10+
import java.time.Instant;
11+
import java.util.Arrays;
12+
13+
import org.junit.Before;
14+
import org.junit.Test;
15+
16+
/**
17+
*
18+
* @author shroffk
19+
*/
20+
public class VStringArrayTest {
21+
22+
private Time testTime;
23+
24+
@Before
25+
public void setUp() {
26+
testTime = Time.of(Instant.ofEpochSecond(1354719441, 521786982));
27+
}
28+
29+
@Test
30+
public void newVStringArray() {
31+
Alarm alarm = Alarm.of(AlarmSeverity.MINOR, AlarmStatus.DB, "LOW");
32+
VStringArray value = VStringArray.of(Arrays.asList("ONE", "TWO", "THREE"), alarm, testTime);
33+
assertThat(value.getData(), equalTo(Arrays.asList("ONE", "TWO", "THREE")));
34+
assertThat(value.toString(),
35+
equalTo(String.format("VStringArray[[ONE, TWO, THREE], size [3], %s, %s]", alarm.toString(), testTime.toString())));
36+
}
37+
}

0 commit comments

Comments
 (0)