Olá a todos. O Código abaixo funciona, porém sei que estou tendo re-trabalho por nada. Então envio o código para saber se alguém poderia ajudar a “encurta-lo”.
Métodos que fazem alguma coisa dependendo se é OneToOne.class ou ManyToOne.class e etc.
/**
* Generate '@ManyToMany' Annotation
*/
public String generateManyToManyRelationshipElement(Annotation annotation) {
// Relationship Pattern
String relationshipBasicPattern = "@ManyToMany(";
// Treat of annotation's parameters
if ((((ManyToMany) annotation).fetch().toString().equalsIgnoreCase("EAGER"))
|| (((ManyToMany) annotation).fetch().toString().equalsIgnoreCase("LAZY"))) {
relationshipBasicPattern = relationshipBasicPattern + "fetch=FetchType." + ((ManyToMany) annotation).fetch() + ", ";
}
if ((((ManyToMany) annotation).cascade().length != 0)) {
String cascade = "cascade= {";
for (CascadeType cascadeType : ((ManyToMany) annotation).cascade()) {
cascade = cascade + "CascadeType." + cascadeType.toString() + ", ";
}
if (cascade.endsWith(", ")) {
String finalcascade = cascade.substring(0, cascade.length()-1) + "}";
relationshipBasicPattern = relationshipBasicPattern + finalcascade + ", ";
} else {
cascade = cascade + "}";
relationshipBasicPattern = relationshipBasicPattern + cascade + ", ";
}
}
if (((ManyToMany) annotation).mappedBy().length() != 0) {
relationshipBasicPattern = relationshipBasicPattern + "mappedBy=" + ((ManyToMany) annotation).mappedBy() + ", ";
}
if (!((ManyToMany) annotation).targetEntity().getSimpleName().equalsIgnoreCase("void")) {
relationshipBasicPattern = relationshipBasicPattern + "targetEntity=" + ((ManyToMany) annotation).targetEntity().getSimpleName() + ".class)";
}
if (relationshipBasicPattern.endsWith(", ")) {
String finalrelationshipBasicPattern = relationshipBasicPattern.substring(0, relationshipBasicPattern.length()-2) + ")";
return finalrelationshipBasicPattern;
} else {
return relationshipBasicPattern;
}
}
// Generate the @ManyToOne Element's Annotations
// Generate @ManyToOne Annotation
/**
* Generate '@ManyToOne' Annotation
*/
public String generateManyToOneRelationshipElement(Annotation annotation) {
// Relationship Pattern
String relationshipBasicPattern = "@ManyToOne(";
// Treat of empty annotation's parameters
// @ManyToMany(fetch=EAGER, mappedBy=joão, targetEntity=class br.com.link3.l3studio.modelos.Entidade)
if ((((ManyToOne) annotation).fetch().toString().equalsIgnoreCase("EAGER"))
|| (((ManyToOne) annotation).fetch().toString().equalsIgnoreCase("LAZY"))) {
relationshipBasicPattern = relationshipBasicPattern + "fetch=FetchType." + ((ManyToOne) annotation).fetch() + ", ";
}
if ((((ManyToOne) annotation).cascade().length != 0)) {
String cascade = "cascade= {";
for (CascadeType cascadeType : ((ManyToOne) annotation).cascade()) {
cascade = cascade + "CascadeType." + cascadeType.toString() + ", ";
}
if (cascade.endsWith(", ")) {
String finalcascade = cascade.substring(0, cascade.length()-1) + "}";
relationshipBasicPattern = relationshipBasicPattern + finalcascade + ", ";
} else {
cascade = cascade + "}";
relationshipBasicPattern = relationshipBasicPattern + cascade + ", ";
}
}
if ((((ManyToOne) annotation).optional() == false)
|| (((ManyToOne) annotation).optional() == true)) {
relationshipBasicPattern = relationshipBasicPattern + "optional=" +((ManyToOne) annotation).optional() + ", ";
}
if (!((ManyToOne) annotation).targetEntity().getSimpleName().equalsIgnoreCase("void")) {
relationshipBasicPattern = relationshipBasicPattern + "targetEntity=" + ((ManyToOne) annotation).targetEntity().getSimpleName() + ".class)";
}
if (relationshipBasicPattern.endsWith(", ")) {
String finalrelationshipBasicPattern = relationshipBasicPattern.substring(0, relationshipBasicPattern.length()-2) + ")";
return finalrelationshipBasicPattern;
} else {
return relationshipBasicPattern;
}
}
// Generate the @OneToMany Elements Annotation
// Generate @OneToMany Annotation
/**
* Generate '@OneToMany' Annotation
*/
public String generateOneToManyRelationshipElement(Annotation annotation) {
// Relationship Pattern
String relationshipBasicPattern = "@OneToMany(";
// Treat of empty annotation's parameters
if ((((OneToMany) annotation).fetch().toString().equalsIgnoreCase("EAGER"))
|| (((OneToMany) annotation).fetch().toString().equalsIgnoreCase("LAZY"))) {
relationshipBasicPattern = relationshipBasicPattern + "fetch=FetchType." + ((OneToMany) annotation).fetch() + ", ";
}
if ((((OneToMany) annotation).cascade().length != 0)) {
String cascade = "cascade= {";
for (CascadeType cascadeType : ((OneToMany) annotation).cascade()) {
cascade = cascade + "CascadeType." + cascadeType.toString() + ", ";
}
if (cascade.endsWith(", ")) {
String finalcascade = cascade.substring(0, cascade.length()-1) + "}";
relationshipBasicPattern = relationshipBasicPattern + finalcascade + ", ";
} else {
cascade = cascade + "}";
relationshipBasicPattern = relationshipBasicPattern + cascade + ", ";
}
}
if ((((OneToMany) annotation).mappedBy().length() != 0)) {
relationshipBasicPattern = relationshipBasicPattern + "mappedBy=" + ((OneToMany) annotation).mappedBy() + ", ";
}
if (!((OneToMany) annotation).targetEntity().getSimpleName().equalsIgnoreCase("void")) {
relationshipBasicPattern = relationshipBasicPattern + "targetEntity=" + ((OneToMany) annotation).targetEntity().getSimpleName() + ".class)";
}
if (relationshipBasicPattern.endsWith(", ")) {
String finalrelationshipBasicPattern = relationshipBasicPattern.substring(0, relationshipBasicPattern.length()-2) + ")";
return finalrelationshipBasicPattern;
} else {
return relationshipBasicPattern;
}
}
// Generate the @OneToOne Elements Annotation
// Generate @OneToOne Annotation
/**
* Generate '@OneToOne' Annotation
*/
public String generateOneToOneRelationshipElement(Annotation annotation) {
// Relationship Pattern
String relationshipBasicPattern = "@OneToOne(";
// Treat of empty annotation's parameters
if ((((OneToOne) annotation).fetch().toString().equalsIgnoreCase("EAGER"))
|| (((OneToOne) annotation).fetch().toString().equalsIgnoreCase("LAZY"))) {
relationshipBasicPattern = relationshipBasicPattern + "fetch=FetchType." + ((OneToOne) annotation).fetch() + ", ";
}
if ((((OneToOne) annotation).cascade().length != 0)) {
String cascade = "cascade= {";
for (CascadeType cascadeType : ((OneToOne) annotation).cascade()) {
cascade = cascade + "CascadeType." + cascadeType.toString() + ", ";
}
if (cascade.endsWith(", ")) {
String finalcascade = cascade.substring(0, cascade.length()-1) + "}";
relationshipBasicPattern = relationshipBasicPattern + finalcascade + ", ";
} else {
cascade = cascade + "}";
relationshipBasicPattern = relationshipBasicPattern + cascade + ", ";
}
}
if ((((OneToOne) annotation).mappedBy().length() != 0)) {
relationshipBasicPattern = relationshipBasicPattern + "mappedBy=" + ((OneToOne) annotation).mappedBy() + ", ";
}
if (!((OneToOne) annotation).targetEntity().getSimpleName().equalsIgnoreCase("void")) {
relationshipBasicPattern = relationshipBasicPattern + "targetEntity=" + ((OneToOne) annotation).targetEntity().getSimpleName() + ".class)";
}
if (relationshipBasicPattern.endsWith(", ")) {
String finalrelationshipBasicPattern = relationshipBasicPattern.substring(0, relationshipBasicPattern.length()-2) + ")";
return finalrelationshipBasicPattern;
} else {
return relationshipBasicPattern;
}
}
Eu queria que fosse algo como:
public String [b]generateRelationshipElement[/b](Annotation annotation, Class clazz) {
// Relationship Pattern
String relationshipBasicPattern = "@OneToOne(";
// Treat of empty annotation's parameters
if ((((clazz) annotation).fetch().toString().equalsIgnoreCase("EAGER"))
|| (((clazz) annotation).fetch().toString().equalsIgnoreCase("LAZY"))) {
relationshipBasicPattern = relationshipBasicPattern + "fetch=FetchType." + ((clazz) annotation).fetch() + ", ";
}
if ((((clazz) annotation).cascade().length != 0)) {
String cascade = "cascade= {";
for (CascadeType cascadeType : ((clazz) annotation).cascade()) {
cascade = cascade + "CascadeType." + cascadeType.toString() + ", ";
}
if (cascade.endsWith(", ")) {
String finalcascade = cascade.substring(0, cascade.length()-1) + "}";
relationshipBasicPattern = relationshipBasicPattern + finalcascade + ", ";
} else {
cascade = cascade + "}";
relationshipBasicPattern = relationshipBasicPattern + cascade + ", ";
}
}
if ((((clazz) annotation).mappedBy().length() != 0)) {
relationshipBasicPattern = relationshipBasicPattern + "mappedBy=" + ((clazz) annotation).mappedBy() + ", ";
}
if (!((clazz) annotation).targetEntity().getSimpleName().equalsIgnoreCase("void")) {
relationshipBasicPattern = relationshipBasicPattern + "targetEntity=" + ((clazz) annotation).targetEntity().getSimpleName() + ".class)";
}
if (relationshipBasicPattern.endsWith(", ")) {
String finalrelationshipBasicPattern = relationshipBasicPattern.substring(0, relationshipBasicPattern.length()-2) + ")";
return finalrelationshipBasicPattern;
} else {
return relationshipBasicPattern;
}
}
E chamar esse método com algo como:
public void createElementsAnnotations(Elemento elemento) {
// Iterate over Field Annotations
for (Annotation annotation : elemento.getAnnotations()) {
// Needed to Get the Class of the Annotation
Class clazz = annotation.annotationType();
// Analyze the Annotation
if (((clazz.getSimpleName().equalsIgnoreCase("ManyToMany")))) {
[b]generateRelationshipElement(annotation, clazz);[/b]
} else if (((clazz.getSimpleName().equalsIgnoreCase("ManyToOne")))) {
[b]generateRelationshipElement(annotation, clazz);[/b]
} else if (((clazz.getSimpleName().equalsIgnoreCase("OneToMany")))) {
[b]generateRelationshipElement(annotation, clazz);[/b]
} else if (((clazz.getSimpleName().equalsIgnoreCase("OneToOne")))) {
[b]generateRelationshipElement(annotation, clazz);[/b]
} elementAnnotationSet.add(annotation.toString());
}
}
Obrigado!