----------------------------------------------------------------------- -- List_User -- Example of queries -- Copyright (C) 2010, 2011, 2018 Stephane Carrez -- Written by Stephane Carrez (Stephane.Carrez@gmail.com) -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. ----------------------------------------------------------------------- with Samples.User.Model; with ADO; with ADO.Drivers; with ADO.Queries; with ADO.Sessions; with ADO.Sessions.Factory; with Util.Log.Loggers; with Ada.Text_IO; with Ada.Exceptions; with Ada.Strings.Unbounded; procedure List_User is use Ada.Strings.Unbounded; use Samples.User.Model; Factory : ADO.Sessions.Factory.Session_Factory; begin Util.Log.Loggers.Initialize ("samples.properties"); -- Initialize the database drivers. ADO.Drivers.Initialize ("samples.properties"); -- Initialize the session factory to connect to the -- database defined by 'ado.database' property. Factory.Create (ADO.Drivers.Get_Config ("ado.database")); declare DB : ADO.Sessions.Session := Factory.Get_Session; Context : ADO.Queries.Context; Users : Samples.User.Model.User_Info_Vector; begin -- Execute the 'Query_User_List' query (db/samples/user-list.xml, query 'user-list'). Context.Set_Query (Samples.User.Model.Query_User_List); List (Object => Users, Session => DB, Context => Context); -- Print the list if Users.Is_Empty then Ada.Text_IO.Put_Line ("User info list is empty."); Ada.Text_IO.Put_Line ("Use the 'add_user' to add users in the table."); else declare Iter : Samples.User.Model.User_Info_Vectors.Cursor := Users.First; User : Samples.User.Model.User_Info; begin while Samples.User.Model.User_Info_Vectors.Has_Element (Iter) loop User := Samples.User.Model.User_Info_Vectors.Element (Iter); Ada.Text_IO.Put (ADO.Identifier'Image (User.Id)); Ada.Text_IO.Set_Col (10); Ada.Text_IO.Put (To_String (User.Name)); Ada.Text_IO.Set_Col (60); Ada.Text_IO.Put_Line (To_String (User.Email)); Samples.User.Model.User_Info_Vectors.Next (Iter); end loop; end; end if; end; exception when E : ADO.Drivers.Database_Error | ADO.Sessions.Connection_Error => Ada.Text_IO.Put_Line ("Cannot connect to database: " & Ada.Exceptions.Exception_Message (E)); end List_User;