--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2016 École Polytechnique de Montréal
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.tmf.core.statesystem;
+
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * Message bundle for org.eclipse.tracecompass.tmf.core.statesystem
+ *
+ * @author Geneviève Bastien
+ * @since 2.0
+ */
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.tracecompass.tmf.core.statesystem.messages"; //$NON-NLS-1$
+
+ /**
+ * Analysis not executed text
+ */
+ public static @Nullable String TmfStateSystemAnalysisModule_PropertiesAnalysisNotExecuted;
+ /**
+ * Backend property text
+ */
+ public static @Nullable String TmfStateSystemAnalysisModule_PropertiesBackend;
+ /**
+ * File size property text
+ */
+ public static @Nullable String TmfStateSystemAnalysisModule_PropertiesFileSize;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
import java.io.File;
import java.io.IOException;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import java.util.concurrent.CountDownLatch;
+import org.apache.commons.io.FileUtils;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.common.core.NonNullUtils;
import org.eclipse.tracecompass.internal.tmf.core.statesystem.backends.partial.PartialHistoryBackend;
import org.eclipse.tracecompass.internal.tmf.core.statesystem.backends.partial.PartialStateSystem;
import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
import org.eclipse.tracecompass.tmf.core.analysis.TmfAbstractAnalysisModule;
import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException;
+import org.eclipse.tracecompass.tmf.core.project.model.ITmfPropertiesProvider;
import org.eclipse.tracecompass.tmf.core.request.ITmfEventRequest;
import org.eclipse.tracecompass.tmf.core.request.TmfEventRequest;
import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
* @author Geneviève Bastien
*/
public abstract class TmfStateSystemAnalysisModule extends TmfAbstractAnalysisModule
- implements ITmfAnalysisModuleWithStateSystems {
+ implements ITmfAnalysisModuleWithStateSystems, ITmfPropertiesProvider {
private static final String EXTENSION = ".ht"; //$NON-NLS-1$
// TmfAbstractAnalysisModule
// ------------------------------------------------------------------------
+ private @Nullable File getSsFile() {
+ ITmfTrace trace = getTrace();
+ if (trace == null) {
+ return null;
+ }
+ String directory = TmfTraceManager.getSupplementaryFileDir(trace);
+ File htFile = new File(directory + getSsFileName());
+ return htFile;
+ }
+
@Override
protected boolean executeAnalysis(@Nullable final IProgressMonitor monitor) {
IProgressMonitor mon = (monitor == null ? new NullProgressMonitor() : monitor);
try {
/* Get the state system according to backend */
StateSystemBackendType backend = getBackendType();
- String directory;
- File htFile;
+
ITmfTrace trace = getTrace();
if (trace == null) {
return false;
}
switch (backend) {
- case FULL:
- directory = TmfTraceManager.getSupplementaryFileDir(trace);
- htFile = new File(directory + getSsFileName());
+ case FULL: {
+ File htFile = getSsFile();
+ if (htFile == null) {
+ return false;
+ }
createFullHistory(id, provider, htFile);
+ }
break;
- case PARTIAL:
- directory = TmfTraceManager.getSupplementaryFileDir(trace);
- htFile = new File(directory + getSsFileName());
+ case PARTIAL: {
+ File htFile = getSsFile();
+ if (htFile == null) {
+ return false;
+ }
createPartialHistory(id, provider, htFile);
+ }
break;
case INMEM:
createInMemoryHistory(id, provider);
private static boolean isCompleteTrace(ITmfTrace trace) {
return !(trace instanceof ITmfTraceCompleteness) || ((ITmfTraceCompleteness) trace).isComplete();
}
+
+ // ------------------------------------------------------------------------
+ // ITmfPropertiesProvider
+ // ------------------------------------------------------------------------
+
+ /**
+ * @since 2.0
+ */
+ @Override
+ public @NonNull Map<@NonNull String, @NonNull String> getProperties() {
+ Map<@NonNull String, @NonNull String> properties = new HashMap<>();
+
+ StateSystemBackendType backend = getBackendType();
+ properties.put(NonNullUtils.checkNotNull(Messages.TmfStateSystemAnalysisModule_PropertiesBackend), NonNullUtils.checkNotNull(backend.name()));
+ switch (backend) {
+ case FULL:
+ case PARTIAL:
+ File htFile = getSsFile();
+ if (htFile != null) {
+ if (htFile.exists()) {
+ properties.put(NonNullUtils.checkNotNull(Messages.TmfStateSystemAnalysisModule_PropertiesFileSize), FileUtils.byteCountToDisplaySize(htFile.length()));
+ } else {
+ properties.put(NonNullUtils.checkNotNull(Messages.TmfStateSystemAnalysisModule_PropertiesFileSize), NonNullUtils.checkNotNull(Messages.TmfStateSystemAnalysisModule_PropertiesAnalysisNotExecuted));
+ }
+ }
+ break;
+ case INMEM:
+ case NULL:
+ default:
+ break;
+
+ }
+ return properties;
+ }
}