awa_2.4.0_59135a52/awa/plugins/awa-storages/src/awa-storages.adb

 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
-----------------------------------------------------------------------
--  awa-storages -- Storage module
--  Copyright (C) 2012, 2016 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 Ada.Directories;
package body AWA.Storages is

   --  ------------------------------
   --  Get the path to get access to the file.
   --  ------------------------------
   function Get_Path (File : in Storage_File) return String is
   begin
      return Ada.Strings.Unbounded.To_String (File.Path);
   end Get_Path;

   --  ------------------------------
   --  Set the file path for the FILE, URL, CACHE or TMP storage.
   --  ------------------------------
   procedure Set (File : in out Storage_File;
                  Path : in String) is
   begin
      File.Path := Ada.Strings.Unbounded.To_Unbounded_String (Path);
   end Set;

   --  ------------------------------
   --  Set the file database storage identifier.
   --  ------------------------------
   procedure Set (File      : in out Storage_File;
                  Workspace : in ADO.Identifier;
                  Store     : in ADO.Identifier) is
   begin
      File.Workspace := Workspace;
      File.Store     := Store;
   end Set;

   overriding
   procedure Finalize (File : in out Storage_File) is
   begin
      if File.Storage = TMP and then Ada.Strings.Unbounded.Length (File.Path) > 0 then
         declare
            Path : constant String := Ada.Strings.Unbounded.To_String (File.Path);
         begin
            if Ada.Directories.Exists (Path) then
               Ada.Directories.Delete_File (Path);
            end if;
         end;
      end if;
   end Finalize;

end AWA.Storages;