Skip to content

Method: handle(GenInterfaceClass)

1: package de.fhdw.wtf.generator.java.walker;
2:
3: import java.util.Iterator;
4:
5: import de.fhdw.wtf.common.exception.walker.TaskException;
6: import de.fhdw.wtf.common.task.DependencyTask;
7: import de.fhdw.wtf.common.task.TaskExecutor;
8: import de.fhdw.wtf.common.task.result.ExceptionalTaskResult;
9: import de.fhdw.wtf.common.task.result.OKTaskResult;
10: import de.fhdw.wtf.common.task.result.TaskResult;
11: import de.fhdw.wtf.generator.java.generatorModel.GenClass;
12: import de.fhdw.wtf.generator.java.generatorModel.GenClassClass;
13: import de.fhdw.wtf.generator.java.generatorModel.GenInterfaceClass;
14: import de.fhdw.wtf.generator.java.generatorModel.GenJavaOperation;
15: import de.fhdw.wtf.generator.java.generatorModel.GenPrimitiveClass;
16: import de.fhdw.wtf.generator.java.generatorModel.GeneratorModel;
17: import de.fhdw.wtf.generator.java.visitor.GenClassVisitorException;
18:
19: public abstract class SimpleGeneratorModelWalkerTask extends GeneratorModelWalkerTask {
20:         
21:         private final GeneratorModel model;
22:         
23:         public SimpleGeneratorModelWalkerTask(final TaskExecutor taskmanager, final GeneratorModel javaGeneratorModel) {
24:                 super(taskmanager);
25:                 this.model = javaGeneratorModel;
26:         }
27:         
28:         protected GeneratorModel getGeneratorModel() {
29:                 return this.model;
30:         }
31:         
32:         @Override
33:         public boolean containsTransitive(final DependencyTask a) {
34:                 return false;
35:         }
36:         
37:         @Override
38:         public final TaskResult doWork() {
39:                 try {
40:                         final Iterator<GenClass> i = this.model.getClasses().iterator();
41:                         while (i.hasNext()) {
42:                                 final GenClass current = i.next();
43:                                 current.accept(new GenClassVisitorException<TaskException>() {
44:                                         
45:                                         @Override
46:                                         public void handle(final GenClassClass classClass) throws TaskException {
47:                                                 SimpleGeneratorModelWalkerTask.this.handleClassClass(classClass);
48:                                         }
49:                                         
50:                                         @Override
51:                                         public void handle(final GenInterfaceClass interfaceClass) throws TaskException {
52:                                                 SimpleGeneratorModelWalkerTask.this.handleInterfaceClass(interfaceClass);
53:                                                 // nothing to do
54:                                         }
55:                                         
56:                                         @Override
57:                                         public void handle(final GenPrimitiveClass primitiveClass) throws TaskException {
58:                                                 // nothing to do
59:                                         }
60:                                 });
61:                                 final Iterator<GenJavaOperation> j = current.getOperations().iterator();
62:                                 while (j.hasNext()) {
63:                                         final GenJavaOperation o = j.next();
64:                                         this.handleOperation(o);
65:                                 }
66:                         }
67:                         this.finalizeTask();
68:                 } catch (final TaskException e) {
69:                         return new ExceptionalTaskResult(e);
70:                 }
71:                 return new OKTaskResult();
72:         }
73:         
74:         /**
75:          * This operation will be called ONCE at the end of the task!
76:          *
77:          * @throws TaskException
78:          * may be thrown by the implementing task
79:          */
80:         public abstract void finalizeTask() throws TaskException;
81: }