move forward on the transition to ets over mnesia

This commit is contained in:
lsowen
2012-11-02 22:50:17 -04:00
parent fe2c490734
commit e8385d7d86
5 changed files with 58 additions and 37 deletions

View File

@@ -1,5 +1,6 @@
-module(ezic_flatten).
-include("include/ezic.hrl").
-define(NODEBUG, true).
-include_lib("eunit/include/eunit.hrl").
@@ -14,20 +15,15 @@
-export([
flatten/0
flatten/1
, contains_date/2
, ms/2
]).
%% debug
-export([flatten_all_zones/1]).
flatten() ->
AllZones= ezic_db:get_all(zone),
flatten_all_zones(AllZones),
flatten(Ets) ->
AllZones= ets:lookup(Ets, zone),
flatten_all_zones(Ets, AllZones),
done.
@@ -79,16 +75,16 @@ ms(Date, Name) ->
% recursively processes sets of similar zones until they're all done,
% passing zone sets to flatten_zone_set/1
flatten_all_zones([]) ->
flatten_all_zones(Ets, []) ->
done;
flatten_all_zones([Z1|_]= AllZones) ->
flatten_all_zones(Ets, [Z1|_]= AllZones) ->
io:format("Flattening zones: ~s~n", [Z1#zone.name]),
{CurrentZones, RestZones}= ezic_zone:split_by_name(Z1, AllZones),
Flats= flatten_zone_set(CurrentZones),
ezic_db:insert_all(Flats),
Flats= flatten_zone_set(Ets, CurrentZones),
ets:insert(Ets, Flats),
flatten_all_zones(RestZones).
flatten_all_zones(Ets, RestZones).
@@ -113,8 +109,8 @@ contains_date2(FlatZone=#flatzone{wall_from=From, wall_to=To}, {Dt,#tztime{time=
%% gathers relevant rules and creates flat periods of the same gmt
%% offset (#flatzone). This is a recursive solution, eliminating Zones
%% from the list until it's been exhausted
flatten_zone_set(Zones) ->
flatten_zone_set(?MINFLAT, Zones, [], none).
flatten_zone_set(Ets, Zones) ->
flatten_zone_set(Ets, ?MINFLAT, Zones, [], none).
% flatten_zone_set(FromTime, Zones, Flats) -> [#flatzone{}]
@@ -123,7 +119,7 @@ flatten_zone_set(Zones) ->
% Flats= [#flatzone{}]
%
% assumes a new zone every time it is called
flatten_zone_set(FromTimeStub=#flatzone{utc_from=UTCFrom, dstoffset=DSTOffset}
flatten_zone_set(Ets, FromTimeStub=#flatzone{utc_from=UTCFrom, dstoffset=DSTOffset}
, Zones %[Z1=#zone{rule=RuleName, until=UntilTime, gmtoff=Offset} | _RestZones],
, Flats
, CurrentRule) ->
@@ -145,7 +141,7 @@ flatten_zone_set(FromTimeStub=#flatzone{utc_from=UTCFrom, dstoffset=DSTOffset}
%% we gather all rules that _may_ apply
Rules= ezic_db:rules(RuleName),
Rules= ets:select(Ets, [{#rule{name=RuleName, _='_'}, [], ['$_']}]),
?debugVal(FromTime),
@@ -169,7 +165,7 @@ flatten_zone_set(FromTimeStub=#flatzone{utc_from=UTCFrom, dstoffset=DSTOffset}
?debugMsg("maxyear reached from flatten_zone_set"),
FinalFlats;
false ->
flatten_zone_set(NextFlat, RestZones, FinalFlats, EndingRule)
flatten_zone_set(Ets, NextFlat, RestZones, FinalFlats, EndingRule)
catch
exit:Reason ->
?debugMsg("bad year for nextflat:"),