package de.dhbwstuttgart.syntaxtree; import java.io.File; import java.util.*; import de.dhbwstuttgart.parser.NullToken; import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.typeinference.constraints.ConstraintSet; import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation; //import sun.security.x509.X509CertInfo; public class SourceFile extends SyntaxTreeNode{ private String pkgName; private final List KlassenVektor; private final List imports; /** * Die SourceFile repräsntiert eine zu einem Syntaxbaum eingelesene Java-Datei. * SourceFile stellt dabei den Wurzelknoten des Syntaxbaumes dar. */ public SourceFile(String pkgName, List classDefinitions, List imports){ super(new NullToken()); this.KlassenVektor = classDefinitions; this.pkgName = pkgName; this.imports = imports; } public String getPkgName(){ return this.pkgName; } // Get imports (to test implementation) public List getImports(){ return this.imports; } public ConstraintSet getConstraints(TypeInferenceInformation info) { ConstraintSet ret = new ConstraintSet(); for (ClassOrInterface cl : this.KlassenVektor) { ret.addAll(cl.getConstraints(info)); } return ret; } public TypeInferenceInformation getTypeInferenceInformation(List sourceFiles){ Set classes = new HashSet<>(); for(SourceFile sourceFile : sourceFiles){ classes.addAll(sourceFile.KlassenVektor); } return new TypeInferenceInformation(classes); } public List getClasses() { return KlassenVektor; } @Override public void accept(ASTVisitor visitor) { visitor.visit(this); } }