/******************************************************************************* * Copyright (c) 2013 Red Hat, Inc. * 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 * * Contributors: * Red Hat initial API and implementation *******************************************************************************/ package org.eclipse.linuxtools.internal.perf.handlers; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.sql.Date; import java.text.DateFormat; import org.eclipse.core.runtime.IPath; import org.eclipse.linuxtools.internal.perf.IPerfData; import org.eclipse.linuxtools.internal.perf.PerfPlugin; import org.eclipse.linuxtools.internal.perf.ui.StatView; import org.eclipse.osgi.util.NLS; import org.eclipse.ui.IEditorLauncher; /** * Class for handling opening of perf stat data files. */ public class PerfStatDataOpenHandler implements IEditorLauncher { private static final String TITLE_EXCERPT = "Performance counter stats for"; //$NON-NLS-1$ @Override public void open(IPath file) { File statFile = file.toFile(); try (BufferedReader fileReader = new BufferedReader(new FileReader(statFile))) { final StringBuilder contents = new StringBuilder(); final StringBuilder title = new StringBuilder(); String line; // read file contents while ((line = fileReader.readLine()) != null) { // set data title if (title.length() == 0 && line.contains(TITLE_EXCERPT)) { title.append(line); } contents.append(line); contents.append("\n"); //$NON-NLS-1$ } // construct basic title if none was found in the file if (title.length() == 0) { title.append(NLS.bind(Messages.PerfEditorLauncher_stat_title, statFile.getName())); } final String timestamp = DateFormat.getInstance().format(new Date(statFile.lastModified())); PerfPlugin.getDefault().setStatData(new IPerfData() { @Override public String getTitle() { return title.toString() + " (" + timestamp + ")"; //$NON-NLS-1$ //$NON-NLS-2$ } @Override public String getPerfData() { return contents.toString(); } }); StatView.refreshView(); } catch (FileNotFoundException e) { PerfPlugin.getDefault().openError(e, NLS.bind(Messages.PerfEditorLauncher_file_dne_error, statFile.getName())); } catch (IOException e) { PerfPlugin.getDefault().openError(e, NLS.bind(Messages.PerfEditorLauncher_file_read_error, statFile.getName())); } } }