| /*******************************************************************************
|
| * Copyright (c) 2011, 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:
|
| * Nicolas Guyomar (Mia-Software) - initial API and implementation
|
| * Nicolas Bros (Mia-Software) - Bug 335003 - [Discoverer] : Existing Discoverers Refactoring based on new framework
|
| *******************************************************************************/ |
| package org.eclipse.modisco.java.composition.discoverer.benchmark;
|
|
|
| import java.io.File;
|
| import java.io.IOException;
|
| import java.util.Date;
|
|
|
| import org.eclipse.core.resources.IProject;
|
| import org.eclipse.core.resources.ResourcesPlugin;
|
| import org.eclipse.core.runtime.IProgressMonitor;
|
| import org.eclipse.modisco.java.discoverer.benchmark.emfstat.DiscoverJavaModelFromJavaProjectEMFStat;
|
| import org.eclipse.modisco.java.discoverer.benchmark.emfstat.Statistics;
|
| import org.eclipse.jdt.core.IJavaProject;
|
| import org.eclipse.modisco.infra.discovery.core.exception.DiscoveryException;
|
| import org.eclipse.modisco.java.composition.discoverer.DiscoverKDMSourceAndJavaModelFromJavaProject;
|
|
|
| /**
|
| * This class extends the DiscoverKDMSourceAndJavaModelFromJavaProject to instrument it with
|
| * benchmark capabilities. Memory used during the discovery and saving steps are reported in an html
|
| * file
|
| */
|
| public class DiscoverJavaApplicationModel2 extends DiscoverKDMSourceAndJavaModelFromJavaProject {
|
|
|
| private IProject project;
|
|
|
| @Override
|
| protected void basicDiscoverElement(final IJavaProject source, final IProgressMonitor monitor)
|
| throws DiscoveryException {
|
| this.project = source.getProject();
|
| getStatistics().begin();
|
| super.basicDiscoverElement(source, monitor);
|
| getStatistics().end();
|
| }
|
|
|
| public IProject getProject() {
|
| return this.project;
|
| }
|
|
|
| @Override
|
| protected void saveAllResources(final IProgressMonitor monitor) throws IOException {
|
| getStatistics().beginSave();
|
| super.saveAllResources(monitor);
|
| getStatistics().endSave();
|
| }
|
|
|
| // //////////////////////// TRACING /////////////////////////
|
|
|
| private IProject statProject;
|
| private Statistics statistics;
|
|
|
| public void setStatProject(final IProject statProject) {
|
| this.statProject = statProject;
|
| }
|
|
|
| protected IProject getStatProject() {
|
| if (this.statProject == null) {
|
| File projectFile = Statistics.getDefaultStatProject(getProject()).getLocation()
|
| .toFile();
|
| this.statProject = ResourcesPlugin.getWorkspace().getRoot()
|
| .getProject(projectFile.getName());
|
| }
|
| return this.statProject;
|
| }
|
|
|
| protected Statistics getStatistics() {
|
| if (this.statistics == null) {
|
| File statProjectFile = getStatProject().getLocation().toFile();
|
| this.statistics = Statistics.getStatistics(
|
| getProject().getName() + "_" + System.currentTimeMillis(), statProjectFile); //$NON-NLS-1$
|
| getStatistics().getProperties().put(
|
| DiscoverJavaModelFromJavaProjectEMFStat.JAVA_PROJECT_NAME,
|
| getProject().getName());
|
| getStatistics().getProperties().put(
|
| DiscoverJavaModelFromJavaProjectEMFStat.DISCOVERER_CLASS_NAME,
|
| this.getClass().getName());
|
| getStatistics().getProperties().put(
|
| DiscoverJavaModelFromJavaProjectEMFStat.DISCOVERY_DATE, new Date().toString());
|
| getStatistics().getProperties().put(
|
| DiscoverJavaModelFromJavaProjectEMFStat.XMX,
|
| Runtime.getRuntime().maxMemory()
|
| / DiscoverJavaModelFromJavaProjectEMFStat.MEGA_BYTES
|
| / DiscoverJavaModelFromJavaProjectEMFStat.MEGA_BYTES + "MB"); //$NON-NLS-1$
|
|
|
| getStatistics().getProperties().put(DiscoverJavaModelFromJavaProjectEMFStat.MM_VARIANT,
|
| "Java Composite"); //$NON-NLS-1$
|
| }
|
| return this.statistics;
|
| }
|
|
|
| private boolean generateReport = true;
|
|
|
| public void setGenerateReport(final boolean generateReport) {
|
| this.generateReport = generateReport;
|
| }
|
|
|
| protected boolean getGenerateReport() {
|
| return this.generateReport;
|
| }
|
|
|
| }
|