comparison 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
comparison
equal deleted inserted replaced
9:50a2df302920 10:4b608ce0c483
19 public ArrayList<Command> commandList = new ArrayList<Command>(); 19 public ArrayList<Command> commandList = new ArrayList<Command>();
20 public CodeGearManager cgm; 20 public CodeGearManager cgm;
21 public DataGearManager localDGM; 21 public DataGearManager localDGM;
22 public CodeGearExecutor cge; 22 public CodeGearExecutor cge;
23 23
24 protected abstract void run(CodeGearManager cgm);
25
24 public void setup(CodeGearManager cgm){ 26 public void setup(CodeGearManager cgm){
25 this.cgm = cgm; 27 this.cgm = cgm;
26 this.cge = new CodeGearExecutor(this, this.cgm); 28 this.cge = new CodeGearExecutor(this, this.cgm);
27 this.localDGM = cgm.getDGM(); 29 this.localDGM = cgm.getDGM();
28 odg.initODG(cgm); 30 odg.initODG(cgm);
29 31
30 for (Field field : this.getClass().getDeclaredFields()) {//AnnotationからInputDataGearをセット 32 for (Field field : this.getClass().getDeclaredFields()) {//AnnotationからInputDataGearをセット
31 DataGear dg = null;
32 try {
33 dg = (DataGear) field.get(this);
34 } catch (IllegalAccessException e) {
35 e.printStackTrace();
36 }
37
38 if (field.isAnnotationPresent(Take.class)) { 33 if (field.isAnnotationPresent(Take.class)) {
39 Take ano = field.getAnnotation(Take.class); 34 Take ano = field.getAnnotation(Take.class);
40 commandList.add(new Command(this, dg, "local", ano.value(), CommandType.TAKE)); 35 checkAndSetCommand(field, ano.value());
41 } else if (field.isAnnotationPresent(Peek.class)) { 36 } else if (field.isAnnotationPresent(Peek.class)) {
42 Peek ano = field.getAnnotation(Peek.class); 37 Peek ano = field.getAnnotation(Peek.class);
43 commandList.add(new Command(this, dg, "local", ano.value(), CommandType.PEEK)); 38 checkAndSetCommand(field, ano.value());
44 } 39 }
45 } 40 }
46 41
47 idg.finishInput(cgm, commandList); 42 idg.finishInput(cgm, commandList);
48 } 43 }
49 44
50 protected abstract void run(CodeGearManager cgm);
51
52 public DataGearManager dgm(String dest) { 45 public DataGearManager dgm(String dest) {
53 return cgm.getDGM(dest); 46 return cgm.getDGM(dest);
54 } 47 }
48
49 public void checkAndSetCommand(Field field, String name){
50 if (!field.getName().equals(name)){
51 throw new IllegalArgumentException("key and DataGearName do not match");
52 }
53
54 DataGear dg = null;
55 try {
56 dg = (DataGear) field.get(this);
57 } catch (IllegalAccessException e) {
58 e.printStackTrace();
59 }
60
61 commandList.add(new Command(this, dg, "local", name, CommandType.TAKE));
62 }
55 } 63 }