From 53f8c3d2eb45701bdf180ef41233c5cdd761483b Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Wed, 28 Feb 2024 22:38:10 +0100 Subject: [PATCH] Include Ship in running programs (before was only for compilation) --- PeerAtCodeParser.jar | Bin 127098 -> 127098 bytes src/dev/peerat/mapping/Ship.java | 19 +++- src/dev/peerat/mapping/TreasureProcessor.java | 101 +++++++++--------- .../peerat/mapping/providers/Provider.java | 3 + .../mapping/providers/ProviderManager.java | 6 ++ .../providers/mysql/MySQlProvider.java | 47 +++++++- 6 files changed, 123 insertions(+), 53 deletions(-) diff --git a/PeerAtCodeParser.jar b/PeerAtCodeParser.jar index c01b4b868423fe588d3f08d260ef08dadb681b90..f1afb10f994cb9e4958e19b1c1338a185ed961a4 100644 GIT binary patch delta 1559 zcmYk5e@xV69LITk2X~NIG)QymYFIlzdJ zE`4g;$~D)hFsyIwo37#7YT2ZXKfL3|-2umO2qa=#3q@8v-}m#-y1!n}=XrnLpC8Zn z=0_d#qmI;)Vw*iZ!Rd4+ymQpoo?2ydet+C|q##qA4&aV<|4r*`2;?sz^xJMGQqi2| zGUk(89E>)nP4HTDy^KuX_IsC!*&vn~BE8*CagW!E&Qa@LxhjcJe_xJm@z&_c4A^bS zvT}C5%h%(YCKnc2>=f4rkYq&Hz0YDkflRT%jYQ+)oNDESO%JmvBRk&%dLJp+;;<}? zAGc+IUOiry=o&(@k@ECvYOG44Hw33>4q=6_#eJEXg+=u#%=}`PpB))R6@MjK5e_H% z!dPXzSv9Wi8frHrQQgtFNkxK9OI0uNmTpz&Mw`pH_>x~8l_qNolglJqiE& zZ5D^?u-1Gs3ty=TCQFbjZbgw{=50jz63f{<`6xU#&bQ+ra?RzB<1Tefb<5-aJY3>n zg1O$9%zb_C1(1|*qT5Na0TToBJPva}zigzA125xV-}Cd^q^*5_P2fP;i{11RB@ zZBUn}9K?P`ei)P*tBw1IWE)mi>k#S)ks)0oC!{r}Lej_5OodQJ*c!$@!Y5(bn00kK zj7q}32+9fHM&$Qrm9P(EJE3eCy9i$n>&E^b*0pwy=&Q~V9a$LBK4qiWO~bBHy)i_k zvsJV-isuODqo^UQ9z#9h*chq_(_^S26vwotJBC_DGRE~)>$q+{IIcCD<2XQ#KdycL ziR-P_P3WwjCv@bYt2+JoRV|)bgpx_@rO(+(y{P0Vz3{3j9l0=t3f0dvnh0-A<3+;l sX`CeZeup4rU4x&{dkr5DYG>dh+?qi<;oa-(a25b^Z9c!(!8s!!% zM&I{T0Zp(lGZo$cVN0Dr#Jhui~r<}wF0k{e8yB8T0LAj8bvgo;F=Y#x6SZjJWac?db?il=eE zJf^z%@jx!F&|-{wJEFYz#X?-85;K1r2BZov{)A?jJ#OU5EbsVPQr{jtMSlYmGgvT& zbTg|0?@+J!%h{kCDQxQ$mb1l5%#$6O@7#xc()h2+?5@IVQg&r6o*-G1%chZ-9FRGU zbe2_yWb>PP9FxVljj+f~_(!_lJbV~Ebfj!xaLapo{SwZ~X^zY2lQG`_ z7Ht}ThwS=wJR`njw#tWH1T8-7CHU2c?F0|_v4fyifOvlA{dk^W$q>pYRWpPlg5Dvx z2dId_Tf#gpG$sxef6M+D1`N5E|t={Kc^B0Iv~n zBEWS-%}fC01cgEDCpaDC#zg8~5LE>GL#QD5HpIU_F~Ty25`ywE>?ZhfOd0!YOs%tP zT%~%(Rb+8o>6C}DhXi}W+$w(<3=ys@hL%O}0>Om{Y6;d%pn>4n1ZoK46R0LAj;flz zDC#JZF{x5*lghk*Qq^pU;ULv`V@l`m7{3iMw0=r;{W7H@kKIu1@83|xv;RWrH1<)~ zxoLG#$usK0t7lZ?;tVRKpE#Nc-i_mBf_rfsC(wTbBgni7FTub~d`wU`3!UKZEV>9j SxW(Uwu)1OnZxFCKME?Pr<0d-* diff --git a/src/dev/peerat/mapping/Ship.java b/src/dev/peerat/mapping/Ship.java index 60eb6cb..4dd4d35 100644 --- a/src/dev/peerat/mapping/Ship.java +++ b/src/dev/peerat/mapping/Ship.java @@ -2,6 +2,7 @@ package dev.peerat.mapping; import dev.peerat.mapping.providers.Compass; import dev.peerat.mapping.providers.Map; +import dev.peerat.mapping.providers.ProviderManager; public class Ship{ @@ -14,6 +15,20 @@ public class Ship{ this.compass = compass; this.map = map; } - - public void setSails() throws Exception{} + + public String getType(){ + return this.type; + } + + public Compass getCompass(){ + return this.compass; + } + + public Map getMap(){ + return this.map; + } + + public void setSails() throws Exception{ + ProviderManager.getInstance().register(this); + } } diff --git a/src/dev/peerat/mapping/TreasureProcessor.java b/src/dev/peerat/mapping/TreasureProcessor.java index cb133f8..f63153b 100644 --- a/src/dev/peerat/mapping/TreasureProcessor.java +++ b/src/dev/peerat/mapping/TreasureProcessor.java @@ -94,60 +94,61 @@ public class TreasureProcessor extends AbstractProcessor{ try { provider.init(output); + throw new Exception(output.getAbsolutePath()); } catch (Exception e) { throw new RuntimeException(e); } - for(Entry 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 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 classes : map.entrySet()){ - List noTreasures = new ArrayList<>(); - classes.getValue().findAll((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; - }, noTreasures); - for(Class clazz : noTreasures){ - List functions = new ArrayList<>(); - clazz.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; - }, functions); - for(Function function : functions){ - provider.mapUses(clazz, function); - } - } - } - provider.complete(); - return true; +// for(Entry 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 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 classes : map.entrySet()){ +// List noTreasures = new ArrayList<>(); +// classes.getValue().findAll((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; +// }, noTreasures); +// for(Class clazz : noTreasures){ +// List functions = new ArrayList<>(); +// clazz.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; +// }, functions); +// for(Function function : functions){ +// provider.mapUses(clazz, function); +// } +// } +// } +// provider.complete(); +// return true; } private static final Parser PARSER = new JavaParser(); diff --git a/src/dev/peerat/mapping/providers/Provider.java b/src/dev/peerat/mapping/providers/Provider.java index bf5d4ca..51b36da 100644 --- a/src/dev/peerat/mapping/providers/Provider.java +++ b/src/dev/peerat/mapping/providers/Provider.java @@ -2,6 +2,7 @@ package dev.peerat.mapping.providers; import java.io.File; +import dev.peerat.mapping.Ship; import dev.peerat.parser.java.Class; import dev.peerat.parser.java.Function; @@ -16,4 +17,6 @@ public interface Provider{ void mapUses(Class clazz, Function function); void complete(); + + void register(Ship ship) throws Exception; } diff --git a/src/dev/peerat/mapping/providers/ProviderManager.java b/src/dev/peerat/mapping/providers/ProviderManager.java index 59888f6..75e8c4b 100644 --- a/src/dev/peerat/mapping/providers/ProviderManager.java +++ b/src/dev/peerat/mapping/providers/ProviderManager.java @@ -3,6 +3,8 @@ package dev.peerat.mapping.providers; import java.util.HashMap; import java.util.Map; +import dev.peerat.mapping.Ship; + public class ProviderManager{ private static final ProviderManager SINGLETON = new ProviderManager(); @@ -21,6 +23,10 @@ public class ProviderManager{ this.providers.put(name, provider); } + public void register(Ship ship) throws Exception{ + this.providers.get(ship.getType()).register(ship); + } + public Provider getProvider(String name){ return this.providers.get(name); } diff --git a/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java b/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java index f68a7da..c6ade2c 100644 --- a/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java +++ b/src/dev/peerat/mapping/providers/mysql/MySQlProvider.java @@ -5,9 +5,11 @@ import java.io.File; import java.io.FileWriter; import java.lang.reflect.Modifier; import java.util.ArrayList; +import java.util.Arrays; import java.util.LinkedList; 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; @@ -17,7 +19,11 @@ import dev.peerat.parser.java.Class; import dev.peerat.parser.java.Function; import dev.peerat.parser.java.Value; import dev.peerat.parser.java.Value.MethodCallValue; +import dev.peerat.parser.java.Variable; +import dev.peerat.parser.java.operation.CatchOperation; +import dev.peerat.parser.java.operation.MethodCallOperation; import dev.peerat.parser.java.operation.ReturnOperation; +import dev.peerat.parser.java.operation.TryOperation; public class MySQLProvider implements Provider{ @@ -87,8 +93,30 @@ public class MySQLProvider implements Provider{ Modifier.PUBLIC, null, new Token(0,0,base.getReturnType().getValue(), null), - new Token(0,0,base.getName().getValue(),null), + new Token(0,0,"getter_"+base.getName().getValue(),null), base.getParameters()); + + TryOperation tryOp = new TryOperation(); + tryOp.addOperation(new MethodCallOperation((Value)null, new Token(0,0,"ensureConnection()",null), null)); + tryOp.addVariable( + new Variable( + null, + 0, + new Token(0,0,"PreparedStatement",null), + new Token(0,0,"stmt",null), + false, + new MethodCallValue( + new Value(new Token(0,0,"con",null)), + null, + new Token(0,0,"prepareStatement",null), + Arrays.asList(new Value(new Token(0,0,request.build(),null)))))); + + CatchOperation catchOp = new CatchOperation(Arrays.asList(new Token(0,0,"Exception",null)), new Token(0,0,"e", null)); + catchOp.addOperation(new MethodCallOperation(new Value(new Token(0,0,"e",null)), new Token(0,0,"printStackTrace()", null), null)); + + func.addOperation(tryOp); + func.addOperation(catchOp); + clazz.addFunction(func); } @@ -104,4 +132,21 @@ public class MySQLProvider implements Provider{ throw new RuntimeException(ex); } } + + @Override + public void register(Ship ship) throws Exception { + + } + + /* + * try{ + * ensureConnection(); + * PreparedStatement stmt = con.prepareStatement(REQUEST); + * //bind + * //execute + * //build object + * }catch(Exception ex){ + * ex.printStackTrace(); + * } + */ }