All Downloads are FREE. Search and download functionalities are using the official Maven repository.

spoon.examples.dbaccess.processing.DBAccessProcessor Maven / Gradle / Ivy

The newest version!
package spoon.examples.dbaccess.processing;

import spoon.examples.dbaccess.annotation.DBAccess;
import spoon.examples.dbaccess.annotation.DBType;
import spoon.examples.dbaccess.template.DBCodeTemplate;
import spoon.processing.AbstractAnnotationProcessor;
import spoon.processing.Severity;
import spoon.reflect.Factory;
import spoon.reflect.declaration.CtClass;
import spoon.reflect.declaration.CtConstructor;
import spoon.reflect.declaration.CtMethod;
import spoon.template.Substitution;

public class DBAccessProcessor extends
		AbstractAnnotationProcessor> {

	public void process(DBAccess dbAccess, CtClass target) {
		Factory f = target.getFactory();
		DBType t = dbAccess.type();
		if (t != DBType.RELATIONAL)
			f.getEnvironment().report(
					this,
					Severity.ERROR,
					target.getAnnotation(f.Type().createReference(
							DBAccess.class)), "unsupported DB system");

		DBCodeTemplate template = new DBCodeTemplate(f, dbAccess.database(),
				dbAccess.username(), dbAccess.password(), dbAccess.tableName());
		Substitution.insertField(target, template, f.Template().get(
				DBCodeTemplate.class).getField("connection"));
		for (CtConstructor c : target.getConstructors()) {
			c.getBody().insertBegin(
					Substitution.substituteMethodBody(target, template,
							"initializerCode"));
		}
		for (CtMethod m : target.getMethods()) {
			template._columnName_ = m.getSimpleName().substring(3)
					.toLowerCase();
			m.getBody().replace(
					Substitution.substituteMethodBody(target, template,
							"accessCode"));
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy