Page MenuHomePhabricator

Remove "HeraldRepetitionPolicyConfig" and hide storage details inside HeraldRule
ClosedPublic

Authored by epriestley on Jan 25 2018, 4:10 AM.
Tags
None
Referenced Files
F13229104: D18926.id45394.diff
Mon, May 20, 2:25 PM
F13199850: D18926.diff
Mon, May 13, 7:30 PM
F13185502: D18926.diff
Sat, May 11, 2:57 AM
Unknown Object (File)
Tue, May 7, 1:52 AM
Unknown Object (File)
Fri, May 3, 1:35 PM
Unknown Object (File)
Fri, May 3, 2:50 AM
Unknown Object (File)
Mon, Apr 29, 2:30 PM
Unknown Object (File)
Wed, Apr 24, 10:32 PM
Subscribers
None

Details

Summary

Depends on D18925. Ref T13048. Currently, HeraldRule stores policies as integers (0 or 1) in the database.

The application tries to mostly use strings ("first", "every"), but doesn't do a good job of hiding the fact that the values are integers deeper in the stack. So we end up with a lot of code like this:

$stored_int_value = $rule->getRepetitionPolicy();
$equivalent_string = HeraldRepetitionPolicyConfig::getString($stored_int_value);
$is_first = ($equivalent_string === HeraldRepetitionPolicyConfig::FIRST);

This happens in several places and is generally awful. Replace it with:

$is_first = $rule->isRepeatFirst();

To do this, merge HeraldRepetitionPolicyConfig into HeraldRule and hide all the mess inside the methods.

(This may let us just get rid of the integers in a later change, although I'm not sure I want to commit to that.)

Test Plan
  • Grepped for HeraldRepetitionPolicyConfig, no more hits.
  • Grepped for setRepetitionPolicy(...) and getRepetitionPolicy(...). There are no remaining callers outside of HeraldRule.
  • Browed and edited several rules. I'll vet this more convincingly after adding the new repetition rule.

Diff Detail

Repository
rP Phabricator
Lint
Lint Not Applicable
Unit
Tests Not Applicable