annotate src/main/java/christie/codegear/CodeGear.java @ 28:d1fc3ebb269e

minor change
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Tue, 30 Jan 2018 19:55:14 +0900
parents da373b25ae06
children e29900328fff
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;
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
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
bf8ac57409af make dg package
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
7 import christie.datagear.command.Command;
bf8ac57409af make dg package
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
8 import christie.datagear.command.PeekCommand;
bf8ac57409af make dg package
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
9 import christie.datagear.command.TakeCommand;
bf8ac57409af make dg package
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
10 import christie.datagear.dg.DataGear;
0
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 import java.lang.reflect.Field;
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 import java.util.ArrayList;
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
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 * 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
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
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);
28
d1fc3ebb269e minor change
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 27
diff changeset
42 setTakeCommand(ano.dgmName(), 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
4e5f6db22033 minor change
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
62 if (dg.getClazz() == null){
4e5f6db22033 minor change
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
63 throw new NullPointerException("please initialize DataGear");
4e5f6db22033 minor change
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
64 }
4e5f6db22033 minor change
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
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
c082039368f5 make project
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 }