Skip to content

Commit

Permalink
lots of refactoring going
Browse files Browse the repository at this point in the history
  • Loading branch information
Philip Ross committed Jan 29, 2016
1 parent 707e9a2 commit 7a9671b
Show file tree
Hide file tree
Showing 19 changed files with 292 additions and 246 deletions.
File renamed without changes.
17 changes: 0 additions & 17 deletions lab5-1-solution/test/problem/AllTests.java

This file was deleted.

This file was deleted.

54 changes: 0 additions & 54 deletions lab5-1-solution/test/problem/lib/LinearTransformerTest.java

This file was deleted.

12 changes: 6 additions & 6 deletions src/dot/APatternBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ public ClassVisitor getVisitor() {
}

@Override
protected IClassRecord applyDecoration(IClassRecord record) {
if (this.isPattern(record)) {
this.applyPattern(record);
}
public IClassRecord applyDecoration(IClassRecord record) {
// if (this.isPattern(record)) {
// this.applyPattern(record);
// }
return record;
}

abstract protected boolean isPattern(IClassRecord record);
abstract protected void applyPattern(IClassRecord record);
public abstract boolean isPattern(IClassRecord record);
public abstract void applyPattern(IClassRecord record);
}
30 changes: 22 additions & 8 deletions src/dot/AbstractBuilderDecorator.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
package dot;

import java.util.HashMap;
import java.util.HashSet;

import org.objectweb.asm.ClassVisitor;

import records.ClassRecord;
import records.IClassRecord;

abstract public class AbstractBuilderDecorator implements IBuilder{
abstract public class AbstractBuilderDecorator implements IBuilder {
protected IBuilder builder;
protected IClassRecord record;

public AbstractBuilderDecorator(String className, HashSet<String> classNames) {
this(new UmlBuilder(className, classNames));
}
Expand All @@ -30,9 +31,9 @@ public IClassRecord build(ClassVisitor visitor) {
}

abstract public ClassVisitor getVisitor();
// public ClassVisitor getVisitor() {
// return builder.getVisitor();
// }
// public ClassVisitor getVisitor() {
// return builder.getVisitor();
// }

public String getClassUML() {
return this.record.getClassUml();
Expand All @@ -41,11 +42,24 @@ public String getClassUML() {
public HashSet<String> getClassList() {
return builder.getClassList();
}

public ClassRecord getClassRecord() {
return this.builder.getClassRecord();
}

protected abstract IClassRecord applyDecoration(IClassRecord record);

public abstract IClassRecord applyDecoration(IClassRecord record);

public void calculatePattern(IClassRecord record, HashMap<String, IClassRecord> records) {
if (this.isPattern(record)) {
this.applyPattern(record);
}
}

public boolean isPattern(IClassRecord record) {
return false;
};

public void applyPattern(IClassRecord record) {
};

}
80 changes: 54 additions & 26 deletions src/dot/AdapterBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,66 @@

import java.util.HashSet;

import org.objectweb.asm.ClassVisitor;

import records.ClassRecord;
import records.ExtendedClassRecord;
import records.IClassRecord;
import records.SingletonRecord;
import records.ImplementsClassRecord;
import records.InstanceVarRecord;
import records.MethodRecord;

public class AdapterBuilder extends PatternDetection {
private UmlBuilder builder;
private ClassRecord record;

public AdapterBuilder(String className, HashSet<String> classNameList) {
super(className, classNameList);
// TODO Auto-generated constructor stub
public class AdapterBuilder extends APatternBuilder {
public AdapterBuilder(IBuilder b) {
super(b);
}

@Override
public ClassRecord build(ClassVisitor visitor){
this.record =this.builder.build(visitor);
if(this.isPattern()){
this.record.setBoxColor("red1");
this.record.addPattern("Decorator");

public boolean isPattern(IClassRecord record) {
boolean hasAdapteeFieldAndConstructor = false;
boolean extendsImplementsOtherClass = false;
HashSet<String> possibles = new HashSet<String>();
if (record.canConvertRecord(ExtendedClassRecord.class)) {
ExtendedClassRecord extendedClassRecord = (ExtendedClassRecord) record
.tryConvertRecord(ExtendedClassRecord.class);
possibles.add(extendedClassRecord.getExtendsName());
}
if (record.canConvertRecord(ImplementsClassRecord.class)) {
ImplementsClassRecord implementsClassRecord = (ImplementsClassRecord) record
.tryConvertRecord(ImplementsClassRecord.class);
possibles.addAll(implementsClassRecord.getImplementsList());
}
// for(String s:){
// this.record.addEdge(s);
// }

return record;
for (String possible : possibles) {
if (record.getClassList().contains(possible.replace("/", "."))) {
extendsImplementsOtherClass = true;
}
}
System.out.println("\nin is pattern");
System.out.println(this.getClassRecord().getClassName());
System.out.println(record.getClassList());
HashSet<String> fields = new HashSet<String>();
if (extendsImplementsOtherClass) {
for (InstanceVarRecord field : record.getBaseRecord().getFieldsList()) {
fields.add(field.getType());
}

for (MethodRecord methodRecord : record.getBaseRecord().getMethodsList()) {
System.out.println(methodRecord.getName());
if (methodRecord.getName().equals("<init>")) {
System.out.println(methodRecord.getStypes());
System.out.println("init");
for (String arg : methodRecord.getStypes()) {
if (fields.contains(arg)) {
hasAdapteeFieldAndConstructor = true;
}
}
}
}
}
System.out.println("hasAdapteeFieldAndConstructor: " + hasAdapteeFieldAndConstructor
+ " && extendsImplementsOtherClass: " + extendsImplementsOtherClass);
return hasAdapteeFieldAndConstructor && extendsImplementsOtherClass;
}

@Override
public boolean isPattern() {
// TODO Auto-generated method stub
return false;
}
public void applyPattern(IClassRecord record) {

}
}
2 changes: 1 addition & 1 deletion src/dot/AssociationBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public ClassVisitor getVisitor() {
}

@Override
protected IClassRecord applyDecoration(IClassRecord record) {
public IClassRecord applyDecoration(IClassRecord record) {
AssociationClassRecord associationRecord = new AssociationClassRecord(record);
associationRecord.setAssociationNames(this.visitor.getAssociationNames());
return associationRecord;
Expand Down
2 changes: 1 addition & 1 deletion src/dot/DecoratorBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public boolean isPattern(IClassRecord record) {
}

@Override
protected void applyPattern(IClassRecord record) {
public void applyPattern(IClassRecord record) {
// TODO Auto-generated method stub
}

Expand Down
2 changes: 1 addition & 1 deletion src/dot/ExtensionBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public ClassVisitor getVisitor() {
}

@Override
protected IClassRecord applyDecoration(IClassRecord record) {
public IClassRecord applyDecoration(IClassRecord record) {
ExtendedClassRecord extendedRecord = new ExtendedClassRecord(record);
extendedRecord.setExtendsName(this.visitor.getExtendsName());
return extendedRecord;
Expand Down
3 changes: 3 additions & 0 deletions src/dot/IBuilder.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dot;

import java.util.HashMap;
import java.util.HashSet;

import org.objectweb.asm.ClassVisitor;
Expand All @@ -22,4 +23,6 @@ public interface IBuilder {
String getClassUML();
HashSet<String> getClassList();
ClassRecord getClassRecord();
public IClassRecord applyDecoration(IClassRecord record);
public void calculatePattern(IClassRecord record, HashMap<String, IClassRecord> records);
}
2 changes: 1 addition & 1 deletion src/dot/ImplementsBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public ClassVisitor getVisitor() {
}

@Override
protected IClassRecord applyDecoration(IClassRecord record) {
public IClassRecord applyDecoration(IClassRecord record) {
ImplementsClassRecord implementsRecord = new ImplementsClassRecord(record);
implementsRecord.setImplementsList(this.visitor.getImplementsList());
return implementsRecord;
Expand Down
4 changes: 2 additions & 2 deletions src/dot/SingletonBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public SingletonBuilder(IBuilder b) {
super(b);
}

protected void applyPattern(IClassRecord record) {
public void applyPattern(IClassRecord record) {
ClassRecord baseRecord = record.getBaseRecord();
baseRecord.setBoxColor("blue1");
baseRecord.addPattern("Singleton");
Expand All @@ -22,7 +22,7 @@ protected void applyPattern(IClassRecord record) {
baseRecord.addEdge(shortClassName + " -> " + shortClassName + "\n");
};

protected boolean isPattern(IClassRecord record) {
public boolean isPattern(IClassRecord record) {
ClassRecord baseRecord = record.getBaseRecord();
boolean hasField = false;
for (InstanceVarRecord field : baseRecord.getFieldsList()) {
Expand Down
11 changes: 11 additions & 0 deletions src/dot/UmlBuilder.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dot;

import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;

import org.objectweb.asm.ClassReader;
Expand All @@ -11,6 +12,7 @@
import asm.ClassFieldVisitor;
import asm.ClassMethodVisitor;
import records.ClassRecord;
import records.IClassRecord;

public class UmlBuilder implements IBuilder {
private ClassRecord record;
Expand Down Expand Up @@ -77,4 +79,13 @@ public String getClassUML() {
public ClassRecord getClassRecord() {
return this.record;
}

@Override
public IClassRecord applyDecoration(IClassRecord record) {
return record;
}

@Override
public void calculatePattern(IClassRecord record, HashMap<String, IClassRecord> records) {
}
}
2 changes: 1 addition & 1 deletion src/dot/UsesBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public ClassVisitor getVisitor() {
}

@Override
protected IClassRecord applyDecoration(IClassRecord record) {
public IClassRecord applyDecoration(IClassRecord record) {
UsesClassRecord usesClassRecord = new UsesClassRecord(record);
usesClassRecord.setUsesNamesList(this.visitor.getUsesNames());
return usesClassRecord;
Expand Down
Loading

0 comments on commit 7a9671b

Please sign in to comment.