commit 3f80808e9c36dbe847110fb1282a3ad9636b31eb
Author: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com>
Date: Wed Jul 5 10:38:16 2023 +0200
First Commit, ORM V1
diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..c280ec5
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..54ac269
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+.settings/
+bin/
+.project
diff --git a/PeerAtCodeParser.jar b/PeerAtCodeParser.jar
new file mode 100644
index 0000000..690d957
Binary files /dev/null and b/PeerAtCodeParser.jar differ
diff --git a/src/META-INF/services/javax.annotation.processing.Processor b/src/META-INF/services/javax.annotation.processing.Processor
new file mode 100644
index 0000000..847cf76
--- /dev/null
+++ b/src/META-INF/services/javax.annotation.processing.Processor
@@ -0,0 +1 @@
+be.jeffcheasey88.peeratcode.mapping.TreasureProcessor
\ No newline at end of file
diff --git a/src/be/jeffcheasey88/peeratcode/mapping/Treasure.java b/src/be/jeffcheasey88/peeratcode/mapping/Treasure.java
new file mode 100644
index 0000000..107d4e3
--- /dev/null
+++ b/src/be/jeffcheasey88/peeratcode/mapping/Treasure.java
@@ -0,0 +1,12 @@
+package be.jeffcheasey88.peeratcode.mapping;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.SOURCE)
+@Target(ElementType.TYPE)
+public @interface Treasure {
+
+}
diff --git a/src/be/jeffcheasey88/peeratcode/mapping/TreasureProcessor.java b/src/be/jeffcheasey88/peeratcode/mapping/TreasureProcessor.java
new file mode 100644
index 0000000..7594e11
--- /dev/null
+++ b/src/be/jeffcheasey88/peeratcode/mapping/TreasureProcessor.java
@@ -0,0 +1,92 @@
+package be.jeffcheasey88.peeratcode.mapping;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.Writer;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import javax.annotation.processing.AbstractProcessor;
+import javax.annotation.processing.Messager;
+import javax.annotation.processing.RoundEnvironment;
+import javax.lang.model.SourceVersion;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.TypeElement;
+import javax.tools.Diagnostic.Kind;
+import javax.tools.FileObject;
+import javax.tools.StandardLocation;
+
+public class TreasureProcessor extends AbstractProcessor {
+
+ @Override
+ public boolean process(Set extends TypeElement> annotations, RoundEnvironment roundEnv){
+
+ Messager messager = processingEnv.getMessager();
+
+
+ for(TypeElement annotation : annotations){
+ for(Element element : roundEnv.getElementsAnnotatedWith(annotation)){
+ messager.printMessage(Kind.WARNING, "["+roundEnv.processingOver()+"] I tried", element);
+ for(Entry opt : processingEnv.getOptions().entrySet()){
+ messager.printMessage(Kind.WARNING, opt.getKey()+" -> "+opt.getValue(), element);
+ }
+
+ File file = null;
+ try {
+// FileObject resource = processingEnv.getFiler().getResource(StandardLocation.CLASS_OUTPUT, "", "");
+// messager.printMessage(Kind.WARNING, resource.toUri().toString(), element);
+// resource.delete();
+
+ FileObject resource = processingEnv.getFiler().getResource(StandardLocation.SOURCE_OUTPUT, "", "");
+ File clazz = new File(resource.toUri().toString().substring(6)+"/be/jeffcheasey88/peeratcode/model/Badge.class");
+ if(clazz.exists()){
+ messager.printMessage(Kind.WARNING, "["+roundEnv.processingOver()+"] I was created it", element);
+ return true;
+ }
+
+ file = new File(resource.toUri().toString().substring(6)+"/be/jeffcheasey88/peeratcode/model/Badge.java");
+ if(!file.exists()){
+ File parent = file.getParentFile();
+ if(!parent.exists()) parent.mkdirs();
+ file.createNewFile();
+ }
+
+// JavaFileObject resource = processingEnv.getFiler().createSourceFile("be/jeffcheasey88/peeratcode/model/"+element.getSimpleName());
+ Writer writer = new FileWriter(file);
+ writer.append("package be.jeffcheasey88.peeratcode.model;\n\n");
+ writer.append("public class Badge{\n");
+ writer.append("public Badge(){ }\n");
+ writer.append("}\n");
+ writer.flush();
+ writer.close();
+
+ Process p = Runtime.getRuntime().exec("javac be/jeffcheasey88/peeratcode/model/Badge.java", new String[0], new File("C:\\Users\\jeffc\\eclipse-workspace\\peer-at-code-backend\\.generated"));
+ p.waitFor();
+
+ file.delete();
+
+// Runtime.getRuntime().exec("copy /Y \"C:\\Users\\jeffc\\eclipse-workspace\\peer-at-code-backend\\.generated\\be\\jeffcheasey88\\peeratcode\\model\\Badge.class\" \"./../bin/be/jeffcheasey88/peeratcode/model/Badge.class\"").waitFor();
+
+ messager.printMessage(Kind.WARNING, "["+roundEnv.processingOver()+"] We created it !", element);
+ } catch (Exception e) {
+ e.printStackTrace();
+ messager.printMessage(Kind.WARNING, "["+roundEnv.processingOver()+"] We not created it ! ("+file+") "+e.getMessage(), element);
+ }
+ }
+ }
+
+ return true;
+ }
+
+ @Override
+ public Set getSupportedAnnotationTypes(){
+ return new HashSet<>(Arrays.asList(Treasure.class.getCanonicalName()));
+ }
+
+ @Override
+ public SourceVersion getSupportedSourceVersion(){
+ return SourceVersion.RELEASE_8;
+ }
+}
\ No newline at end of file