-- ******************************************************************************
-- Copyright (c) 2007 INRIA. 
-- 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: 
-- 	INRIA - Initial implementation
--  
-- ******************************************************************************

-- @name	Trace 
-- @version	1.0
-- @domains	Execution trace
-- @authors	Hugo Bruneliere (hugo.bruneliere <at> gmail.com)
-- @date	2007/03/26	
-- @description	This metamodel allows defining simple trace models storing different operation execution information related to database access and CPU runtime.

package Trace {
	
	class Trace {
		reference levels[*] ordered container: Level oppositeOf trace;		
		attribute name : String;
	}
	
	class Level {
		reference trace : Trace oppositeOf levels;
		reference calls[*] ordered container: Call oppositeOf level;
	}
	
	class Call {
		reference level : Level oppositeOf calls;
		reference indexes[1-*] ordered container: Index;
		attribute methodName: String;
		attribute DBAccessesNumber: Integer;
		attribute DBRowsNumber: Integer; 
		attribute CPUTime: Integer;
	}
	
	class Index {
		attribute value: Integer;
	}
	
}

package PrimitiveTypes {
	datatype Boolean;
	datatype Integer;
	datatype String;
}
