Return expiry date along with the EAP fee

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=126407427
This commit is contained in:
ctingue 2016-07-01 07:18:08 -07:00 committed by Ben McIlwain
parent 9f731ba4d0
commit d6bd2d56cd
4 changed files with 74 additions and 9 deletions

View file

@ -0,0 +1,51 @@
// Copyright 2016 The Domain Registry Authors. All Rights Reserved.
//
// 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.
package google.registry.model.domain.fee;
import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
import com.google.common.collect.Range;
import org.joda.money.Money;
import org.joda.time.DateTime;
/**
* An object representing an EAP fee (as a {@link Money}) along with the interval for which the
* fee applies.
*/
public class EapFee {
/** The EAP fee (as applied on top of the domain registration cost). */
Money cost;
/** The time period for which the fee applies. */
Range<DateTime> period;
public Money getCost() {
return cost;
}
public Range<DateTime> getPeriod() {
return period;
}
public static EapFee create(Money cost, Range<DateTime> period) {
EapFee instance = new EapFee();
instance.cost = checkArgumentNotNull(cost, "EAP fee cost cannot be null.");
instance.period = checkArgumentNotNull(period, "EAP fee period cannot be null.");
return instance;
}
}

View file

@ -23,6 +23,7 @@ import static google.registry.model.ofy.ObjectifyService.ofy;
import static google.registry.model.ofy.Ofy.RECOMMENDED_MEMCACHE_EXPIRATION;
import static google.registry.util.CollectionUtils.nullToEmptyImmutableCopy;
import static google.registry.util.DateTimeUtils.END_OF_TIME;
import static google.registry.util.DateTimeUtils.START_OF_TIME;
import static google.registry.util.PreconditionsUtils.checkArgumentNotNull;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static org.joda.money.CurrencyUnit.USD;
@ -37,6 +38,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedMap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Ordering;
import com.google.common.collect.Range;
import com.google.common.net.InternetDomainName;
import com.googlecode.objectify.Key;
@ -57,6 +59,7 @@ import google.registry.model.ImmutableObject;
import google.registry.model.common.EntityGroupRoot;
import google.registry.model.common.TimedTransitionProperty;
import google.registry.model.common.TimedTransitionProperty.TimedTransition;
import google.registry.model.domain.fee.EapFee;
import google.registry.model.pricing.PremiumPricingEngine;
import google.registry.model.pricing.StaticPremiumListPricingEngine;
import google.registry.model.registry.label.PremiumList;
@ -521,8 +524,15 @@ public class Registry extends ImmutableObject implements Buildable {
/**
* Returns the EAP fee for the registry at the given time.
*/
public Money getEapFeeFor(DateTime now) {
return eapFeeSchedule.getValueAtTime(now);
public EapFee getEapFeeFor(DateTime now) {
ImmutableSortedMap<DateTime, Money> valueMap = eapFeeSchedule.toValueMap();
DateTime periodStart = valueMap.floorKey(now);
DateTime periodEnd = valueMap.ceilingKey(now);
return EapFee.create(
eapFeeSchedule.getValueAtTime(now),
Range.closedOpen(
periodStart != null ? periodStart : START_OF_TIME,
periodEnd != null ? periodEnd : END_OF_TIME));
}
public String getLordnUsername() {