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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 package christie.codegear;
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
bf8ac57409af make dg package
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
8 import christie.datagear.command.Command;
bf8ac57409af make dg package
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
9 import christie.datagear.command.PeekCommand;
bf8ac57409af make dg package
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
10 import christie.datagear.command.TakeCommand;
bf8ac57409af make dg package
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
11 import christie.datagear.dg.DataGear;
0
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 import java.lang.reflect.Field;
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 import java.util.ArrayList;
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 /**
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
ef5aad739292 update priority
akahori
parents: 196
diff changeset
29 public void setup(CodeGearManager cgm){
ef5aad739292 update priority
akahori
parents: 196
diff changeset
30 setup(cgm, Thread.NORM_PRIORITY);
ef5aad739292 update priority
akahori
parents: 196
diff changeset
31 }
ef5aad739292 update priority
akahori
parents: 196
diff changeset
32
196
ad49723367c2 add priority
akahori
parents: 128
diff changeset
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
ad49723367c2 add priority
akahori
parents: 128
diff changeset
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
ad49723367c2 add priority
akahori
parents: 128
diff changeset
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
ad49723367c2 add priority
akahori
parents: 128
diff changeset
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
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
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
2886363f5e12 update put
akahori
parents: 112
diff changeset
73 public CodeGear put(String dgmName, String key, Object data){
36
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
74 getDGM(dgmName).put(key, data);
128
2886363f5e12 update put
akahori
parents: 112
diff changeset
75 return this;
36
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
76 }
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
77
128
2886363f5e12 update put
akahori
parents: 112
diff changeset
78 public CodeGear put(String key, Object value){
2886363f5e12 update put
akahori
parents: 112
diff changeset
79
36
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
80 localDGM.put(key, value);
128
2886363f5e12 update put
akahori
parents: 112
diff changeset
81 return this;
36
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
82 }
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
83
112
20f7270e997d update add contains
akahori
parents: 36
diff changeset
84 public Boolean containsDGM(String dgmName){ return cgm.containsDGM(dgmName);}
20f7270e997d update add contains
akahori
parents: 36
diff changeset
85
20f7270e997d update add contains
akahori
parents: 36
diff changeset
86 public void finish(String managerKey) {
20f7270e997d update add contains
akahori
parents: 36
diff changeset
87 if (cgm.getDGMList().contains(managerKey))
20f7270e997d update add contains
akahori
parents: 36
diff changeset
88 cgm.getDGMList().get(managerKey).finish();
20f7270e997d update add contains
akahori
parents: 36
diff changeset
89 }
20f7270e997d update add contains
akahori
parents: 36
diff changeset
90
20f7270e997d update add contains
akahori
parents: 36
diff changeset
91
20f7270e997d update add contains
akahori
parents: 36
diff changeset
92
36
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
93 public void flip(String dgmName, String key){//ToDo: これ値を編集できるからflipできてない。初期値をflipしたい。
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
94 for (Field field : this.getClass().getDeclaredFields()) {
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
95 if (field.getName() == key){
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
96 try {
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
97 getDGM(dgmName).put(key, field.get(this));
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
98 } catch (IllegalAccessException e) {
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
99 e.printStackTrace();
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
100 }
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
101 }
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
102 }
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
103 }
4479d37c8e53 change put syntax
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
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
ad49723367c2 add priority
akahori
parents: 128
diff changeset
112
0
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 }