private final DefaultDuration toDefaultDuration(final Duration input) { final DefaultDuration result = new DefaultDuration(); result.setNumber(input.getNumber()); result.setUnit(input.getUnit()); return result; }
@Override public boolean equals(final Object o) { if (this == o) { return true; } if (!(o instanceof DefaultPlanPhase)) { return false; } final DefaultPlanPhase that = (DefaultPlanPhase) o; if (duration != null ? !duration.equals(that.duration) : that.duration != null) { return false; } if (fixed != null ? !fixed.equals(that.fixed) : that.fixed != null) { return false; } if (recurring != null ? !recurring.equals(that.recurring) : that.recurring != null) { return false; } if (type != that.type) { return false; } /* if (!Arrays.equals(usages, that.usages)) { return false; } */ return true; }
@Override public int hashCode() { int result = type != null ? type.hashCode() : 0; result = 31 * result + (duration != null ? duration.hashCode() : 0); result = 31 * result + (fixed != null ? fixed.hashCode() : 0); result = 31 * result + (recurring != null ? recurring.hashCode() : 0); //result = 31 * result + (usages != null ? Arrays.hashCode(usages) : 0); return result; }
@Override public void initialize(final StandaloneCatalog root) { super.initialize(root); CatalogSafetyInitializer.initializeNonRequiredNullFieldsWithDefaultValue(this); if (fixed != null) { fixed.initialize(root); } if (recurring != null) { recurring.initialize(root); recurring.setPlan(planName); recurring.setPhase(this); } for (final DefaultUsage usage : usages) { usage.initialize(root); usage.setPhase(this); } duration.initialize(root); }
@Override public ValidationErrors validate(final StandaloneCatalog catalog, final ValidationErrors errors) { if (planName == null) { errors.add(new ValidationError(String.format("Invalid plan for phase '%s'", type), DefaultPlanPhase.class, "")); } if (fixed == null && recurring == null && usages.length == 0) { errors.add(new ValidationError(String.format("Phase %s of plan %s need to define at least either a fixed or recurrring or usage section.", type.toString(), planName), DefaultPlanPhase.class, type.toString())); } if (fixed != null) { fixed.validate(catalog, errors); } if (recurring != null) { recurring.validate(catalog, errors); } duration.validate(catalog, errors); validateCollection(catalog, errors, usages); return errors; }
@Override public void initialize(final StandaloneCatalog root) { super.initialize(root); CatalogSafetyInitializer.initializeNonRequiredNullFieldsWithDefaultValue(this); if (fixed != null) { fixed.initialize(root); } if (recurring != null) { recurring.initialize(root); recurring.setPlan(planName); recurring.setPhase(this); } for (final DefaultUsage usage : usages) { usage.initialize(root); usage.setPhase(this); } duration.initialize(root); }
@Override public ValidationErrors validate(final StandaloneCatalog catalog, final ValidationErrors errors) { if (planName == null) { errors.add(new ValidationError(String.format("Invalid plan for phase '%s'", type), DefaultPlanPhase.class, "")); } if (fixed == null && recurring == null && usages.length == 0) { errors.add(new ValidationError(String.format("Phase %s of plan %s need to define at least either a fixed or recurrring or usage section.", type.toString(), planName), DefaultPlanPhase.class, type.toString())); } if (fixed != null) { fixed.validate(catalog, errors); } if (recurring != null) { recurring.validate(catalog, errors); } duration.validate(catalog, errors); validateCollection(catalog, errors, usages); return errors; }
public static MockPlanPhase createTrial(final int days) { return new MockPlanPhase(BillingPeriod.NO_BILLING_PERIOD, PhaseType.TRIAL, new DefaultDuration().setUnit(TimeUnit.DAYS).setNumber(days), null, MockInternationalPrice.create1USD() ); }
@Override public int hashCode() { int result = type != null ? type.hashCode() : 0; result = 31 * result + (duration != null ? duration.hashCode() : 0); result = 31 * result + (fixed != null ? fixed.hashCode() : 0); result = 31 * result + (recurring != null ? recurring.hashCode() : 0); //result = 31 * result + (usages != null ? Arrays.hashCode(usages) : 0); return result; }
@Override public boolean equals(final Object o) { if (this == o) { return true; } if (!(o instanceof DefaultPlanPhase)) { return false; } final DefaultPlanPhase that = (DefaultPlanPhase) o; if (duration != null ? !duration.equals(that.duration) : that.duration != null) { return false; } if (fixed != null ? !fixed.equals(that.fixed) : that.fixed != null) { return false; } if (recurring != null ? !recurring.equals(that.recurring) : that.recurring != null) { return false; } if (type != that.type) { return false; } /* if (!Arrays.equals(usages, that.usages)) { return false; } */ return true; }
public static MockPlanPhase createUSDMonthlyEvergreen(final String reccuringUSDPrice, final String fixedPrice) { return new MockPlanPhase(BillingPeriod.MONTHLY, PhaseType.EVERGREEN, new DefaultDuration().setUnit(TimeUnit.UNLIMITED).setNumber(-1), (reccuringUSDPrice == null) ? null : MockInternationalPrice.createUSD(reccuringUSDPrice), (fixedPrice == null) ? null : MockInternationalPrice.createUSD(fixedPrice)); }
public static MockPlanPhase createUSDMonthlyFixedTerm(final String reccuringUSDPrice, final String fixedPrice, final int durationInMonths) { return new MockPlanPhase(BillingPeriod.MONTHLY, PhaseType.FIXEDTERM, new DefaultDuration().setUnit(TimeUnit.MONTHS).setNumber(durationInMonths), (reccuringUSDPrice == null) ? null : MockInternationalPrice.createUSD(reccuringUSDPrice), (fixedPrice == null) ? null : MockInternationalPrice.createUSD(fixedPrice)); }
public static MockPlanPhase create1USDMonthlyEvergreen() { return (MockPlanPhase) new MockPlanPhase(BillingPeriod.MONTHLY, PhaseType.EVERGREEN, new DefaultDuration().setUnit(TimeUnit.UNLIMITED).setNumber(-1), MockInternationalPrice.create1USD(), null).setPlan(MockPlan.createBicycleNoTrialEvergreen1USD()); }
public MockPlanPhase(@Nullable final MockInternationalPrice recurringPrice, @Nullable final MockInternationalPrice fixedPrice, final BillingPeriod billingPeriod, final PhaseType phaseType) { setPhaseType(phaseType); setDuration(new DefaultDuration().setNumber(-1).setUnit(TimeUnit.UNLIMITED)); setPlan(new MockPlan(this)); setFixed(new MockFixed(fixedPrice)); setRecurring(new MockRecurring(billingPeriod, recurringPrice)); }
public MockPlanPhase(final MockPlan mockPlan) { setPhaseType(PhaseType.EVERGREEN); setDuration(new DefaultDuration().setNumber(-1).setUnit(TimeUnit.UNLIMITED)); setPlan(mockPlan); setFixed(new MockFixed(null)); setRecurring(new MockRecurring(BillingPeriod.MONTHLY, new MockInternationalPrice())); }
public MockPlanPhase(final Plan plan, final PhaseType phaseType) { setPhaseType(phaseType); setDuration(new DefaultDuration().setNumber(-1).setUnit(TimeUnit.UNLIMITED)); setPlan(plan); setFixed(new MockFixed(null)); setRecurring(new MockRecurring(BillingPeriod.MONTHLY, new MockInternationalPrice())); } }
trialPhase.setDuration(new DefaultDuration().setUnit(TimeUnit.DAYS).setNumber(14)); trialPhase.setFixed(new DefaultFixed().setFixedPrice(new DefaultInternationalPrice().setPrices(new DefaultPrice[]{new DefaultPrice().setCurrency(Currency.USD).setValue(BigDecimal.ZERO)}))); fixedTermPhase.setDuration(new DefaultDuration().setUnit(TimeUnit.MONTHS).setNumber(3)); fixedTermPhase.setRecurring(new DefaultRecurring().setBillingPeriod(BillingPeriod.MONTHLY).setRecurringPrice(new DefaultInternationalPrice().setPrices(new DefaultPrice[]{new DefaultPrice().setCurrency(Currency.USD).setValue(BigDecimal.TEN)}))); evergreenPhase.setDuration(new DefaultDuration().setUnit(TimeUnit.MONTHS).setNumber(1)); evergreenPhase.setRecurring(new DefaultRecurring().setBillingPeriod(BillingPeriod.MONTHLY).setRecurringPrice(new DefaultInternationalPrice().setPrices(new DefaultPrice[]{new DefaultPrice().setCurrency(Currency.USD).setValue(BigDecimal.TEN)})));
discountPhase1.setDuration(new DefaultDuration().setUnit(TimeUnit.DAYS).setNumber(14)); discountPhase1.setRecurring(new DefaultRecurring().setBillingPeriod(BillingPeriod.MONTHLY).setRecurringPrice(new DefaultInternationalPrice().setPrices(new DefaultPrice[]{new DefaultPrice().setCurrency(Currency.USD).setValue(BigDecimal.TEN)}))); evergreenPhase1.setDuration(new DefaultDuration().setUnit(TimeUnit.MONTHS).setNumber(1)); evergreenPhase1.setRecurring(new DefaultRecurring().setBillingPeriod(BillingPeriod.MONTHLY).setRecurringPrice(new DefaultInternationalPrice().setPrices(new DefaultPrice[]{new DefaultPrice().setCurrency(Currency.USD).setValue(BigDecimal.TEN)}))); fixedterm2.setDuration(new DefaultDuration().setUnit(TimeUnit.MONTHS).setNumber(3)); fixedterm2.setRecurring(new DefaultRecurring().setBillingPeriod(BillingPeriod.MONTHLY).setRecurringPrice(new DefaultInternationalPrice().setPrices(new DefaultPrice[]{new DefaultPrice().setCurrency(Currency.USD).setValue(BigDecimal.TEN)})));
trialPhase.setDuration(new DefaultDuration().setUnit(TimeUnit.DAYS).setNumber(14)); trialPhase.setFixed(new DefaultFixed().setFixedPrice(new DefaultInternationalPrice().setPrices(new DefaultPrice[]{new DefaultPrice().setCurrency(Currency.USD).setValue(BigDecimal.ZERO)}))); evergreenPhase.setDuration(new DefaultDuration().setUnit(TimeUnit.MONTHS).setNumber(1)); evergreenPhase.setRecurring(new DefaultRecurring().setBillingPeriod(BillingPeriod.MONTHLY).setRecurringPrice(new DefaultInternationalPrice().setPrices(new DefaultPrice[]{new DefaultPrice().setCurrency(Currency.USD).setValue(BigDecimal.TEN)})));
final DefaultPlanPhase trialPhase = new DefaultPlanPhase(); trialPhase.setPhaseType(PhaseType.TRIAL); trialPhase.setDuration(new DefaultDuration().setUnit(desc.getTrialTimeUnit()).setNumber(desc.getTrialLength())); trialPhase.setFixed(new DefaultFixed().setFixedPrice(new DefaultInternationalPrice().setPrices(new DefaultPrice[]{new DefaultPrice().setCurrency(desc.getCurrency()).setValue(BigDecimal.ZERO)}))); plan.setInitialPhases(new DefaultPlanPhase[]{trialPhase}); evergreenPhase = new DefaultPlanPhase(); evergreenPhase.setPhaseType(PhaseType.EVERGREEN); evergreenPhase.setDuration(new DefaultDuration() .setUnit(TimeUnit.UNLIMITED)); plan.setFinalPhase(evergreenPhase);