use of org.eclipse.titan.log.viewer.parsers.data.LogRecord in project titan.EclipsePlug-ins by eclipse.
the class ValueReader method getLogRecord.
private LogRecord getLogRecord(final URI logFilePath, final long offset, final int length) throws IOException, ParseException {
RandomAccessFile random = null;
LogRecord logRecord = null;
try {
random = new RandomAccessFile(new File(logFilePath), MSCConstants.READ_ONLY);
random.seek(offset);
byte[] buffer = new byte[length];
random.read(buffer, 0, length);
RecordParser recordParser = new RecordParser();
logRecord = recordParser.parse(buffer);
} finally {
IOUtils.closeQuietly(random);
}
return logRecord;
}
use of org.eclipse.titan.log.viewer.parsers.data.LogRecord in project titan.EclipsePlug-ins by eclipse.
the class TextTableView method addListeners.
private void addListeners() {
this.table.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent e) {
if (logFileMetaData == null) {
return;
}
final IFile logFile = logFileMetaData.getLogfile();
if (logFile == null) {
return;
}
if (LogFileCacheHandler.hasLogFileChanged(logFile)) {
LogFileCacheHandler.handleLogFileChange(logFile);
return;
}
setContentDescription(TextTableView.this.logFileMetaData.getProjectRelativePath() + " [" + (TextTableView.this.table.getSelectionIndex() + 1) + "/" + TextTableView.this.filteredLogReader.size() + "]");
if (e.getSource() instanceof Table) {
updateSelection((Table) e.getSource());
}
}
});
this.table.addMouseListener(new MouseAdapter() {
@Override
public void mouseDoubleClick(final MouseEvent e) {
if (logFileMetaData == null) {
return;
}
final IFile logFile = logFileMetaData.getLogfile();
if (logFile == null) {
return;
}
if (LogFileCacheHandler.hasLogFileChanged(logFile)) {
LogFileCacheHandler.handleLogFileChange(logFile);
return;
}
if (!(e.getSource() instanceof Table)) {
return;
}
Table table = (Table) e.getSource();
int index = table.getSelectionIndex();
if (index < 0 || index >= table.getItemCount()) {
return;
}
TableItem tableItem = table.getItem(index);
Object data = tableItem.getData();
if (data instanceof LogRecord) {
LogRecord logrecord = (LogRecord) data;
EventObject eventObject = createEventObject(logrecord);
// $NON-NLS-1$
TextTableView.this.eventSelection = new EventSelection(eventObject, "");
TextTableView.this.openValueViewMenuAction.run();
silentOpenSourceViewMenuAction.selectionChanged(eventSelection);
silentOpenSourceViewMenuAction.run();
} else {
TextTableView.this.eventSelection = new EventSelection(null, null);
}
fireSelectionChangeEvent();
}
});
this.table.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(final KeyEvent e) {
int moves = e.keyCode;
if (moves != SWT.CR) {
return;
}
if (e.getSource() instanceof Table) {
Table table = (Table) e.getSource();
TableItem tableItem = table.getItem(table.getSelectionIndex());
Object data = tableItem.getData();
if (data instanceof LogRecord) {
LogRecord logrecord = (LogRecord) data;
EventObject eventObject = createEventObject(logrecord);
// $NON-NLS-1$
TextTableView.this.eventSelection = new EventSelection(eventObject, "");
} else {
TextTableView.this.eventSelection = new EventSelection(null, null);
}
}
fireSelectionChangeEvent();
TextTableView.this.openValueViewMenuAction.run();
silentOpenSourceViewMenuAction.selectionChanged(eventSelection);
silentOpenSourceViewMenuAction.run();
}
});
}
use of org.eclipse.titan.log.viewer.parsers.data.LogRecord in project titan.EclipsePlug-ins by eclipse.
the class TextTableView method getSelectedRecord.
/**
* Returns the currently selected record.
* @return The log record or null if no record is selected.
*/
public LogRecord getSelectedRecord() {
int index = table.getSelectionIndex();
if (index == -1) {
return null;
}
TableItem selectedItem = table.getItem(index);
Object data = selectedItem.getData();
if (data instanceof LogRecord) {
return (LogRecord) data;
}
return null;
}
use of org.eclipse.titan.log.viewer.parsers.data.LogRecord in project titan.EclipsePlug-ins by eclipse.
the class OpenSourceViewMenuAction method run.
@Override
public void run() {
if (this.eventSelection == null) {
return;
}
IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
LogFileMetaData logFileMetaData;
logFileMetaData = this.view.getLogFileMetaData();
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRoot root = workspace.getRoot();
IProject project = root.getProject(logFileMetaData.getProjectName());
IFile logFile = project.getFile(logFileMetaData.getProjectRelativePath().substring(logFileMetaData.getProjectName().length() + 1));
if (!logFile.exists()) {
IViewReference[] viewReferences = activePage.getViewReferences();
ActionUtils.closeAssociatedViews(activePage, viewReferences, logFile);
// $NON-NLS-1$
TitanLogExceptionHandler.handleException(new UserException("The log file could not be found.\n Please perform the Open Text Table action again."));
return;
}
if (LogFileCacheHandler.hasLogFileChanged(logFile)) {
LogFileCacheHandler.handleLogFileChange(logFile);
return;
}
EventObject eventObject = this.eventSelection.getEventObject();
String testCase = this.eventSelection.getTestCaseName();
if ((eventObject == null) || (testCase == null)) {
return;
}
// get value
LogRecord logrecord;
try {
logrecord = ValueReader.getInstance().readLogRecordFromLogFile(logFileMetaData.getFilePath(), eventObject);
} catch (Exception e) {
ErrorReporter.logExceptionStackTrace(e);
// $NON-NLS-1$
TitanLogExceptionHandler.handleException(new TechnicalException(Messages.getString("MSCView.8")));
return;
}
SourceInformation sourceInformation = null;
try {
sourceInformation = SourceInformation.createInstance(logrecord.getSourceInformation());
} catch (InvalidSourceInformationException e) {
if (!silent) {
String setting = logFileMetaData.getOptionsSettings("SourceInfoFormat");
if (setting == null) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
MessageDialog.openError(null, "Error opening source", // $NON-NLS-1$
"This log file is not generated with source location information inserted. And it really does not seem to contain source location information");
}
});
} else {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
// $NON-NLS-1$
MessageDialog.openError(null, "Error opening source", "This log record does not seem to contain source location information");
}
});
}
}
return;
}
final String fileName = sourceInformation.getSourceFileName();
if (fileName == null) {
view.getViewSite().getActionBars().getStatusLineManager().setErrorMessage("The name of the target file could not be extracted");
return;
}
IFile targetFile;
if (lastFilename != null && lastFilename.equals(fileName) && lastPath != null) {
IFile[] files = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocationURI(lastPath);
if (files.length == 0) {
view.getViewSite().getActionBars().getStatusLineManager().setErrorMessage("The file `" + lastFilename + "' could not be found");
setLastFilename(null);
return;
}
targetFile = files[0];
} else {
targetFile = OpenSourceAction.findSourceFile(project, fileName);
if (targetFile == null) {
view.getViewSite().getActionBars().getStatusLineManager().setErrorMessage("The file `" + fileName + "' could not be found");
return;
}
setLastFilename(fileName);
setLastPath(targetFile.getLocationURI());
}
OpenSourceAction.openEditor(targetFile, sourceInformation.getLineNumber(), view, forceEditorOpening);
}
use of org.eclipse.titan.log.viewer.parsers.data.LogRecord in project titan.EclipsePlug-ins by eclipse.
the class OpenValueViewMenuAction method run.
@Override
public void run() {
if (this.eventSelection == null) {
return;
}
IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
LogFileMetaData logFileMetaData;
if (this.view instanceof MSCView) {
logFileMetaData = ((MSCView) this.view).getLogFileMetaData();
} else if (this.view instanceof TextTableView) {
logFileMetaData = ((TextTableView) this.view).getLogFileMetaData();
} else {
return;
}
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRoot root = workspace.getRoot();
IProject project = root.getProject(logFileMetaData.getProjectName());
IFile logFile = project.getFile(logFileMetaData.getProjectRelativePath().substring(logFileMetaData.getProjectName().length() + 1));
if (!logFile.exists()) {
IViewReference[] viewReferences = activePage.getViewReferences();
ActionUtils.closeAssociatedViews(activePage, viewReferences, logFile);
if (this.view instanceof TextTableView) {
// $NON-NLS-1$
TitanLogExceptionHandler.handleException(new UserException("The log file could not be found.\n Please perform the Open Text Table action again."));
} else {
// $NON-NLS-1$
TitanLogExceptionHandler.handleException(new UserException(Messages.getString("OpenValueViewMenuAction.1")));
}
return;
}
if (LogFileCacheHandler.hasLogFileChanged(logFile)) {
LogFileCacheHandler.handleLogFileChange(logFile);
return;
}
DetailsView detailsview = (DetailsView) activePage.findView(Constants.DETAILS_VIEW_ID);
if (detailsview == null && !forceEditorOpening) {
return;
}
if (forceEditorOpening) {
try {
detailsview = (DetailsView) activePage.showView(Constants.DETAILS_VIEW_ID);
} catch (PartInitException e) {
ErrorReporter.logExceptionStackTrace(e);
// $NON-NLS-1$
TitanLogExceptionHandler.handleException(new TechnicalException(Messages.getString("MSCView.1") + e.getMessage()));
return;
}
}
// pass log file meta data
detailsview.setLogFileMetaData(logFileMetaData);
EventObject eventObject = this.eventSelection.getEventObject();
String testCase = this.eventSelection.getTestCaseName();
if ((eventObject == null) || (testCase == null)) {
return;
}
// get value
LogRecord logrecord;
try {
logrecord = ValueReader.getInstance().readLogRecordFromLogFile(logFileMetaData.getFilePath(), eventObject);
} catch (final IOException e) {
ErrorReporter.logExceptionStackTrace(e);
// $NON-NLS-1$
TitanLogExceptionHandler.handleException(new TechnicalException(Messages.getString("MSCView.8")));
return;
} catch (final ParseException e) {
ErrorReporter.logExceptionStackTrace(e);
// $NON-NLS-1$
TitanLogExceptionHandler.handleException(new TechnicalException(Messages.getString("MSCView.8")));
return;
}
String message = logrecord.getMessage();
DetailData detailData = new DetailData(eventObject.getName(), eventObject.getPort(), message, testCase, eventObject.getEventType(), logrecord.getSourceInformation());
detailsview.setData(detailData, false);
detailsview.setFocus();
}
Aggregations