Commit ce0339ea authored by Daniel Honsel's avatar Daniel Honsel
Browse files

adjusted printing imported modules

parent 6fdd444b
Loading
Loading
Loading
Loading
+26 −20
Original line number Diff line number Diff line
@@ -24,11 +24,15 @@ public class PreAnalyzer implements Callable<Boolean> {
		for (ImportDef i : EcoreUtil2.getAllContentsOfType(currentModule, ImportDef.class)) {
			TTCN3Module importedModule = TTCN3GlobalScopeProvider.NAMED_MODULES.get(i.getName());

			if (importedModule != null) {

				synchronized (TTCN3GlobalScopeProvider.IMPORTS) {
					if (TTCN3GlobalScopeProvider.IMPORTS.containsKey(this.resource)) {
					TTCN3GlobalScopeProvider.IMPORTS.get(this.resource).add(new ImportData(i.getName(), i, importedModule));
						TTCN3GlobalScopeProvider.IMPORTS.get(this.resource)
								.add(new ImportData(i.getName(), i, importedModule));
					} else {
					TTCN3GlobalScopeProvider.IMPORTS.put(this.resource, new ImportData(i.getName(), i, importedModule));
						TTCN3GlobalScopeProvider.IMPORTS.put(this.resource,
								new ImportData(i.getName(), i, importedModule));
					}
				}

@@ -47,6 +51,8 @@ public class PreAnalyzer implements Callable<Boolean> {
						TTCN3GlobalScopeProvider.IMPORTED_FROM.put(importedModule, currentModule);
					}
				}
				
			}
		}
		return true;
	}
+0 −1
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import de.ugoe.cs.swe.common.T3QOptionsHandler;
import de.ugoe.cs.swe.common.exceptions.TerminationException;
import de.ugoe.cs.swe.common.logging.LoggingInterface;
import de.ugoe.cs.swe.common.logging.LoggingInterface.LogLevel;
import de.ugoe.cs.swe.validation.TTCN3StatisticsProvider;

public class T3Q {
	private static String versionNumber = "v2.0.0b9";
+15 −19
Original line number Diff line number Diff line
@@ -157,26 +157,22 @@ public class TTCN3ResourceProvider {
			e.printStackTrace();
		}				
		
		if (activeProfile.isFeatureListImportedModuleNames()) {
			TTCN3GlobalScopeProvider.printImportedModuleNames(false, logger);
		}

		if (activeProfile.isFeatureListImportedModuleFileNames()) {
			TTCN3GlobalScopeProvider.printImportedModuleNames(true, logger);
		}

		if (activeProfile.isFeatureListImportingModuleNames()) {
			TTCN3GlobalScopeProvider.printImportingModuleNames(false, logger);
		}

		if (activeProfile.isFeatureListImportingModuleFileNames()) {
			TTCN3GlobalScopeProvider.printImportingModuleNames(true, logger);
		}
		
//		if (activeProfile.isFeatureListImportedModuleNames()) {
//			TTCN3StatisticsProvider.getInstance().printListImportedModuleNames(
//					false, logger);
//		}
//
//		if (activeProfile.isFeatureListImportedModuleFileNames()) {
//			TTCN3StatisticsProvider.getInstance().printListImportedModuleNames(
//					true, logger);
//		}
//
//		if (activeProfile.isFeatureListImportingModuleNames()) {
//			TTCN3StatisticsProvider.getInstance()
//					.printListImportingModuleNames(false, logger);
//		}
//
//		if (activeProfile.isFeatureListImportingModuleFileNames()) {
//			TTCN3StatisticsProvider.getInstance()
//					.printListImportingModuleNames(true, logger);
//		}
		watchAnalyzing.stop();
		System.out.println("Test suite analyzed in "
				+ MiscTools.msToString(watchAnalyzing.elapsed(TimeUnit.MILLISECONDS)) + " minutes." + '\n');
+71 −0
Original line number Diff line number Diff line
package de.ugoe.cs.swe.scoping;

import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.xtext.EcoreUtil2;
import org.eclipse.xtext.naming.IQualifiedNameProvider;
import org.eclipse.xtext.nodemodel.INode;
import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
import org.eclipse.xtext.resource.EObjectDescription;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.resource.ISelectable;
@@ -31,6 +35,10 @@ import com.google.common.collect.SetMultimap;
import com.google.inject.Inject;
import com.google.inject.Provider;

import de.ugoe.cs.swe.common.MiscTools;
import de.ugoe.cs.swe.common.logging.LoggingInterface;
import de.ugoe.cs.swe.common.logging.LoggingInterface.MessageClass;
import de.ugoe.cs.swe.tTCN3.ImportDef;
import de.ugoe.cs.swe.tTCN3.TTCN3Module;
import de.ugoe.cs.swe.tTCN3.TTCN3Package;
import de.ugoe.cs.swe.validation.TTCN3StatisticsProvider;
@@ -196,4 +204,67 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider {
		return new MultimapBasedSelectable(allDescriptions);
	}

	public static void printImportedModuleNames(boolean fileNames, final LoggingInterface logger) {
		for (String moduleName : NAMED_MODULES.keySet()) {
			TTCN3Module module = NAMED_MODULES.get(moduleName);
			INode node = NodeModelUtils.getNode(module);
			String importList = "";
			int index = 0;
			List<ImportDef> imports = EcoreUtil2.getAllContentsOfType(module, ImportDef.class);
			int size = imports.size();

			for (ImportDef importDef : imports) {
				index++;
				TTCN3Module importModule = NAMED_MODULES.get(importDef.getName());
				if (importModule != null) {
					if (fileNames) {
						importList += importDef.getName() + " located in " + importModule.eResource().getURI().devicePath()
								+ (index < size ? ", " : "");
					} else {
						importList += importDef.getName() + (index < size ? ", " : "");
					}
				} else {
					importList += "(<" + importDef.getName() + "> is unresolved!)" + (index < size ? ", " : "");
					printModuleNotResolvedMessage(module.eResource().getURI(), node, importDef.getName(), logger);
				}
			}

			String message = "Importing from module(s) \"" + importList + "\"";

			logger.logInformation(module.eResource().getURI(), node.getStartLine(), node.getEndLine(), MessageClass.GENERAL, message,
					"1.18, " + MiscTools.getMethodName());

		}
	}

	public static void printImportingModuleNames(boolean fileNames, final LoggingInterface logger) {
		for (TTCN3Module importedFrom : IMPORTED_FROM.keySet()) {
			INode node = NodeModelUtils.getNode(importedFrom);
			String importList = "";
			int index = 0;
			Collection<TTCN3Module> modules = IMPORTED_FROM.get(importedFrom);
			int size = modules.size();
			
			for (TTCN3Module module : modules) {
				index++;
				if (fileNames) {
					importList += module.getName() + " located in " + module.eResource().getURI().devicePath()
							+ (index < size ? ", " : "");
				} else {
					importList += module.getName() + (index < size ? ", " : "");
				}
				
				String message = "Module \"" + module.getName() + "\" is imported in module(s) \"" + importList + "\"";
				
				logger.logInformation(module.eResource().getURI(), node.getStartLine(), node.getEndLine(), MessageClass.GENERAL, message,
						"1.18, " + MiscTools.getMethodName());				
			}
		}
	}

	private static void printModuleNotResolvedMessage(URI uri, INode node, String name, LoggingInterface logger) {
		logger.logInformation(uri, node.getStartLine(), node.getEndLine(), MessageClass.GENERAL,
				"Imported module \"" + name + "\" cannot be resolved!", "1.18, " + MiscTools.getMethodName());
	}

}
+0 −87
Original line number Diff line number Diff line
package de.ugoe.cs.swe.validation;

import java.util.Map;
import java.util.Set;

import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.xtext.EcoreUtil2;
import org.eclipse.xtext.nodemodel.INode;
import org.eclipse.xtext.nodemodel.util.NodeModelUtils;

import com.google.common.collect.Maps;
import com.google.common.collect.Sets;

import de.ugoe.cs.swe.common.MiscTools;
import de.ugoe.cs.swe.common.logging.LoggingInterface;
import de.ugoe.cs.swe.common.logging.LoggingInterface.MessageClass;
import de.ugoe.cs.swe.tTCN3.ImportDef;
import de.ugoe.cs.swe.tTCN3.TTCN3Module;

public class TTCN3StatisticsProvider {
	private int parsedLines;
	private long parseTime;
@@ -112,58 +92,6 @@ public class TTCN3StatisticsProvider {
		return instance;
	}



	public void printListImportedModuleNames(boolean fileNames, LoggingInterface logger) {
		//printImportModuleNames(fileNames, logger, imports, true);
	}

	public void printListImportingModuleNames(boolean fileNames, LoggingInterface logger) {
		//printImportModuleNames(fileNames, logger, importedModules, false);
	}

//	private void printImportModuleNames(boolean fileNames, LoggingInterface logger, Map<String, Set<String>> map, boolean importing) {
//		for (String moduleName : map.keySet()) {
//			TTCN3Module module = modules.get(moduleName);
//			if (module != null) {
//				INode node = NodeModelUtils.getNode(module);
//				String importList = "";
//				int index = 0;
//				int size = map.get(moduleName).size();
//				for (String importName : map.get(moduleName)) {
//					index++;
//					TTCN3Module importModule = modules.get(importName);
//					if (importModule != null) {
//						if (fileNames) {
//							importList += importName + " located in " + importModule.eResource().getURI().devicePath()
//									+ (index < size ? ", " : "");
//						} else {
//							importList += importName + (index < size ? ", " : "");
//						}
//					} else {
//						if (importing) {
//							importList += "(<" + importName + "> is unresolved!)" + (index < size ? ", " : "");
//							printModuleNotResolvedMessage(module.eResource().getURI(), node, importName, logger);
//						}
//					}
//				}
//				String message = "";
//				if (importing) {
//					message = "Importing from module(s) \"" + importList + "\"";
//				} else {
//					message = "Module \"" + module.getName() + "\" is imported in module(s) \"" + importList + "\"";
//				}
//				logger.logInformation(module.eResource().getURI(), node.getStartLine(), node.getEndLine(), MessageClass.GENERAL, message,
//						"1.18, " + MiscTools.getMethodName());
//			}
//		}
//	}

	private void printModuleNotResolvedMessage(URI uri, INode node, String name, LoggingInterface logger) {
		logger.logInformation(uri, node.getStartLine(), node.getEndLine(), MessageClass.GENERAL, "Imported module \"" + name
				+ "\" cannot be resolved!", "1.18, " + MiscTools.getMethodName());
	}

	public void addParsedLines(int lines) {
		parsedLines += lines;
	}
@@ -184,20 +112,6 @@ public class TTCN3StatisticsProvider {
		this.analyzeTime += analyzeTime;
	}

//	public boolean isBaseModuleImported(TTCN3Module base, String other) {
//		if (!importsInitialized)
//			initializeImports(base);
//
//		if (importedModules.containsKey(base.getName()) && importedModules.get(base.getName()).contains(other)) {
//			return true;
//		} else {
//			return false;
//		}
//	}




	public boolean isImportsInitialized() {
		return importsInitialized;
	}
@@ -209,5 +123,4 @@ public class TTCN3StatisticsProvider {
	public void setParsingCompleted(boolean parsingCompleted) {
		this.parsingCompleted = parsingCompleted;
	}

}