Mercurial > hg > Database > Christie
annotate src/main/java/christie/codegear/CodeGear.java @ 10:4b608ce0c483
add local repeat test
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 30 Dec 2017 18:30:04 +0900 |
parents | 21372a589bd3 |
children | 4e5f6db22033 |
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; |
0 | 4 import christie.annotation.Take; |
5 import christie.datagear.DataGear; | |
1
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
6 import christie.datagear.DataGearManager; |
0 | 7 |
8 import java.lang.reflect.Field; | |
9 import java.util.ArrayList; | |
10 import java.util.HashMap; | |
11 | |
12 /** | |
13 * 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
|
14 * Annotationからのinputコマンドの生成、揃ったDataGearの値を返す |
0 | 15 */ |
7
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
16 public abstract class CodeGear{ |
5
5be6647b87d2
StartCodeGear implements Runnable to wait InputDataGear
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
17 public InputDataGear idg = new InputDataGear(this); |
5be6647b87d2
StartCodeGear implements Runnable to wait InputDataGear
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
18 public OutputDataGear odg = new OutputDataGear(this); |
3
e3bb0eea73f2
resolve Annotation error and TestCodeGear is working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
19 public ArrayList<Command> commandList = new ArrayList<Command>(); |
e3bb0eea73f2
resolve Annotation error and TestCodeGear is working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
20 public CodeGearManager cgm; |
7
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
21 public DataGearManager localDGM; |
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
22 public CodeGearExecutor cge; |
0 | 23 |
10
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
24 protected abstract void run(CodeGearManager cgm); |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
25 |
7
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
26 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
|
27 this.cgm = cgm; |
7
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
28 this.cge = new CodeGearExecutor(this, this.cgm); |
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
29 this.localDGM = cgm.getDGM(); |
5
5be6647b87d2
StartCodeGear implements Runnable to wait InputDataGear
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
30 odg.initODG(cgm); |
3
e3bb0eea73f2
resolve Annotation error and TestCodeGear is working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
31 |
7
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
32 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
|
33 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
|
34 Take ano = field.getAnnotation(Take.class); |
10
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
35 checkAndSetCommand(field, ano.value()); |
6
3dcfe63d6394
set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
36 } 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
|
37 Peek ano = field.getAnnotation(Peek.class); |
10
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
38 checkAndSetCommand(field, ano.value()); |
1
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
39 } |
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
40 } |
3
e3bb0eea73f2
resolve Annotation error and TestCodeGear is working
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
41 |
6
3dcfe63d6394
set type to DataGear by Annotation
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
5
diff
changeset
|
42 idg.finishInput(cgm, commandList); |
1
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
43 } |
3ea61d0bfc34
add dependency proccess but not work
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
44 |
7
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
45 public DataGearManager dgm(String dest) { |
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
46 return cgm.getDGM(dest); |
21372a589bd3
add CodeGearExecutor
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
6
diff
changeset
|
47 } |
10
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
48 |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
49 public void checkAndSetCommand(Field field, String name){ |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
50 if (!field.getName().equals(name)){ |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
51 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
|
52 } |
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 DataGear dg = null; |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
55 try { |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
56 dg = (DataGear) field.get(this); |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
57 } catch (IllegalAccessException e) { |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
58 e.printStackTrace(); |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
59 } |
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 commandList.add(new Command(this, dg, "local", name, CommandType.TAKE)); |
4b608ce0c483
add local repeat test
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
7
diff
changeset
|
62 } |
0 | 63 } |