Mercurial > hg > Database > Christie
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 } |