KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > spoon > examples > dbaccess > processing > DBAccessProcessor


1 package spoon.examples.dbaccess.processing;
2
3 import spoon.examples.dbaccess.annotation.DBAccess;
4 import spoon.examples.dbaccess.annotation.DBType;
5 import spoon.examples.dbaccess.template.DBCodeTemplate;
6 import spoon.processing.AbstractAnnotationProcessor;
7 import spoon.processing.Severity;
8 import spoon.reflect.Factory;
9 import spoon.reflect.declaration.CtClass;
10 import spoon.reflect.declaration.CtConstructor;
11 import spoon.reflect.declaration.CtMethod;
12 import spoon.template.Substitution;
13
14 public class DBAccessProcessor extends
15         AbstractAnnotationProcessor<DBAccess, CtClass<?>> {
16
17     public void process(DBAccess dbAccess, CtClass<?> target) {
18         Factory f = target.getFactory();
19         DBType t = dbAccess.type();
20         if (t != DBType.RELATIONAL)
21             f.getEnvironment().report(
22                     this,
23                     Severity.ERROR,
24                     target.getAnnotation(f.Type().createReference(
25                             DBAccess.class)), "unsupported DB system");
26
27         DBCodeTemplate template = new DBCodeTemplate(f, dbAccess.database(),
28                 dbAccess.username(), dbAccess.password(), dbAccess.tableName());
29         Substitution.insertField(target, template, f.Template().get(
30                 DBCodeTemplate.class).getField("connection"));
31         for (CtConstructor c : target.getConstructors()) {
32             c.getBody().insertBegin(
33                     Substitution.substituteMethodBody(target, template,
34                             "initializerCode"));
35         }
36         for (CtMethod<?> m : target.getMethods()) {
37             template._columnName_ = m.getSimpleName().substring(3)
38                     .toLowerCase();
39             m.getBody().replace(
40                     Substitution.substituteMethodBody(target, template,
41                             "accessCode"));
42         }
43     }
44
45 }
46
Popular Tags