Mercurial > hg > Database > Christie
annotate src/main/java/christie/codegear/CodeGear.java @ 27:da373b25ae06
delete OutputDataGear
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 27 Jan 2018 16:41:59 +0900 |
parents | bf8ac57409af |
children | d1fc3ebb269e |
rev | line source |
---|---|
0 | 1 package christie.codegear; |
2 | |
6
3dcfe63d6394
set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
3 import christie.annotation.Peek; |
21
5baccb8f7fbd
add RemoteTake, but it isn't working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
20
diff
changeset
|
4 import christie.annotation.RemoteTake; |
0 | 5 import christie.annotation.Take; |
23
695705dba324
Increased commands by type
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
22
diff
changeset
|
6 import christie.datagear.*; |
26 | 7 import christie.datagear.command.Command; |
8 import christie.datagear.command.PeekCommand; | |
9 import christie.datagear.command.TakeCommand; | |
10 import christie.datagear.dg.DataGear; | |
0 | 11 |
12 import java.lang.reflect.Field; | |
13 import java.util.ArrayList; | |
14 | |
15 /** | |
16 * Created by e125769 on 12/7/17. | |
1
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
17 * Annotationからのinputコマンドの生成、揃ったDataGearの値を返す |
0 | 18 */ |
7
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
19 public abstract class CodeGear{ |
18
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
20 private InputDataGear idg = new InputDataGear(this); |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
21 private ArrayList<Command> commandList = new ArrayList<Command>(); |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
22 private CodeGearManager cgm; |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
23 private DataGearManager localDGM; |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
24 private CodeGearExecutor cge; |
0 | 25 |
10
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
26 protected abstract void run(CodeGearManager cgm); |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
27 |
7
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
28 public void setup(CodeGearManager cgm){ |
3
e3bb0eea73f2
resolve Annotation error and TestCodeGear is working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
29 this.cgm = cgm; |
7
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
30 this.cge = new CodeGearExecutor(this, this.cgm); |
14
f2b30b47ef67
RemotePutTest is working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
13
diff
changeset
|
31 this.localDGM = cgm.getLocalDGM(); |
3
e3bb0eea73f2
resolve Annotation error and TestCodeGear is working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
32 |
7
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
33 for (Field field : this.getClass().getDeclaredFields()) {//AnnotationからInputDataGearをセット |
6
3dcfe63d6394
set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
34 if (field.isAnnotationPresent(Take.class)) { |
1
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
35 Take ano = field.getAnnotation(Take.class); |
25
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
36 setTakeCommand("local", ano.value(), initDataGear(field, ano.value())); |
6
3dcfe63d6394
set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
37 } else if (field.isAnnotationPresent(Peek.class)) { |
3dcfe63d6394
set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
38 Peek ano = field.getAnnotation(Peek.class); |
25
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
39 setPeekCommand("local", ano.value(), initDataGear(field, ano.value())); |
21
5baccb8f7fbd
add RemoteTake, but it isn't working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
20
diff
changeset
|
40 } else if (field.isAnnotationPresent(RemoteTake.class)) { |
5baccb8f7fbd
add RemoteTake, but it isn't working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
20
diff
changeset
|
41 RemoteTake ano = field.getAnnotation(RemoteTake.class); |
25
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
42 setTakeCommand("local", ano.key(), initDataGear(field, ano.key())); |
1
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
43 } |
25
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
44 //ToDo:add remote peek |
1
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
45 } |
3
e3bb0eea73f2
resolve Annotation error and TestCodeGear is working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
46 |
6
3dcfe63d6394
set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
47 idg.finishInput(cgm, commandList); |
1
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
48 } |
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
49 |
25
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
50 public DataGear initDataGear(Field field, String key){ |
21
5baccb8f7fbd
add RemoteTake, but it isn't working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
20
diff
changeset
|
51 if (!field.getName().equals(key)){ |
10
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
52 throw new IllegalArgumentException("key and DataGearName do not match"); |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
53 } |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
54 |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
55 DataGear dg = null; |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
56 try { |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
57 dg = (DataGear) field.get(this); |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
58 } catch (IllegalAccessException e) { |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
59 e.printStackTrace(); |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
60 } |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
61 |
11 | 62 if (dg.getClazz() == null){ |
63 throw new NullPointerException("please initialize DataGear"); | |
64 } | |
65 | |
25
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
66 return dg; |
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
67 } |
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
68 |
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
69 public void setTakeCommand(String toDgmName, String key, DataGear dg){ |
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
70 commandList.add(new TakeCommand(this, cgm.cgmID, toDgmName, key, dg)); |
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
71 } |
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
72 |
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
73 public void setPeekCommand(String toDgmName, String key, DataGear dg){ |
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
74 commandList.add(new PeekCommand(this, cgm.cgmID, toDgmName, key, dg)); |
10
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
75 } |
18
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
76 |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
77 public DataGearManager getLocalDGM() { |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
78 return localDGM; |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
79 } |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
80 |
20
7b45ccc0f70e
add MessagePackDataGear
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
81 public DataGearManager getDGM(String dgmName) { |
18
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
82 return cgm.getDGM(dgmName); |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
83 } |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
84 |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
85 public InputDataGear getIdg() { |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
86 return idg; |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
87 } |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
88 |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
89 public CodeGearExecutor getCge() { |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
90 return cge; |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
91 } |
0 | 92 } |