blob: 184682ebaebdae825559a3cef81c0572e6b3160f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2019 Mia-Software and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Gregoire DUPE (Mia-Software)
* Romain Dervaux (Mia-Software)
* Nicolas Bros (Mia-Software) - Bug 335003 - [Discoverer] : Existing Discoverers Refactoring based on new framework
*******************************************************************************/
package org.eclipse.modisco.java.discoverer.tests;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.HashMap;
import java.util.Iterator;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.modisco.infra.discovery.core.exception.DiscoveryException;
import org.eclipse.modisco.java.discoverer.DiscoverJavaModelFromJavaProject;
import org.eclipse.modisco.java.discoverer.internal.JavaActivator;
public class ModelElementStats extends DiscoverJavaModelFromJavaProject {
private final HashMap<Class<?>, Long> modelElementStat = new HashMap<Class<?>, Long>();
private PrintStream ps;
@Override
protected void basicDiscoverElement(final IJavaProject source,
final IProgressMonitor monitor) throws DiscoveryException {
super.basicDiscoverElement(source, monitor);
getModelElementStats(getTargetModel());
initPS(source);
print(source);
}
private void print(final IJavaProject javaProject) {
Iterator<Class<?>> classes = this.modelElementStat.keySet().iterator();
while (classes.hasNext()) {
Class<?> eObjectClass = classes.next();
Long nbModelElement = this.modelElementStat.get(eObjectClass);
this.ps.println(eObjectClass.getSimpleName() + "\t" //$NON-NLS-1$
+ nbModelElement.toString());
}
try {
javaProject.getProject().refreshLocal(IResource.DEPTH_INFINITE,
new NullProgressMonitor());
} catch (CoreException e) {
Status status2 = new Status(IStatus.ERROR, JavaActivator.PLUGIN_ID,
e.getMessage(), e);
Activator.getDefault().getLog().log(status2);
}
}
private void getModelElementStats(final Resource resource) {
TreeIterator<EObject> treeIterator = resource.getAllContents();
while (treeIterator.hasNext()) {
EObject eObject = treeIterator.next();
Class<?> eObjectClass = eObject.getClass();
System.out.println(eObjectClass.toString());
Long nbElement = this.modelElementStat.get(eObjectClass);
if (nbElement != null) {
this.modelElementStat.put(eObjectClass,
new Long(nbElement.longValue() + 1));
} else {
this.modelElementStat.put(eObjectClass, new Long(1));
}
}
}
public void initPS(final IJavaProject javaProject) {
File statisticsDir = javaProject.getProject().getLocation().toFile();
File f = new File(statisticsDir, "modelElementStats-" //$NON-NLS-1$
+ System.currentTimeMillis() + ".tsv"); //$NON-NLS-1$
Status status = new Status(IStatus.INFO, JavaActivator.PLUGIN_ID,
"Statistic file= " + f.toString()); //$NON-NLS-1$
Activator.getDefault().getLog().log(status);
try {
this.ps = new PrintStream(f);
} catch (FileNotFoundException e) {
Status status2 = new Status(IStatus.ERROR, JavaActivator.PLUGIN_ID,
e.getMessage(), e);
Activator.getDefault().getLog().log(status2);
}
}
}