----------------------------------------------------------------------------
-- Site Plan Model 
--
-- Mar, 1995   (Defined by RoadRobot Team
--		Written by Teresa Goncalves  Joao Paulo Pimentao - UNINOVA)
-- Aug, 1995   (Modified by Teresa Goncalves - UNINOVA
--			modify: EarthMovPlanAct, PavingPlanAct)
----------------------------------------------------------------------------

TYPE CellType = ENUMERATION OF( BridgeCellT, TunnelCellT, ObstacleCellT, 
				ExcavatingCellT, DrainageCellT, PavingCellT, 
				SupplworksCellT );
-- TYPE CellType = ENUMERATION OF( 1, 2, 3, 
--				4, 5, 6, 
--				7 );
END_TYPE;

----------------------------------------------------------------------------
-- Activities --------------------------------------------------------------
----------------------------------------------------------------------------
ENTITY PlanActv
	ABSTRACT SUPERTYPE OF( ONEOF( ArtworksPlanActv, EarthworksPlanActv,
			DrainagePlanActv, PavingPlanActv, SupplworksPlanActv ));
		 precedes,
		 succeeds:       LIST [1:?] OF PlanActv;
END_ENTITY;

ENTITY ArtworksPlanActv
	ABSTRACT SUPERTYPE OF( ONEOF( BridgeConstPlanActv, TunnelConstPlanActv))
	SUBTYPE OF( PlanActv );
END_ENTITY;

ENTITY BridgeConstPlanActv
	SUBTYPE OF( ArtworksPlanActv );
	reqCell:	BridgeConstPlanActv;
END_ENTITY;

ENTITY TunnelConstPlanActv
	SUBTYPE OF( ArtworksPlanActv );
	reqCell:	TunnelConstPlanActv;
END_ENTITY;

ENTITY EarthworksPlanActv
	ABSTRACT SUPERTYPE OF( ONEOF( ObstacleRmPlanActv, EarthMovPlanActv ))
	SUBTYPE OF( PlanActv );
END_ENTITY;

ENTITY ObstacleRmPlanActv
	SUBTYPE OF( EarthworksPlanActv );
	reqCell:	ObstacleRmPlanCell;
END_ENTITY;

ENTITY EarthMovPlanActv
	SUBTYPE OF( EarthworksPlanActv );
	reqCell:	ExcavatingPlanCell;
	profile:	surface_topography;
	geology:  	LIST[0:?] OF subsoil_layer;
END_ENTITY;

ENTITY DrainagePlanActv
	SUBTYPE OF( PlanActv );
	reqCell:	DrainagePlanCell;
END_ENTITY;

ENTITY PavingPlanActv
	ABSTRACT SUPERTYPE OF( ONEOF( BaseCoursePlanActv, BinderCoursePlanActv,
	SurfaceCoursePlanActv))
	SUBTYPE OF( PlanActv );
	reqCell:	PavingPlanCell;
	geometry:	road_geometry_list;
	quality:	quality_parameters;
	paving_material:	asphalt_mixture;
END_ENTITY;

ENTITY BaseCoursePlanActv
	SUBTYPE OF( PavingPlanActv );
END_ENTITY;

ENTITY BinderCoursePlanActv
	SUBTYPE OF( PavingPlanActv );
END_ENTITY;

ENTITY SurfaceCoursePlanActv
	SUBTYPE OF( PavingPlanActv );
END_ENTITY;

ENTITY SupplworksPlanActv
	SUBTYPE OF( PlanActv );
	reqCell:	SupplworksPlanCell;
END_ENTITY;

----------------------------------------------------------------------------
-- Cells -------------------------------------------------------------------
----------------------------------------------------------------------------
TYPE ResourceType = ENUMERATION OF( CellControllerType, CellAdministratorType,
	NonControlled_CellPersonType, ConsumableType, Controlled_CellPersonType,
	UnregulatedEquipmentType, Paver_ToolType, BucketType, HammerType, 
	SingleTruckType, ArticulatedTruckType, TractorScraperType, 
	WeelTractorType, TrackTractorType, WeelLoaderType, TrackLoaderType, 
	WeelHydraulicType, TrackHydraulicType, BackhoeExcavatorType, 
	SoilCompactorType, LandfillCompactorType, ColdPlannerType, 
	RoadReclaimerType, SoilStabilizerType, MechanicalSweeperType, 
	EmulsionSprayType, RoadPaverType, PneumaticRollerType, 
	VibratoryRollerType );
-- TYPE ResourceType = ENUMERATION OF( 1, 2,
--	3, 4, 5,
--	6, 7, 8, 9,
--	10, 11, 12, 
--	13, 14, 15, 16, 
--	17, 18, 19, 
--	20, 21, 22, 
--	23, 24, 25, 
--	26, 27, 28,
--	29 );
END_TYPE;

ENTITY ResourceConstr;
	id:	ResourceType;
	constraint:	INTEGER;
END_ENTITY;

ENTITY PlanCell
	ABSTRACT SUPERTYPE OF( ONEOF( ArtworksPlanCell, EarthworksPlanCell,
			DrainagePlanCell, PavingPlanCell, SupplworksPlanCell ));
	reqResources:	LIST [1:?] OF ResourceConstr;
END_ENTITY;

ENTITY ArtworksPlanCell
	ABSTRACT SUPERTYPE OF( ONEOF( BridgeConstPlanCell, TunnelConstPlanCell))
	SUBTYPE OF( PlanCell );
END_ENTITY;

ENTITY BridgeConstPlanCell
	SUBTYPE OF( ArtworksPlanCell );
END_ENTITY;

ENTITY TunnelConstPlanCell
	SUBTYPE OF( ArtworksPlanCell );
END_ENTITY;

ENTITY EarthworksPlanCell
	ABSTRACT SUPERTYPE OF( ONEOF( ObstacleRmPlanCell, ExcavatingPlanCell ))
	SUBTYPE OF( PlanCell );
END_ENTITY;

ENTITY ObstacleRmPlanCell
	SUBTYPE OF( EarthworksPlanCell );
END_ENTITY;

ENTITY ExcavatingPlanCell
	SUBTYPE OF( EarthworksPlanCell );
END_ENTITY;

ENTITY DrainagePlanCell
	SUBTYPE OF( PlanCell );
END_ENTITY;

ENTITY PavingPlanCell
	SUBTYPE OF( PlanCell );
END_ENTITY;

ENTITY SupplworksPlanCell

	SUBTYPE OF( PlanCell );
END_ENTITY;

----------------------------------------------------------------------------
-- Site Plan Model 
----------------------------------------------------------------------------