|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 21830 (0x5546)
Types: TextFile
Names: »B«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13
└─⟦124ff5788⟧ »DATA«
└─⟦this⟧
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
└─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16
└─⟦6f12a12be⟧ »DATA«
└─⟦this⟧
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
└─⟦d65440be7⟧ »DATA«
└─⟦this⟧
with Action;
with Asa_Definitions;
with Calendar;
with Debug_Tools;
with Directory;
with Gateways;
with Gateway_Object;
with Hierarchy;
with Logger;
with Object_Class;
with Object_Subclass;
with Profile;
with Simple_Status;
with Unix_Definitions;
package body Asa is
Package_Name : constant String := "Asa.";
package Asap renames Asa_Definitions.Properties;
package Dir renames Directory;
package Dcp renames Directory.Control_Point;
package Dna renames Directory.Naming;
package Gwo renames Gateway_Object;
package Hchy renames Hierarchy;
package Ss renames Simple_Status;
package Unix renames Unix_Definitions;
function Must_Raise_Error return Boolean is
use Profile;
begin
return Profile.Reaction = Profile.Propagate or else
Profile.Reaction = Profile.Raise_Error;
end Must_Raise_Error;
procedure Check_Requirement_Name (Requirement_Name : in String;
Action_Id : in Action.Id;
Is_A_Requirement : out Boolean;
Requirement_Object : out Dir.Object;
Requirement_Handle : out Gwo.Handle) is
E : Dir.Error_Status;
Handle : Gwo.Handle;
N : Dna.Name_Status;
Object : Dir.Object;
S : Ss.Condition;
use Asa_Definitions;
use Dna;
begin
Dna.Resolve (Name => Requirement_Name,
The_Object => Object,
Status => N);
if N /= Dna.Successful then
Is_A_Requirement := False;
Requirement_Object := Dir.Nil;
Requirement_Handle := Gwo.Null_Handle;
elsif Dir.Is_Gateway (Object) then
Gwo.Open_Main_Object (Object => Object,
H => Handle,
Update => False,
Action_Id => Action_Id,
Errors => S);
if Ss.Error (S) or else Asap.Class (Handle) /=
Asa_Definitions.Asa_Requirement then
Is_A_Requirement := False;
Requirement_Object := Object;
Requirement_Handle := Gwo.Null_Handle;
else
Is_A_Requirement := True;
Requirement_Object := Object;
Requirement_Handle := Handle;
end if;
end if;
end Check_Requirement_Name;
procedure Check_View_Name (View_Name : in String;
Action_Id : in Action.Id;
Is_A_Combined_View : out Boolean;
View_Object : out Dir.Object) is
E : Dir.Error_Status;
N : Dna.Name_Status;
Object : Dir.Object;
View : Dir.Object;
View_Subclass : Dir.Subclass;
use Dir;
use Dna;
begin
Dna.Resolve (Name => View_Name,
The_Object => Object,
Status => N,
Action_Id => Action_Id);
if N /= Dna.Successful then
Is_A_Combined_View := False;
View_Object := Dir.Nil;
else
if Dcp.Is_World (Object) then
View := Object;
else
Dcp.Parent_World
(The_Object => Object, The_World => View, Status => E);
if E /= Successful then
Is_A_Combined_View := False;
View_Object := Dir.Nil;
end if;
end if;
View_Subclass := Dir.Get_Subclass (View);
Is_A_Combined_View := View_Subclass =
Object_Subclass.Combined_View_Subclass;
View_Object := View;
end if;
end Check_View_Name;
function Root_Of (Gateway : in Dir.Object; Action_Id : in Action.Id)
return Dir.Object is
E : Dir.Error_Status;
Gateway_Data : Dir.Statistics.Object_Data;
Result : Dir.Object;
use Dir;
begin
Result := Gateway;
loop
Dir.Statistics.Get_Object_Data (The_Object => Result,
The_Data => Gateway_Data,
Status => E,
Action_Id => Action_Id);
exit when Dir.Get_Class
(Dir.Statistics.Object_Parent (Gateway_Data)) =
Object_Class.Library;
Result := Dir.Statistics.Object_Parent (Gateway_Data);
end loop;
return Result;
end Root_Of;
procedure Create_Requirement (For_Object : in String := "<CURSOR>";
Name : in String := ">>Requirement Name<<";
Kind : in Requirements.Non_Functional :=
Requirements.Performance;
Comments : in String := "";
Work_Order : in String := "<DEFAULT>";
Response : in String := "<PROFILE>") is
Subprogram_Name : constant String := "Create_Requirement";
S : Ss.Condition;
The_Action : Action.Id;
The_State : Gateways.State;
begin
Profile.Set (Response, S);
The_Action := Action.Start;
Gateways.Initialize (The_State => The_State,
Action_Id => The_Action,
Work_Order => Work_Order);
Gateways.Create (In_Gateway => For_Object,
Requirement_Name => Name,
Requirement_Kind => Kind,
Requirement_Text => "",
Comments => Comments,
The_State => The_State);
Gateways.Finalize (The_State);
Action.Finish (The_Action, Do_Commit => True);
exception
when Profile.Error =>
Logger.Error (Package_Name & Subprogram_Name &
" is quitting after errors",
Raise_Error => Must_Raise_Error);
when others =>
Logger.Error (Package_Name & Subprogram_Name &
" aborted by exception " &
Debug_Tools.Get_Exception_Name,
Raise_Error => Must_Raise_Error);
Action.Finish (The_Action, Do_Commit => False);
end Create_Requirement;
procedure Copy_Requirement (Requirement : in String := "<REGION>";
To_Object : in String := "<CURSOR>";
Comments : in String := "";
Work_Order : in String := "<DEFAULT>";
Response : in String := "<PROFILE>") is
Subprogram_Name : constant String := "Copy_Requirement";
Gateway : Gwo.Handle;
Gateway_Object : Dir.Object;
Is_A_Requirement : Boolean;
S : Ss.Condition;
The_Action : Action.Id := Action.Start;
The_State : Gateways.State;
begin
Profile.Set (Response, S);
Check_Requirement_Name (Requirement_Name => Requirement,
Action_Id => The_Action,
Is_A_Requirement => Is_A_Requirement,
Requirement_Object => Gateway_Object,
Requirement_Handle => Gateway);
if not Is_A_Requirement then
if Dir.Is_Nil (Gateway_Object) then
Logger.Negative (Requirement & " is not a gateway of class " &
Asa_Definitions.Gateway_Class'Image
(Asa_Definitions.Asa_Requirement));
else
Logger.Negative (Dna.Get_Full_Name (Gateway_Object) &
" is not a gateway of class " &
Asa_Definitions.Gateway_Class'Image
(Asa_Definitions.Asa_Requirement));
end if;
end if;
Gateways.Initialize (The_State => The_State,
Action_Id => The_Action,
Work_Order => Work_Order);
Gateways.Create (In_Gateway => To_Object,
Requirement_Name =>
Dna.Get_Simple_Name (Gateway_Object),
Requirement_Kind =>
Asap.Asa_Requirement_Kind (Gateway),
Requirement_Text =>
Asap.Asa_Requirement_Text (Gateway),
Comments => Comments,
The_State => The_State);
Gateways.Finalize (The_State);
Action.Finish (The_Action, Do_Commit => True);
exception
when Profile.Error =>
Logger.Error (Package_Name & Subprogram_Name &
" is quitting after errors",
Raise_Error => Must_Raise_Error);
when others =>
Logger.Error (Package_Name & Subprogram_Name &
" aborted by exception " &
Debug_Tools.Get_Exception_Name,
Raise_Error => Must_Raise_Error);
Action.Finish (The_Action, Do_Commit => False);
end Copy_Requirement;
procedure Move_Requirement (Requirement : in String := "<REGION>";
To_Object : in String := "<CURSOR>";
Comments : in String := "";
Work_Order : in String := "<DEFAULT>";
Response : in String := "<PROFILE>") is
Subprogram_Name : constant String := "Move_Requirement";
Gateway : Gwo.Handle;
Gateway_Object : Dir.Object;
Is_A_Requirement : Boolean;
S : Ss.Condition;
The_Action : Action.Id := Action.Start;
The_State : Gateways.State;
begin
Profile.Set (Response, S);
Check_Requirement_Name (Requirement_Name => Requirement,
Action_Id => The_Action,
Is_A_Requirement => Is_A_Requirement,
Requirement_Object => Gateway_Object,
Requirement_Handle => Gateway);
if not Is_A_Requirement then
if Dir.Is_Nil (Gateway_Object) then
Logger.Negative (Requirement & " is not a gateway of class " &
Asa_Definitions.Gateway_Class'Image
(Asa_Definitions.Asa_Requirement));
else
Logger.Negative (Dna.Get_Full_Name (Gateway_Object) &
" is not a gateway of class " &
Asa_Definitions.Gateway_Class'Image
(Asa_Definitions.Asa_Requirement));
end if;
end if;
Gateways.Initialize (The_State => The_State,
Action_Id => The_Action,
Work_Order => Work_Order);
Gateways.Create (In_Gateway => To_Object,
Requirement_Name =>
Dna.Get_Simple_Name (Gateway_Object),
Requirement_Kind =>
Asap.Asa_Requirement_Kind (Gateway),
Requirement_Text =>
Asap.Asa_Requirement_Text (Gateway),
Comments => Comments,
The_State => The_State);
Gateways.Destroy (Gateway_Name => Dna.Get_Full_Name (Gateway_Object),
Comments => Comments,
The_State => The_State);
Gateways.Finalize (The_State);
Action.Finish (The_Action, Do_Commit => True);
exception
when Profile.Error =>
Logger.Error (Package_Name & Subprogram_Name &
" is quitting after errors",
Raise_Error => Must_Raise_Error);
when others =>
Logger.Error (Package_Name & Subprogram_Name &
" aborted by exception " &
Debug_Tools.Get_Exception_Name,
Raise_Error => Must_Raise_Error);
Action.Finish (The_Action, Do_Commit => False);
end Move_Requirement;
procedure Accept_Changes (In_Object : in String := "<CURSOR>";
Comments : in String := "";
Work_Order : in String := "<DEFAULT>";
Response : in String := "<PROFILE>") is
Subprogram_Name : constant String := "Accept_Changes";
Build_Time : Calendar.Time;
E : Dir.Error_Status;
Enclosing_Library : Dir.Object;
Gateway : Gwo.Handle;
Gateway_Object : Dir.Object;
Root_Iterator : Hchy.Module_Iterator;
Root_Module : Hchy.Module;
S : Ss.Condition;
The_Action : Action.Id := Action.Start;
The_State : Gateways.State;
begin
Profile.Set (Response, S);
--
-- Open the specified gateway.
--
Gwo.Open_Main_Object (Object => In_Object,
H => Gateway,
Update => False,
Action_Id => The_Action,
Errors => S);
Logger.Status (S);
Gateway_Object := Gwo.Directory_Object (Gateway);
Dcp.Parent_Library (The_Object => Gateway_Object,
The_Library => Enclosing_Library,
Status => E);
Logger.Status (E);
declare
Host : constant String := Asap.Data_Host (Gateway);
Model : constant String := Asap.Data_Context (Gateway) &
Unix.Context_Separator &
Asap.Data_Name (Gateway);
begin
--
-- Compute module hierarchy for the associated model.
--
Logger.Note ("Building module hierarchy for model " & Model);
Hchy.Build (Model => Model,
Host => Host,
Root => Root_Module,
Build_Time => Build_Time);
Root_Iterator := Hchy.Make (Root_Module);
Gwo.Close (Gateway, Errors => S);
Logger.Status (S);
--
-- Find the root of the gateway tree.
--
Gateway_Object := Root_Of (Gateway => Gateway_Object,
Action_Id => The_Action);
Gateways.Initialize (The_State => The_State,
Action_Id => The_Action,
Work_Order => Work_Order);
--
-- Delete those gateways that no longer have corresponding
-- modules.
--
Gateways.Reduce (Gateway_Name => Dna.Get_Full_Name (Gateway_Object),
Candidate_Modules => Root_Iterator,
Comments => Comments,
The_State => The_State);
--
-- Create gateways for the new modules.
--
Gateways.Augment
(For_Module => Root_Module,
In_Library => Dna.Get_Full_Name (Enclosing_Library),
Host => Host,
Model => Model,
Update_Time => Build_Time,
Comments => Comments,
The_State => The_State);
Gateways.Finalize (The_State);
Action.Finish (The_Action, Do_Commit => True);
end;
exception
when Profile.Error =>
Logger.Error (Package_Name & Subprogram_Name &
" is quitting after errors",
Raise_Error => Must_Raise_Error);
when others =>
Logger.Error (Package_Name & Subprogram_Name &
" aborted by exception " &
Debug_Tools.Get_Exception_Name,
Raise_Error => Must_Raise_Error);
Action.Finish (The_Action, Do_Commit => False);
end Accept_Changes;
procedure Create_Model (Model : in String := ">>ASA Model Name<<";
Host : in String := ">>Machine Name<<";
Into_View : in String := "<CURSOR>";
Comments : in String := "";
Work_Order : in String := "<DEFAULT>";
Response : in String := "<PROFILE>") is
Subprogram_Name : constant String := "Create_Model";
S : Ss.Condition;
Build_Time : Calendar.Time;
Is_A_Combined_View : Boolean;
Root_Module : Hchy.Module;
The_Action : Action.Id := Action.Start;
The_State : Gateways.State;
View : Dir.Object;
use Dir;
begin
Profile.Set (Response, S);
Check_View_Name (View_Name => Into_View,
Action_Id => The_Action,
Is_A_Combined_View => Is_A_Combined_View,
View_Object => View);
if not Is_A_Combined_View then
if Dir.Is_Nil (View) then
Logger.Negative (Into_View & " is not a combined view");
else
Logger.Negative (Dna.Get_Full_Name (View) &
" is not a combined view");
end if;
end if;
Root_Module := Hchy.Make (Identifier => Unix.Simple_Name (Model));
Gateways.Initialize (The_State => The_State,
Action_Id => The_Action,
Work_Order => Work_Order);
Gateways.Create (For_Module => Root_Module,
In_Library => Dna.Get_Full_Name (View) & ".Units",
Host => Host,
Model => Model,
Update_Time => Build_Time,
Comments => Comments,
The_State => The_State);
Gateways.Finalize (The_State);
Action.Finish (The_Action, Do_Commit => True);
exception
when Profile.Error =>
Logger.Error (Package_Name & Subprogram_Name &
" is quitting after errors",
Raise_Error => Must_Raise_Error);
when others =>
Logger.Error (Package_Name & Subprogram_Name &
" aborted by exception " &
Debug_Tools.Get_Exception_Name,
Raise_Error => Must_Raise_Error);
Action.Finish (The_Action, Do_Commit => False);
end Create_Model;
procedure Import_Model (Model : in String := ">>ASA Model Name<<";
Host : in String := ">>Machine Name<<";
Into_View : in String := "<CURSOR>";
Comments : in String := "";
Work_Order : in String := "<DEFAULT>";
Response : in String := "<PROFILE>") is
Subprogram_Name : constant String := "Import_Model";
S : Ss.Condition;
Build_Time : Calendar.Time;
Is_A_Combined_View : Boolean;
Root_Module : Hchy.Module;
The_Action : Action.Id := Action.Start;
The_State : Gateways.State;
View : Dir.Object;
use Dir;
begin
Profile.Set (Response, S);
Check_View_Name (View_Name => Into_View,
Action_Id => The_Action,
Is_A_Combined_View => Is_A_Combined_View,
View_Object => View);
if not Is_A_Combined_View then
if Dir.Is_Nil (View) then
Logger.Negative (Into_View & " is not a combined view");
else
Logger.Negative (Dna.Get_Full_Name (View) &
" is not a combined view");
end if;
end if;
Logger.Note ("Building module hierarchy for model " & Model);
Hchy.Build (Model => Model,
Host => Host,
Root => Root_Module,
Build_Time => Build_Time);
Gateways.Initialize (The_State => The_State,
Action_Id => The_Action,
Work_Order => Work_Order);
Gateways.Create (For_Module => Root_Module,
In_Library => Dna.Get_Full_Name (View) & ".Units",
Host => Host,
Model => Model,
Update_Time => Build_Time,
Comments => Comments,
The_State => The_State);
Gateways.Finalize (The_State);
Action.Finish (The_Action, Do_Commit => True);
exception
when Profile.Error =>
Logger.Error (Package_Name & Subprogram_Name &
" is quitting after errors",
Raise_Error => Must_Raise_Error);
when others =>
Logger.Error (Package_Name & Subprogram_Name &
" aborted by exception " &
Debug_Tools.Get_Exception_Name,
Raise_Error => Must_Raise_Error);
Action.Finish (The_Action, Do_Commit => False);
end Import_Model;
end Asa;