/* * Copyright (C) 2016 TIBCO Jaspersoft Corporation. All rights reserved. * http://community.jaspersoft.com/project/mobile-sdk-android * * Unless you have purchased a commercial license agreement from TIBCO Jaspersoft, * the following license terms apply: * * This program is part of TIBCO Jaspersoft Mobile SDK for Android. * * TIBCO Jaspersoft Mobile SDK is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * TIBCO Jaspersoft Mobile SDK is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with TIBCO Jaspersoft Mobile SDK for Android. If not, see * <http://www.gnu.org/licenses/lgpl>. */ package com.jaspersoft.android.sdk.service.report.schedule; import com.jaspersoft.android.sdk.network.entity.schedule.JobFormEntity; import com.jaspersoft.android.sdk.network.entity.schedule.JobSimpleTriggerEntity; import com.jaspersoft.android.sdk.service.data.schedule.*; import java.util.Date; /** * @author Tom Koptel * @since 2.5 */ class JobSimpleTriggerMapper extends BaseTriggerMapper { final static JobSimpleTriggerMapper INSTANCE = new JobSimpleTriggerMapper(); @Override public void mapFormOnEntity(JobForm form, JobFormEntity entity) { Trigger trigger = form.getTrigger(); EndDate endDate = trigger.getEndDate(); JobSimpleTriggerEntity simpleTrigger = new JobSimpleTriggerEntity(); mapCommonTriggerFieldsOnEntity(form, simpleTrigger); IntervalRecurrence recurrence = (IntervalRecurrence) trigger.getRecurrence(); simpleTrigger.setRecurrenceInterval(recurrence.getInterval()); simpleTrigger.setRecurrenceIntervalUnit(recurrence.getUnit().name()); simpleTrigger.setCalendarName(trigger.getCalendarName()); if (endDate == null) { simpleTrigger.setOccurrenceCount(-1); } else if (endDate instanceof RepeatedEndDate) { RepeatedEndDate date = (RepeatedEndDate) endDate; simpleTrigger.setOccurrenceCount(date.getOccurrenceCount()); } else if (endDate instanceof UntilEndDate) { mapEndDate((UntilEndDate) endDate, simpleTrigger); simpleTrigger.setOccurrenceCount(-1); } entity.setSimpleTrigger(simpleTrigger); } @Override public void mapEntityOnForm(JobForm.Builder form, JobFormEntity entity) { mapCommonEntityTriggerFieldsOnEntity(form, entity); JobSimpleTriggerEntity simpleTrigger = entity.getSimpleTrigger(); int occurrenceCount = simpleTrigger.getOccurrenceCount(); Integer recurrenceInterval = simpleTrigger.getRecurrenceInterval(); String recurrenceIntervalUnit = simpleTrigger.getRecurrenceIntervalUnit(); Date endDate = null; String endDateString = simpleTrigger.getEndDate(); if (endDateString != null) { endDate = parseDate(endDateString); } IntervalRecurrence recurrence = new IntervalRecurrence.Builder() .withInterval(recurrenceInterval) .withUnit(RecurrenceIntervalUnit.valueOf(recurrenceIntervalUnit)) .build(); Trigger.SimpleTriggerBuilder triggerBuilder = new Trigger.Builder() .withCalendarName(simpleTrigger.getCalendarName()) .withRecurrence(recurrence); if (occurrenceCount < 0 && endDate != null) { triggerBuilder.withEndDate(new UntilEndDate(endDate)); } else { triggerBuilder.withEndDate(new RepeatedEndDate(occurrenceCount)); } Trigger trigger = triggerBuilder.build(); form.withTrigger(trigger); } }