DrillHoles.h

// DrillHoles.h
//
// Author David Barrett-Lennard
// (C)opyright Cedanet Pty Ltd 2017

@import "lxOperation.h"
@import "Ceda/cxObject/Guid2.h"

namespace drillhole
{
    //$typedef+ ceda::MGuid TGeologyIntervalGuid;
    //$typedef+ ceda::MGuid THoleGuid;
    //$typedef+ ceda::MGuid TLocationGuid;

    /*
    (40000 records)
    GeologyIntervalGuid	                    HoleGuid	                         DepthFrom DepthTo Value1 Value2
    E623AB6F-61A4-48B1-AC9A-F77B0B5872D3	33F12B38-6789-4475-9516-35A1E44D09C4	0	2	E623A	B6F-6
    C43A3DF3-62F9-494F-A242-B3F1F3B74732	33F12B38-6789-4475-9516-35A1E44D09C4	2	4	C43A3	DF3-6
    15A6126A-E5B4-4C2B-AE31-4B62B398551D	33F12B38-6789-4475-9516-35A1E44D09C4	4	6	15A61	26A-E
    4A0AF3AF-8416-4224-A14E-CEEB808859F2	33F12B38-6789-4475-9516-35A1E44D09C4	6	8	4A0AF	3AF-8
    13AA86CE-29F0-494E-BEA7-53A94D1910C9	33F12B38-6789-4475-9516-35A1E44D09C4	8	10	13AA8	6CE-2
    BE7D9BD2-798A-4050-81C3-EA7F46EAE5C0	33F12B38-6789-4475-9516-35A1E44D09C4	10	12	BE7D9	BD2-7
    AA54CB5B-3695-44F3-A7CE-D6D3F66587D0	33F12B38-6789-4475-9516-35A1E44D09C4	12	14	AA54C	B5B-3
    4E80F337-5D5F-4090-8C3F-295E6AF741A8	33F12B38-6789-4475-9516-35A1E44D09C4	14	16	4E80F	337-5
    47AA3B73-DBBB-4C2D-AA39-B54DD0DDAFAF	33F12B38-6789-4475-9516-35A1E44D09C4	16	18	47AA3	B73-D
    97883EDC-98A5-4FCA-AEA5-561FFF2A9374	33F12B38-6789-4475-9516-35A1E44D09C4	18	20	97883	EDC-9
    833BA23A-0ED4-455E-A0F0-1FDB5375B029	33F12B38-6789-4475-9516-35A1E44D09C4	20	22	833BA	23A-0
    9BD90389-3B3F-49C9-98C1-D31932F26158	33F12B38-6789-4475-9516-35A1E44D09C4	22	24	9BD90	389-3
    65D2213E-03B6-4E2E-8CFD-E86724E7D192	33F12B38-6789-4475-9516-35A1E44D09C4	24	26	65D22	13E-0
    E35B9ADB-F9C4-4F4F-B777-79345C4A6F60	33F12B38-6789-4475-9516-35A1E44D09C4	26	28	E35B9	ADB-F
    */
    $model+ TGeologyInterval
    {
        //ceda::MGuid GeologyIntervalGuid;
        ceda::MGuid HoleGuid;           // null guid means interval deleted
        float32 DepthFrom;
        float32 DepthTo;
        assignable<string8> Value1;     // assignment semantics
        string8 Value2;                 // insert/delete semantics
    };

    /*
    (400 records)
    HoleGuid	                            LocationGuid	                        Label
    33F12B38-6789-4475-9516-35A1E44D09C4	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_1
    87979CEB-72D9-42E4-87C5-486A4BB83234	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_2
    1F566947-E4EF-456B-BABF-5E2C71263577	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_3
    A3516145-8E79-4251-9E0F-9A386D1CF51A	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_4
    329C949A-25F4-473A-B3AA-0C07374CCF57	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_5
    C433B8A9-EE30-4D5F-B7DA-8A87563A4C21	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_6
    DAE41B1B-C955-43AA-89A0-23A1BEC8E839	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_7
    6C3563E1-4765-48AA-BCFF-3001E05FF6BC	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_8
    82FF96A5-CEE9-4AEC-B159-BABAE29D38AE	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_9
    74595AF2-4C88-4CD7-804B-F8594208362A	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_10
    CAE8CAFB-60EA-428F-9673-D5C571C665CC	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_11
    4E80FA21-495E-4A07-A502-5BEBA00DDF7D	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_12
    57798841-BBDD-47A1-B615-E4755A342932	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_13
    AA8211AC-6C58-4E83-A345-38C655D0C094	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_14
    687037C8-2AE8-402F-B524-6308C5F4557A	9B98800A-8B3B-4AB9-894C-B761180E05C9	Hole_1_15
    */
    $model+ THole
    {
        //ceda::MGuid HoleGuid;
        ceda::MGuid LocationGuid;
        string8 Label;
    };

    /*
    (20 records)
    LocationGuid	                        Label
    9B98800A-8B3B-4AB9-894C-B761180E05C9	Location_1
    368CC7A5-D862-436F-B42B-4ACAF259B242	Location_2
    94F92B8F-2681-4CD0-98FB-80C47C3181B2	Location_3
    CCE8ED49-C588-41D6-8CAA-216A437F98AC	Location_4
    08BFE864-9A94-449E-9C4E-E88E9BDE7872	Location_5
    4D0BF3D7-4CF6-4BF1-BE00-A85BF474C628	Location_6
    908E0A51-BEA4-4492-8C51-612C43B44F0E	Location_7
    A6C025BA-13A7-4184-B088-7A0031B99976	Location_8
    06ED3649-07F8-408A-9A10-B626ABC2DFF7	Location_9
    15036C94-EB55-4413-911F-3D30DF3CD049	Location_10
    489242D4-8F25-495A-B87F-77FC2267C96B	Location_11
    FA34AE9C-5926-40B1-83C0-FEDD28D57C52	Location_12
    C4610686-BAFD-4D98-A9D8-67F347419A32	Location_13
    496A3E0E-74D8-4DA1-A15B-AEC935C41DEF	Location_14
    F90AE8E6-FE96-4083-8158-67094F79DE11	Location_15
    58572355-6F6C-4EB9-81BE-9244F723110B	Location_16    */
    $model+ TLocation
    {
        //ceda::MGuid LocationGuid;
        string8 Label;
    };

    $struct+ TDrillHoles <<multiline>> isa ceda::IPersistable :
        model
        {
            xmap<ceda::MGuid, TGeologyInterval> Intervals;
            xmap<ceda::MGuid, THole> Holes;
            xmap<ceda::MGuid, TLocation> Locations;
        }
    {
    };

} // namespace drillhole