From def7a46189aabe251a4d46ad1b3dba3ae040a7b2 Mon Sep 17 00:00:00 2001 From: CJ Miller Date: Mon, 4 Jan 2016 22:29:44 -0500 Subject: [PATCH] testing added pair programming --- .classpath | 2 + docs/ASM_UML.png | Bin 0 -> 79260 bytes docs/ASM_UML.uxf | 227 +++++++++++++++ docs/ASM_UML_Generated.png | Bin 0 -> 28567 bytes docs/UML.uxf | 287 ------------------- docs/UML_1_3_Generated.png | Bin 0 -> 20812 bytes docs/UML_1__3.png | Bin 0 -> 33644 bytes docs/UML_1__3.uxf | 157 ++++++++++ src/edu/rosehulman/cjjb/Main.java | 59 +--- src/edu/rosehulman/cjjb/UMLClassVisitor.java | 71 +++++ test/SyntaxTest.java | 36 +++ test/sampleClasses/Class1.java | 17 ++ test/sampleClasses/Class2.java | 12 + test/sampleClasses/Inter1.java | 5 + 14 files changed, 535 insertions(+), 338 deletions(-) create mode 100644 docs/ASM_UML.png create mode 100644 docs/ASM_UML.uxf create mode 100644 docs/ASM_UML_Generated.png delete mode 100644 docs/UML.uxf create mode 100644 docs/UML_1_3_Generated.png create mode 100644 docs/UML_1__3.png create mode 100644 docs/UML_1__3.uxf create mode 100644 src/edu/rosehulman/cjjb/UMLClassVisitor.java create mode 100644 test/SyntaxTest.java create mode 100644 test/sampleClasses/Class1.java create mode 100644 test/sampleClasses/Class2.java create mode 100644 test/sampleClasses/Inter1.java diff --git a/.classpath b/.classpath index 2bda701..c36a269 100644 --- a/.classpath +++ b/.classpath @@ -1,8 +1,10 @@ + + diff --git a/docs/ASM_UML.png b/docs/ASM_UML.png new file mode 100644 index 0000000000000000000000000000000000000000..e142d10175f0370813c010428c2b5be9fb29b695 GIT binary patch literal 79260 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 + + 10 + + UMLClass + + 900 + 280 + 650 + 140 + + ClassMethodVisitor +-- +-out: OutputStream +-firstMethod: boolean +-- ++visitMethod(int access, String name, String desc, String signature, String[] exceptions): MethodVisitor +~addAccessLevel(int access): void +~addReturnType(String desc): void +~addArguments(String desc): void +-- + + + + + UMLClass + + 600 + 80 + 440 + 190 + + Relations +-- +~includedELements = new ArrayList<String>(): List<String> +~childParrent = new HashMap<String, String>(): Map<String, String> +~interfaces = new ArrayList<String[]>(): List<String[]> +-- ++addElement(String element): void ++addChildParrentRelation(String child, String parrent): void ++addInterfaceRelation(String clazz, String interfase): void ++getChildParentIncludedRelations(): Map<String, String> ++getIncludedInterfaceRelations(): List<String[]> +-- + + + + + UMLClass + + 900 + 430 + 650 + 150 + + ClassDeclarationVisitor +-- +-out: OutputStream +-relations: Relations +-- ++visit(int version, int access, String name, String signature, String superName, String[] interfaces): void +-addInterfaceName(String thisName, String[] interfaces): void +-addSuperName(String thisName, String superName): void ++getCleanName(String s): String +-- + + + + + UMLClass + + 900 + 590 + 580 + 90 + + ClassFieldVisitor +-- +-out: OutputStream +-- ++visitField(int access, String name, String desc, String signature, Object value): FieldVisitor ++getAccessLevel(int access): String +-- + + + + + UMLClass + + 0 + 410 + 630 + 110 + + Main +-- ++ CLASSES : String[] +-- ++main(String[] args) : void +-writeChildParrentRelations(Map<String, String> childParrentRelations, OutputStream out) : void +-writeInterfaceRelations(List<String[]> interfaces, OutputStream out) : void +-- + + + + + Relation + + 620 + 320 + 300 + 150 + + lt=<- + 280.0;10.0;200.0;10.0;200.0;130.0;10.0;130.0 + + + Relation + + 620 + 470 + 300 + 30 + + lt=<- + 280.0;10.0;10.0;10.0 + + + Relation + + 620 + 490 + 300 + 160 + + lt=<- + 280.0;140.0;200.0;140.0;200.0;10.0;10.0;10.0 + + + Relation + + 450 + 190 + 170 + 240 + + lt=<- + 150.0;10.0;10.0;10.0;10.0;220.0 + + + Relation + + 690 + 260 + 230 + 140 + + lt=<- + 10.0;10.0;10.0;120.0;210.0;120.0 + + + Relation + + 690 + 370 + 230 + 200 + + lt=- + 10.0;10.0;10.0;180.0;210.0;180.0 + + + Relation + + 690 + 540 + 230 + 130 + + lt=- + 10.0;10.0;10.0;110.0;210.0;110.0 + + + UMLClass + + 1770 + 450 + 100 + 40 + + ClassVisitor + + + + Relation + + 1540 + 330 + 250 + 140 + + lt=<<- + 230.0;120.0;140.0;120.0;140.0;10.0;10.0;10.0 + + + Relation + + 1540 + 460 + 250 + 30 + + lt=<<- + 230.0;10.0;10.0;10.0 + + + Relation + + 1470 + 480 + 320 + 160 + + lt=<<- + 300.0;10.0;210.0;10.0;210.0;140.0;10.0;140.0 + + diff --git a/docs/ASM_UML_Generated.png b/docs/ASM_UML_Generated.png new file mode 100644 index 0000000000000000000000000000000000000000..8a71402014352eddf8eddea6f2ef5f4e859a7502 GIT binary patch literal 28567 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%0Dn5B5gREa)U&_=SPP z>QZ%SU;`Kddkt&wmv;EYOAyrFZVa$BB@q4>LKeBhcYQ)E9Kp&xC=oKz$2QuxyJDxq zz9K|DaN;1=ok|ISyYG-+DjWb-QgMTRxl*ehx|4#JEB+uXm8LaB0Xtp+F~`45+T@sA zR@LL2;UY4pd*w@$YqzR8sxcgeM+rQQ^zF}TUN`(L&X`A(^cf^8)Ex=6G%9mr8l)n8 z{ySKXrM2TkCyYZY#xsTY<2w&9xb;V;D>ayWH#`#l;y$vGu5jr|Q7<5R_|yd#$5}i$ zQy11&1LpQk**D_e+;vOoW2Y!qOYs2(r`2Y%k(h-lod^A3}j@fj%N9#<*I^h&W_-1TddhE;i%a^iyOm z6n}(XgAjkAk~vcQ6HP{F&ke%7aF5D!8;4|Y&U`Icr+)I=#mUOxd{Td1@Nco?;C$>4 z0eGtiHT~+}D>d}(TR?#wS_6L7h7~nF=AKZgZOE*-aBomgx#~SS82?~!N)dl;D`Au; zvcyI=+NK*LSO=A6TronmobrMonshVF3m$N6Ng=llgL4gFj(IE}2M+zl$D^+ImtH+J zDQ1r-d)ePvI!Vjrs+hUSD=mZzBK27{uR$u@M!iw>oD?RUAk-*Q0FwmvLtYC(Eb^a5 z76-e*AJCQq>YZDHhaO#a56L<+g;j4YL;9*>7h{__M~)PJkrlX~bq7o0Bo~sQ^if4o zPa4~v`Z5VOKJ((+#zyrSV&she1Z5hNmr&4UbGLkAD_6r7M9i!f%JhI1S;sW!9S^PMg>cOSHwt*y3^vBv}MM}Bro7?vIG!zjXY=iNhWlKHmmun!BiYAHtzM4^Fh-aMU8 z%|Y88BT|8$zi^x{){4Yy`R(Ph;L=Twi456?CD&Tj*84|#LVMsIu= zOB2_wz?S(dZPo=gKq7!{_N~rK_B_Sf)|8KRY&km| z`y$q!uo_Bb+-EJfic7x#*)up`vZgov_HL4%EG@+-J2$Fx&XUR9ZjFQZddRp#Qa3Pr z^tPlKcTK}=o-_!k5mp5@?(Li1sJihktI14}x{#0cje3ap70DUW7U2#;!sh}0U8U8x z#$WeFV(K1HQ|JeNFdCMCu(p=t^ zQxBOw({!Z%#c=MS^s1oCA5A)J_p231g!DRHgf&+Y0vL-S2U+aIJJgZk;YpES>hSgm zDQP~(Q|O2Xycy4|#8en;!(Q-z1c2C}z}s59suDb~%?u$M!sTs;!ESdqWwdvudF`DP zk3Kc;fKcE}+33~WvKS^h#UMs9{{)C=Dzr0yl^5iSkB2sw#U~u_k|(zC5;K*-8UE8} zRdMDat(;ksD#@z@+U67%+G$EN-VW{-ZDoj8`(>W=?ZSYX@heyOjGfk?{6}*BD<$qS zqANN9`e&FsprmNL!#P7&NrdsG7bO*L?jCA79zz&ihMe>}&PRlb!)u-M;O5m22g^B+Y(&ubA{WS}*5-~};8gDcx6t)es!3^9G=9{H3F)JxKX?*lm{^=%GXBqS~+nWHhS1Tk_6tT2ZJ>reP|%TZTyTQkw`X<5Kb!uzoa+6%-?A4~Y?>tHT(L zs_M3Z3YM-+iG_$FMW5l7mDD1lh><^5UUr0WA5q<(yp=UOhd+b8KVjO2t|?+A=+v|kQE4}6!5_c`laeN42)t!RtpjFK;^_hKuQbTz^jA4pTe(+*^&kFxw zzsfCW=)JkAZ-1e+N~5AXybTBFi37lfN|57In}wKowkDT%UT-%I?YaI32`ZPrN{=4b z6+z??ub58QG1-u^v@=HPpOz7;sY=&0nUp>>N)S2Eg&jrF23gEb<3%(syFI`9bX(LT6b^{-_7v9)JdN%|AzNFMQ)pu~DINOTT{Va|JHZ!f zYKOSaM10KeA!k%~d$=jTw{1h6p*VF7409y+HTx}hf!xbc+IVt*9oV3eeUOH`qvN%; zwG+68y8)AE#&sKxAyAbXUxhx|U2+#4$vWhV7gHQq(iSf7(E$I5?vkVg0N+>gG~?=H zjr=r{fG!kVqN<}a*!On?VQ!W=gNAEjEA0y^if_d?4pQ&=Idgm zM@m(2QxB?&<7*7$_ZVL*FKI^Y7AJ84&m&^q6$Dd7g2I4x33S1;ZFnemg?dIDQJZQL zk{3{qwD-koyQgXfyeC5w;s^%jWcW3Q&$1=2{ZxLQ&fRwkBpigNJHXk%<#;tFh}KA% zBOs;F`$R!Cy{(4w=u;Oid-4yrn(}BMEs_;<3{EXV9d^M~t~(Y!4dy86A=3@6lG~;% zr66x|Y7vZcVNq-8n;>M!;t+z5aceghJIw@{SjGOu`-qkPIqX>{evmBpdWJWsmF_0M z+Yn^5Summ*ckGviQ#4zON|!@t^GMQR%2UBz4v}0SpBckHb)Q*?$1<708!ym9t2vEug>*+q z7v*)V%SjnFzkkj!>}}sgk=m39!13Ou{U!k4yBw8@E4wpb&6NuEo2l9t?7L_p%Tn8g z8CcS9K7apnkh!d$xhvS%RVO^mbeWo1LN%ZFHZtSBlx4moOFumR9he zN(*J-!>iK(e>S}^>vDCeXzu6uJw{|^?J?}FpSgFqQ)kZ@;%X^HK2n}cfApsso3wo_ zu>V6J6oIyeM1QkhDCXX;Z7Us!oJkb~KOqD^*_Yp#Zmc~O_M#dwP-I63@$zV z@&cbY-g2LTOi@0-KP(6|2L9!9$MFdSInR0z73e1|GJS4vliw+U7C|kyN#5T1yfCz& zqw$^7XgJ(h>b zLbPvy;V~o)n%SR9td|L_e~r!j{(!k#-1=Ry zt?4bUu?0{b!RFT3hT5#r<@(y)s7div?JuU zq^9Rix3Uy3s%#GUIEUkyf!j&f_(t6x?>_7m|Fma0Z~TxeNQ`Y*e42vfsC+$%tWkd0 z3YM0mn-AGxtFPA&Id=63x=pcDP#n8Gh4fM)jVcjjjOrLT{A$F>3fj2)d(ZZ+A!Hbc#5FTsJu?@k!t#*uCBJX|d8d7NloH<+Bg z`^VBlUde9BPiaOf;@_D3jyzJZ6tVnB;HwiM~n0Wxzk2(Pvm%W%m7FV-sAAythZ+B&myCX0_yG*aBls?;H7f zFNzxYilNf36-L73BH~j65!6jV8N_>yrvsr8({J5-bgGT26qn9)*w?wQC$m;P!Iii} zV;9SBJhtQK2e1E^QBrORf=?FW=~47=D<~QpRl54kbudLq`%wKh++$RK#|N~SkwHj~ ziCA^e1>MrG4Xizq_DuK2^o#e!AUc6G9v~3w%!UggVJA|&zQT-M)MCJfWtlu{A^}6U z-~eodTm9~ySO(c2sVD$PZ=^M`LzfP>)VT_QvapV|{E$c%w;$)qFb$@74|WduF5vql z*zN)WuufyjH%odmB-ef^`s>Y*XNFNPL+dhqCKqDiohE|UijW*k3>CM#I3e%kmEiiVEzXDEiBa)Ui z1({0*U>++89FM)c0M4M+f)l=>;#urf6B)OA1^72{;Z~*=Hbs$4%(tl-9giSN7`n)6 kJq-rSrsKagcE$SfkJmyI>|()rz_2epzdFJA;@r3Y2MMhN1^@s6 literal 0 HcmV?d00001 diff --git a/docs/UML.uxf b/docs/UML.uxf deleted file mode 100644 index 356d2be..0000000 --- a/docs/UML.uxf +++ /dev/null @@ -1,287 +0,0 @@ - - - 10 - - UMLClass - - 490 - 150 - 210 - 50 - - Main --- -+ static void main(String[] args) - - - - UMLClass - - 150 - 530 - 220 - 50 - - Class --- -AbstractJavaStructre superClass - - - - UMLClass - - 230 - 400 - 270 - 80 - - /AbstractJavaStructure/ --- -List<AbstractJavaElement> subElements -List<Interface> implements - - - - - - - - UMLClass - - 380 - 530 - 100 - 30 - - Interface --- - - - - - UMLClass - - 690 - 470 - 70 - 30 - - Field --- - - - - - UMLClass - - 650 - 530 - 240 - 50 - - Method --- -List<AbstractJavaThing> arguments - - - - UMLClass - - 1090 - 380 - 110 - 50 - - <<interface>> -IModifer --- - - - - - UMLClass - - 980 - 470 - 100 - 30 - - FinalModifier - - - - UMLClass - - 1090 - 470 - 100 - 30 - - StaticModifier - - - - UMLClass - - 1200 - 470 - 140 - 30 - - SynchronizedModifier - - - - UMLClass - - 690 - 390 - 160 - 50 - - /AbstractJavaElement/ --- -AbstractJavaThing type - - - - - - Relation - - 420 - 470 - 30 - 80 - - lt=<<- - 10.0;10.0;10.0;60.0 - - - Relation - - 270 - 470 - 30 - 80 - - lt=<<- - 10.0;10.0;10.0;60.0 - - - Relation - - 720 - 430 - 30 - 60 - - lt=<<- - 10.0;10.0;10.0;40.0 - - - Relation - - 790 - 430 - 30 - 120 - - lt=<<- - 10.0;10.0;10.0;100.0 - - - UMLClass - - 510 - 280 - 160 - 90 - - /AbstractJavaThing/ --- -String name -List<IModifer> modifiers - - - - - - - Relation - - 660 - 320 - 120 - 90 - - lt=<<- - 10.0;10.0;100.0;10.0;100.0;70.0 - - - Relation - - 350 - 320 - 180 - 100 - - lt=<<- - 160.0;10.0;10.0;10.0;10.0;80.0 - - - UMLClass - - 980 - 520 - 100 - 30 - - PrivateModifier - - - - UMLClass - - 1090 - 520 - 100 - 30 - - PublicModifier - - - - UMLClass - - 1200 - 520 - 140 - 30 - - ProtectedModifier - - - - UMLClass - - 980 - 560 - 170 - 30 - - ProtectedPrivateModifier - - - - UMLClass - - 1160 - 560 - 170 - 30 - - AbstractModifier - - - diff --git a/docs/UML_1_3_Generated.png b/docs/UML_1_3_Generated.png new file mode 100644 index 0000000000000000000000000000000000000000..518cefcbd3f25603ac62da3cf6580de61c42d29f GIT binary patch literal 20812 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 literal 0 HcmV?d00001 diff --git a/docs/UML_1__3.png b/docs/UML_1__3.png new file mode 100644 index 0000000000000000000000000000000000000000..832fcddb011448eb7afe5f0103cfffe6e96a8cfa GIT binary patch literal 33644 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 + + 10 + + UMLClass + + 400 + 370 + 200 + 70 + + <<interface>> +IWatcher +-- +handleEvent(String fileName) + + + + + UMLClass + + 290 + 510 + 200 + 50 + + HtmlWatcher +-- +handleEvent(String fileName) + + + + + UMLClass + + 510 + 510 + 200 + 50 + + TxtWatcher +-- +handleEvent(String fileName) + + + + + UMLClass + + 310 + 60 + 370 + 240 + + AppLauncher +-- +-watcher: WatchService +-dir: Path +-stop: boolean +-processes: List<Process> +-- +~AppLauncher(Path dir): ctor ++run(): void +#clearEverything(): void ++stopGracefully(): void ++isRunning(): boolean ++getApplicationsCount(): int ++handleDirectoryEvent(String eventName, Path file): void ++main(String[] args): void +-- + + + + + Relation + + 490 + 290 + 30 + 100 + + lt=<- + 10.0;80.0;10.0;10.0 + + + Relation + + 380 + 430 + 80 + 100 + + lt=<<. + 60.0;10.0;10.0;80.0 + + + Relation + + 540 + 430 + 80 + 100 + + lt=<<. + 10.0;10.0;60.0;80.0 + + + UMLClass + + 740 + 510 + 200 + 50 + + TextPrinterWatcher +-- +handleEvent(String fileName) + + + + + UMLClass + + 60 + 510 + 200 + 50 + + JarWatcher +-- +handleEvent(String fileName) + + + + + Relation + + 140 + 410 + 280 + 120 + + lt=<<. + 260.0;10.0;10.0;100.0 + + + Relation + + 590 + 400 + 260 + 130 + + lt=<<. + 10.0;10.0;240.0;110.0 + + diff --git a/src/edu/rosehulman/cjjb/Main.java b/src/edu/rosehulman/cjjb/Main.java index 798436f..32f4ad4 100644 --- a/src/edu/rosehulman/cjjb/Main.java +++ b/src/edu/rosehulman/cjjb/Main.java @@ -3,17 +3,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; -import java.util.List; -import java.util.Map; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.Opcodes; - -import edu.rosehulman.cjjb.asm.ClassDeclarationVisitor; -import edu.rosehulman.cjjb.asm.ClassFieldVisitor; -import edu.rosehulman.cjjb.asm.ClassMethodVisitor; -import edu.rosehulman.cjjb.asm.Relations; public class Main { @@ -24,6 +13,12 @@ public class Main { "edu.rosehulman.cjjb.asm.ClassMethodVisitor", "edu.rosehulman.cjjb.asm.Relations", "org.objectweb.asm.ClassVisitor" + /*"problem.AppLauncher", + "problem.HtmlWatcher", + "problem.JarWatcher", + "problem.TextPrinterWatcher", + "problem.TxtWatcher", + "problem.IWatcher"*/ }; public static final String boilerPlate = "digraph G { fontname = \"Bitstream Vera Sans\" fontsize = 8 node [ fontname = \"Bitstream Vera Sans\" fontsize = 8 shape = \"record\" ] edge [ fontname = \"Bitstream Vera Sans\" fontsize = 8 ]"; @@ -31,46 +26,8 @@ public class Main { public static void main(String[] args) throws IOException { OutputStream out = new FileOutputStream("output.txt"); - Relations relations = new Relations(); - - out.write(boilerPlate.getBytes()); - for (String className : CLASSES) { - - ClassReader reader = new ClassReader(className); - ClassVisitor decVisitor = new ClassDeclarationVisitor(Opcodes.ASM5, out, relations); - ClassVisitor fieldVisitor = new ClassFieldVisitor(Opcodes.ASM5, decVisitor, out); - ClassVisitor methodVisitor = new ClassMethodVisitor(Opcodes.ASM5, fieldVisitor, out); - // TODO: add more DECORATORS here in later milestones to accomplish - // specific tasks - reader.accept(methodVisitor, ClassReader.EXPAND_FRAMES); - - out.write("}\"\n]".getBytes()); - - } - - Map childParrentRelations = relations.getChildParentIncludedRelations(); - List interfaces = relations.getIncludedInterfaceRelations(); - writeChildParrentRelations(childParrentRelations,out); - writeInterfaceRelations(interfaces, out); - out.write("}".getBytes()); - } - - private static void writeChildParrentRelations(Map childParrentRelations, OutputStream out) throws IOException { - for(String child: childParrentRelations.keySet()) { - String toWrite = child + " -> " + childParrentRelations.get(child) + " [arrowhead=\"onormal\", style=\"filled\"]"; - - out.write(toWrite.getBytes()); - } - } - - private static void writeInterfaceRelations(List interfaces, OutputStream out) throws IOException { - //WeatherData -> Subject [arrowhead="onormal", style="dashed"]; - - for(String[] array: interfaces) { - String toWrite = array[0] + " -> " + array[1] + " [arrowhead=\"onormal\", style=\"dashed\"]"; - - out.write(toWrite.getBytes()); - } + UMLClassVisitor visitor = new UMLClassVisitor(CLASSES, out); + visitor.buildUML(); } diff --git a/src/edu/rosehulman/cjjb/UMLClassVisitor.java b/src/edu/rosehulman/cjjb/UMLClassVisitor.java new file mode 100644 index 0000000..f21a779 --- /dev/null +++ b/src/edu/rosehulman/cjjb/UMLClassVisitor.java @@ -0,0 +1,71 @@ +package edu.rosehulman.cjjb; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.List; +import java.util.Map; + +import org.objectweb.asm.ClassReader; +import org.objectweb.asm.ClassVisitor; +import org.objectweb.asm.Opcodes; + +import edu.rosehulman.cjjb.asm.ClassDeclarationVisitor; +import edu.rosehulman.cjjb.asm.ClassFieldVisitor; +import edu.rosehulman.cjjb.asm.ClassMethodVisitor; +import edu.rosehulman.cjjb.asm.Relations; + +public class UMLClassVisitor { + + public String[] classes; + public OutputStream out; + public static final String boilerPlate = "digraph G { fontname = \"Bitstream Vera Sans\" fontsize = 8 node [ fontname = \"Bitstream Vera Sans\" fontsize = 8 shape = \"record\" ] edge [ fontname = \"Bitstream Vera Sans\" fontsize = 8 ]"; + + public UMLClassVisitor(String[] classes, OutputStream out) { + this.classes = classes; + this.out = out; + } + + public void buildUML() throws IOException { + Relations relations = new Relations(); + + out.write(boilerPlate.getBytes()); + for (String className : this.classes) { + + ClassReader reader = new ClassReader(className); + ClassVisitor decVisitor = new ClassDeclarationVisitor(Opcodes.ASM5, out, relations); + ClassVisitor fieldVisitor = new ClassFieldVisitor(Opcodes.ASM5, decVisitor, out); + ClassVisitor methodVisitor = new ClassMethodVisitor(Opcodes.ASM5, fieldVisitor, out); + // TODO: add more DECORATORS here in later milestones to accomplish + // specific tasks + reader.accept(methodVisitor, ClassReader.EXPAND_FRAMES); + + out.write("}\"\n]".getBytes()); + + } + + Map childParrentRelations = relations.getChildParentIncludedRelations(); + List interfaces = relations.getIncludedInterfaceRelations(); + writeChildParrentRelations(childParrentRelations, out); + writeInterfaceRelations(interfaces, out); + out.write("}".getBytes()); + } + + private void writeChildParrentRelations(Map childParrentRelations, OutputStream out) throws IOException { + for(String child: childParrentRelations.keySet()) { + String toWrite = child + " -> " + childParrentRelations.get(child) + " [arrowhead=\"onormal\", style=\"filled\"]"; + + out.write(toWrite.getBytes()); + } + } + + private void writeInterfaceRelations(List interfaces, OutputStream out) throws IOException { + //WeatherData -> Subject [arrowhead="onormal", style="dashed"]; + + for(String[] array: interfaces) { + String toWrite = array[0] + " -> " + array[1] + " [arrowhead=\"onormal\", style=\"dashed\"]"; + + out.write(toWrite.getBytes()); + } + } + +} diff --git a/test/SyntaxTest.java b/test/SyntaxTest.java new file mode 100644 index 0000000..0e1c536 --- /dev/null +++ b/test/SyntaxTest.java @@ -0,0 +1,36 @@ +import static org.junit.Assert.*; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +import org.junit.Test; + +import edu.rosehulman.cjjb.UMLClassVisitor; + +public class SyntaxTest { + + @Test + public void testSyntax() throws IOException { + String[] classes = new String[] {"sampleClasses.Class1", "sampleClasses.Class2", "sampleClasses.Inter1"}; + ByteArrayOutputStream out = new ByteArrayOutputStream(); + UMLClassVisitor visitor = new UMLClassVisitor(classes, out); + visitor.buildUML(); + String result = new String(out.toByteArray()); + assertTrue(result.contains("Class1")); + assertTrue(result.contains("Class2")); + assertTrue(result.contains("Inter1")); + assertTrue(result.contains("Class1 -> Inter1")); + assertEquals(countString("\\{", result), countString("\\}", result)); + assertEquals(countString("\\[", result), countString("\\]", result)); + } + + public int countString(String delimeter, String result) { + int count = 0; + while (result.contains(delimeter)) { + result = result.replaceFirst(delimeter, ""); + count++; + } + return count; + } + +} diff --git a/test/sampleClasses/Class1.java b/test/sampleClasses/Class1.java new file mode 100644 index 0000000..bfbfd68 --- /dev/null +++ b/test/sampleClasses/Class1.java @@ -0,0 +1,17 @@ +package sampleClasses; + +public class Class1 implements Inter1{ + + public int publicField; + private int privateField; + + @Override + public void publicVoidMethod(){ + + } + + private int privateReturnIntMethod() { + return 0; + } + +} diff --git a/test/sampleClasses/Class2.java b/test/sampleClasses/Class2.java new file mode 100644 index 0000000..e0ed97c --- /dev/null +++ b/test/sampleClasses/Class2.java @@ -0,0 +1,12 @@ +package sampleClasses; + +public class Class2 extends Class1 { + + protected int protectedInt; + int defaultInt; + + protected void protectedVoidMethod() { + + } + +} diff --git a/test/sampleClasses/Inter1.java b/test/sampleClasses/Inter1.java new file mode 100644 index 0000000..3aabb76 --- /dev/null +++ b/test/sampleClasses/Inter1.java @@ -0,0 +1,5 @@ +package sampleClasses; + +public interface Inter1 { + public void publicVoidMethod(); +}