Mercurial > hg > Database > Christie
annotate src/main/java/christie/codegear/CodeGear.java @ 208:ef5aad739292
update priority
author | akahori |
---|---|
date | Sun, 10 Mar 2019 16:25:52 +0900 |
parents | ad49723367c2 |
children | e486c13d9ea9 |
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; |
32
307ac87ddcf7
add TakeFrom annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
31
diff
changeset
|
4 import christie.annotation.PeekFrom; |
0 | 5 import christie.annotation.Take; |
32
307ac87ddcf7
add TakeFrom annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
31
diff
changeset
|
6 import christie.annotation.TakeFrom; |
23
695705dba324
Increased commands by type
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
22
diff
changeset
|
7 import christie.datagear.*; |
26 | 8 import christie.datagear.command.Command; |
9 import christie.datagear.command.PeekCommand; | |
10 import christie.datagear.command.TakeCommand; | |
11 import christie.datagear.dg.DataGear; | |
0 | 12 |
13 import java.lang.reflect.Field; | |
14 import java.util.ArrayList; | |
15 | |
16 /** | |
17 * 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
|
18 * Annotationからのinputコマンドの生成、揃ったDataGearの値を返す |
0 | 19 */ |
7
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
20 public abstract class CodeGear{ |
18
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
21 private InputDataGear idg = new InputDataGear(this); |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
22 private ArrayList<Command> commandList = new ArrayList<Command>(); |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
23 private CodeGearManager cgm; |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
24 private DataGearManager localDGM; |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
25 private CodeGearExecutor cge; |
0 | 26 |
10
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
27 protected abstract void run(CodeGearManager cgm); |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
28 |
208 | 29 public void setup(CodeGearManager cgm){ |
30 setup(cgm, Thread.NORM_PRIORITY); | |
31 } | |
32 | |
196 | 33 public void setup(CodeGearManager cgm, int priority){ |
3
e3bb0eea73f2
resolve Annotation error and TestCodeGear is working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
34 this.cgm = cgm; |
196 | 35 this.cge = new CodeGearExecutor(this, this.cgm, priority); |
14
f2b30b47ef67
RemotePutTest is working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
13
diff
changeset
|
36 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
|
37 |
7
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
38 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
|
39 if (field.isAnnotationPresent(Take.class)) { |
196 | 40 //Take ano = field.getAnnotation(Take.class); |
32
307ac87ddcf7
add TakeFrom annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
31
diff
changeset
|
41 setTakeCommand("local", field.getName(), new DataGear(field.getType())); |
6
3dcfe63d6394
set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
42 } else if (field.isAnnotationPresent(Peek.class)) { |
196 | 43 //Peek ano = field.getAnnotation(Peek.class); |
32
307ac87ddcf7
add TakeFrom annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
31
diff
changeset
|
44 setPeekCommand("local", field.getName(), new DataGear(field.getType())); |
36 | 45 } else if (field.isAnnotationPresent(TakeFrom.class)) { |
32
307ac87ddcf7
add TakeFrom annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
31
diff
changeset
|
46 TakeFrom ano = field.getAnnotation(TakeFrom.class); |
307ac87ddcf7
add TakeFrom annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
31
diff
changeset
|
47 setTakeCommand(ano.value(), field.getName(), new DataGear(field.getType())); |
307ac87ddcf7
add TakeFrom annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
31
diff
changeset
|
48 } else if (field.isAnnotationPresent(PeekFrom.class)) { |
307ac87ddcf7
add TakeFrom annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
31
diff
changeset
|
49 PeekFrom ano = field.getAnnotation(PeekFrom.class); |
31
e29900328fff
remove RemoteTake annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
28
diff
changeset
|
50 setPeekCommand(ano.value(), field.getName(), new DataGear(field.getType())); |
1
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
51 } |
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
52 } |
3
e3bb0eea73f2
resolve Annotation error and TestCodeGear is working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
53 |
6
3dcfe63d6394
set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
54 idg.finishInput(cgm, commandList); |
1
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
55 } |
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
56 |
25
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
57 public void setTakeCommand(String toDgmName, String key, DataGear dg){ |
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
58 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
|
59 } |
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
60 |
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
61 public void setPeekCommand(String toDgmName, String key, DataGear dg){ |
76fac42a840e
work RemoteTakeTest
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
23
diff
changeset
|
62 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
|
63 } |
18
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
64 |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
65 public DataGearManager getLocalDGM() { |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
66 return localDGM; |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
67 } |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
68 |
20
7b45ccc0f70e
add MessagePackDataGear
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
18
diff
changeset
|
69 public DataGearManager getDGM(String dgmName) { |
18
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
70 return cgm.getDGM(dgmName); |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
71 } |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
72 |
128 | 73 public CodeGear put(String dgmName, String key, Object data){ |
36 | 74 getDGM(dgmName).put(key, data); |
128 | 75 return this; |
36 | 76 } |
77 | |
128 | 78 public CodeGear put(String key, Object value){ |
79 | |
36 | 80 localDGM.put(key, value); |
128 | 81 return this; |
36 | 82 } |
83 | |
112 | 84 public Boolean containsDGM(String dgmName){ return cgm.containsDGM(dgmName);} |
85 | |
86 public void finish(String managerKey) { | |
87 if (cgm.getDGMList().contains(managerKey)) | |
88 cgm.getDGMList().get(managerKey).finish(); | |
89 } | |
90 | |
91 | |
92 | |
36 | 93 public void flip(String dgmName, String key){//ToDo: これ値を編集できるからflipできてない。初期値をflipしたい。 |
94 for (Field field : this.getClass().getDeclaredFields()) { | |
95 if (field.getName() == key){ | |
96 try { | |
97 getDGM(dgmName).put(key, field.get(this)); | |
98 } catch (IllegalAccessException e) { | |
99 e.printStackTrace(); | |
100 } | |
101 } | |
102 } | |
103 } | |
104 | |
18
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
105 public InputDataGear getIdg() { |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
106 return idg; |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
107 } |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
108 |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
109 public CodeGearExecutor getCge() { |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
110 return cge; |
b8dc461b29f4
waitList use Queue
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
17
diff
changeset
|
111 } |
196 | 112 |
0 | 113 } |