1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
| package utilitaire;
import generatetiers.Activator;
import generationclasses.preferences.PreferenceConstants;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.core.CompilationUnit;
import org.eclipse.jface.preference.IPreferenceStore;
@SuppressWarnings("restriction")
public final class Generateur {
private static String NOM_PAKAGE_COUCHE_PERSISTENCE = ".persistence";
private static String EXTENSION_JAVA = ".java";
private static String SUFFIXE_PERSISTENCE = "DAO";
private static String pakageParent;
private static String pakageParentToCreate;
private static String nomClasse;
private static IPackageFragment fragment;
private static IJavaProject currentJavaProject;
/**
* Méthode de génération de la couche Persistence du pojo passé en paramètre.
*
* @param sPojo
* @param sPackage
* @return
* @throws JavaModelException
*/
public static void genererCouchePersistence(final IPackageFragmentRoot srcFolder, final CompilationUnit sPojo,
final String sUnitPersis) {
((List<TypeDeclaration>) sPojo.types()).stream().filter(typeDec -> !typeDec.isInterface()).findFirst()
.ifPresent(typeDec -> {
Type type = typeDec.getSuperclassType();
List<TypeParameter> parameters = (List<TypeParameter>) typeDec.typeParameters();
});
try {
setPackageAndClasse(sPojo, NOM_PAKAGE_COUCHE_PERSISTENCE, srcFolder);
StringBuffer sContenu = new StringBuffer();
sContenu.append("package ");
sContenu.append(pakageParentToCreate).append(";\n\n");
sContenu.append("import javax.inject.Inject;\n");
sContenu.append("import javax.inject.Named;\n");
sContenu.append("import javax.persistence.EntityManager;\n");
sContenu.append("import fr.gfi.core.persistence.AbstractJPA;\n");
sContenu.append("import fr.gfi.rh.PuRh;\n");
sContenu.append("import ").append(pakageParent).append(".").append(nomClasse).append(";\n\n");
sContenu.append("/**\n");
sContenu.append("* Data access class for {@link ").append(nomClasse).append("} domain.\n");
sContenu.append("*\n");
sContenu.append("* @author ").append(getAutheurClasses()).append("\n");
sContenu.append("*/\n");
sContenu.append("@Named\n");
sContenu.append("public class ").append(nomClasse + SUFFIXE_PERSISTENCE).append(" extends AbstractJPA<")
.append(nomClasse).append(",").append("Long> {\n");
sContenu.append("// PuRh annotation is used to identify persistence unit for domain object.\n");
sContenu.append("@Inject\n");
sContenu.append("@" + sUnitPersis + "\n");
sContenu.append("private EntityManager entityManager;\n");
sContenu.append("@Override\n");
sContenu.append("public EntityManager getEntityManager() {\n");
sContenu.append("return this.entityManager;\n");
sContenu.append("}\n");
sContenu.append("}\n");
fragment.createCompilationUnit(nomClasse + SUFFIXE_PERSISTENCE + EXTENSION_JAVA, sContenu.toString(), false, null);
} catch (JavaModelException e) {
writeMarkers("La couche persistence non générée: " + nomClasse + SUFFIXE_PERSISTENCE + EXTENSION_JAVA
+ " existe déjà.");
}
}
/**
* Fonction de fénération de la couche controle du pojo passé en paramètre.
*
* @param srcFolder
* @param sPojo
* @throws JavaModelException
*/
public static void genererCoucheControle(final IPackageFragmentRoot srcFolder, final CompilationUnit sPojo) {}
/**
* Fonction setter de nom du package, dossier et classes.
*
* @param sPojo
* @param couche
* @param srcFolder
* @throws JavaModelException
*/
private static void setPackageAndClasse(final CompilationUnit sPojo, final String couche,
final IPackageFragmentRoot srcFolder) throws JavaModelException {
pakageParent = sPojo.getPackageDeclarations()[0].getElementName();
pakageParentToCreate = pakageParent.substring(0, pakageParent.lastIndexOf(".")) + couche;
nomClasse = sPojo.getElementName().substring(0, sPojo.getElementName().length() - 5);
fragment = srcFolder.createPackageFragment(pakageParentToCreate, true, null);
pakageDomaine = pakageParent.substring(0, pakageParent.lastIndexOf("."));
}
/**
* Setter de java project courant.
*
* @param current
*/
public static void setCurrentJavaProject(final IJavaProject current) {
currentJavaProject = current;
}
/**
* Fonction d'ajout des warnings
*
* @param type
* @param message
* @param numLigne
*/
private static void writeMarkers(final String message) {
try {
IResource resource = currentJavaProject.getUnderlyingResource();
IMarker marker = resource.createMarker(IMarker.PROBLEM);
marker.setAttribute(IMarker.MESSAGE, message);
marker.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH);
marker.setAttribute(IMarker.SEVERITY, 1);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Fonction de récupération de l'autheur
*
* @return
*/
private static String getAutheurClasses() {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
String autheur = store.getString(PreferenceConstants.AUTHEUR);
return autheur;
}
} |
Partager