Push old pc

This commit is contained in:
jeffcheasey88 2025-05-09 10:26:58 +02:00
parent 1e06faf0c4
commit ad2101d7e8
4 changed files with 92 additions and 56 deletions

Binary file not shown.

View file

@ -1,5 +1,8 @@
package dev.peerat.mapping;
import static dev.peerat.parser.visitor.Operator.*;
import static dev.peerat.parser.java.visitor.JavaVisitor.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
@ -24,7 +27,6 @@ import javax.tools.StandardLocation;
import dev.peerat.mapping.providers.Provider;
import dev.peerat.mapping.providers.ProviderManager;
import dev.peerat.parser.ElementBuilder.Builder;
import dev.peerat.parser.Parser;
import dev.peerat.parser.TokenValidator;
import dev.peerat.parser.java.Annotation;
@ -33,11 +35,10 @@ import dev.peerat.parser.java.Function;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.JavaFile;
import dev.peerat.parser.java.JavaParser;
import dev.peerat.parser.java.JavaProject;
import dev.peerat.parser.java.operation.ReturnOperation;
import dev.peerat.parser.java.value.InstanceValue;
import dev.peerat.parser.java.value.StaticValue;
import dev.peerat.parser.java.visitor.JavaVisitor;
import dev.peerat.parser.visitor.Operator;
public class TreasureProcessor extends AbstractProcessor{
@ -69,64 +70,72 @@ public class TreasureProcessor extends AbstractProcessor{
return false;
}
Map<File, JavaFile> map = new HashMap<>();
JavaProject project = new JavaProject();
for(File workingDirectory : workingDir){
try {
parseClazz(workingDirectory, output, workingDirectory, map);
parseProject(workingDirectory, project);
}catch(Exception ex){
annotations.forEach((a) -> roundEnv.getElementsAnnotatedWith(a).forEach((e) -> processingEnv.getMessager().printMessage(Kind.ERROR, ex.getMessage(), e)));
}
}
Provider provider = null;
for(Entry<File, JavaFile> classes : map.entrySet()){
List<InstanceValue> ships = Operator.or(
JavaVisitor.allValue() //check if value is instance value for dev.peerat.mapping.Ship
List<InstanceValue> ships = or(
collect(allInstanceValue().named((name) -> name.equals("dev.peerat.mapping.Ship")))
,
and(
allImport().named((name) -> name.equals("dev.peerat.mapping.Ship"))
,
JavaVisitor.allImport() //check if import for dev.peerat.mapping.Ship AND THEN instance value for dev.peerat.mapping.Ship OR Ship.
).visit(classes.getValue()).toList();
if(ships.isEmpty()) continue;
collect(allInstanceValue().named((name) -> name.equals("Ship")))
)
).visit(project).toList();
if(ships.isEmpty()) return false;
//TODO accept multiple instance of Ship
InstanceValue ship = (InstanceValue)ships.get(0);
String providerType = ((StaticValue)ship.getParameters().get(0)).getToken().getValue().replace("\"", "");
provider = ProviderManager.getInstance().getProvider(providerType);
}
//TODO accept multiple instance of Ship
InstanceValue ship = (InstanceValue)ships.get(0);
String providerType = ((StaticValue)ship.getParameters().get(0)).getToken().getValue().replace("\"", "");
Provider provider = ProviderManager.getInstance().getProvider(providerType);
if(provider == null) return false;
try {
provider.init(output);
throw new Exception(output.getAbsolutePath());
} catch (Exception e) {
throw new RuntimeException(e);
}
// for(Entry<File, JavaFile> classes : map.entrySet()){
// Class treasure = classes.getValue().find((element) -> {
// if(element instanceof Class){
// Class c = (Class)element;
// return c.hasAnnotation((annotation) -> annotation.getName().getValue().equals("Treasure")); //can also be dev.peerat.mapping.Treasure
// }
// return false;
// });
// if(treasure != null){
// provider.mapTreasure(treasure);
//// annotations.forEach((a) -> roundEnv.getElementsAnnotatedWith(a).forEach((e) -> processingEnv.getMessager().printMessage(Kind.ERROR, classes.getKey().getName(), e)));
// List<Function> seaBottles = new ArrayList<>();
// treasure.findAll((element) -> {
// if(element instanceof Function){
// Function function = (Function)element;
// return function.hasAnnotation((annotation) -> annotation.getName().getValue().equals("SeaBottle")); //can also be dev.peerat.mapping.SeaBottle
// }
// return false;
// }, seaBottles);
// for(Function function : seaBottles){
// provider.mapBottle(treasure, function);
// }
// }
// }
//
List<Class> treasures = or(
and(
allImport().named((name) -> name.equals("dev.peerat.mapping.Treasure"))
,
allClass().
annotation(
annotation().nameFilter((name) -> name.equals("Treasure") || name.equals("dev.peerat.mapping.Treasure"))
)
)
,
allClass().
annotation(
annotation().nameFilter((name) -> name.equals("dev.peerat.mapping.Treasure"))
)
).visit(project).toList();
for(Class treasure : treasures){
provider.mapTreasure(treasure);
// annotations.forEach((a) -> roundEnv.getElementsAnnotatedWith(a).forEach((e) -> processingEnv.getMessager().printMessage(Kind.ERROR, classes.getKey().getName(), e)));
List<Function> seaBottles = new ArrayList<>();
treasure.findAll((element) -> {
if(element instanceof Function){
Function function = (Function)element;
return function.hasAnnotation((annotation) -> annotation.getName().getValue().equals("SeaBottle")); //can also be dev.peerat.mapping.SeaBottle
}
return false;
}, seaBottles);
for(Function function : seaBottles){
provider.mapBottle(treasure, function);
}
}
// for(Entry<File, JavaFile> classes : map.entrySet()){
// List<Class> noTreasures = new ArrayList<>();
// classes.getValue().findAll((element) -> {
@ -150,12 +159,30 @@ public class TreasureProcessor extends AbstractProcessor{
// }
// }
// }
// provider.complete();
// return true;
provider.complete();
return true;
}
private static final Parser<JavaElement> PARSER = new JavaParser();
private void parseProject(File file, JavaProject project) throws Exception{
if(file.isDirectory()){
for(File child : file.listFiles()) parseProject(child, project);
return;
}
if(!file.getName().endsWith(".java")) return;
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
JavaFile javaFile = new JavaFile();
TokenValidator.TOKENS = 0;
TokenValidator.MAX_VALIDATE = 0;
PARSER.parse(reader, javaFile);
project.addFile(javaFile);
}catch(Exception ex){
error(null, null, file, new Exception(file.getName()+" | "+ex.getMessage()));
}
}
private void parseClazz(File source, File output, File file, Map<File, JavaFile> map) throws Exception{
if(file.isDirectory()){
for(File child : file.listFiles()) parseClazz(source, output, child, map);
@ -203,9 +230,9 @@ public class TreasureProcessor extends AbstractProcessor{
}else{
processOthers(file);
}
Builder builder = new Builder();
file.build(builder);
builder.build(writer);
// Builder builder = new Builder();
// file.build(builder);
// builder.build(writer);
}

View file

@ -5,6 +5,9 @@ import java.io.File;
import dev.peerat.mapping.Ship;
import dev.peerat.parser.java.Class;
import dev.peerat.parser.java.Function;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.value.InstanceValue;
import dev.peerat.parser.java.value.MethodCallValue;
public interface Provider{
@ -14,7 +17,8 @@ public interface Provider{
void mapBottle(Class clazz, Function function);
void mapUses(Class clazz, Function function);
void mapCreation(Class clazz, JavaElement container, InstanceValue value);
void mapEdit(Class clazz, JavaElement container, MethodCallValue value);
void complete();

View file

@ -19,10 +19,10 @@ import java.util.List;
import dev.peerat.mapping.Ship;
import dev.peerat.mapping.providers.Provider;
import dev.peerat.mapping.providers.ProviderManager;
import dev.peerat.parser.ElementBuilder.Builder;
import dev.peerat.parser.Token;
import dev.peerat.parser.java.Class;
import dev.peerat.parser.java.Function;
import dev.peerat.parser.java.JavaElement;
import dev.peerat.parser.java.JavaFile;
import dev.peerat.parser.java.Variable;
import dev.peerat.parser.java.builder.JavaBuilder;
@ -31,6 +31,7 @@ import dev.peerat.parser.java.builder.JavaFunctionBuilder;
import dev.peerat.parser.java.operation.CatchOperation;
import dev.peerat.parser.java.operation.ReturnOperation;
import dev.peerat.parser.java.operation.TryOperation;
import dev.peerat.parser.java.value.InstanceValue;
import dev.peerat.parser.java.value.MethodCallValue;
import dev.peerat.parser.java.value.Value;
@ -80,10 +81,14 @@ public class MySQLProvider implements Provider{
}
@Override
public void mapUses(Class clazz, Function function){
public void mapCreation(Class clazz, JavaElement container, InstanceValue value){
}
@Override
public void mapEdit(Class clazz, JavaElement container, MethodCallValue value){
}
@Override
public void complete(){
@ -108,10 +113,10 @@ public class MySQLProvider implements Provider{
.clazz(clazz)
.build();
try{
Builder builder = new Builder();
file.build(builder);
// Builder builder = new Builder();
// file.build(builder);
BufferedWriter writer = new BufferedWriter(new FileWriter(this.repo));
builder.build(writer);
// builder.build(writer);
writer.flush();
writer.close();
}catch(Exception ex){