com.animedetour.android.model.transformer.ApiEventTransformer.java Source code

Java tutorial

Introduction

Here is the source code for com.animedetour.android.model.transformer.ApiEventTransformer.java

Source

/*
 * This file is part of the Anime Detour Android application
 *
 * Copyright (c) 2016 Anime Twin Cities, Inc.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
package com.animedetour.android.model.transformer;

import com.animedetour.android.model.Event;
import com.animedetour.api.sched.model.ApiEvent;
import org.javatuples.Pair;
import org.joda.time.DateTime;
import org.joda.time.format.ISODateTimeFormat;

import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.ArrayList;
import java.util.List;

/**
 * Adapts API Events to local models..
 *
 * @author Maxwell Vandervelde <Max@MaxVandervelde.com>
 */
@Singleton
public class ApiEventTransformer implements Transformer<Pair<ApiEvent, DateTime>, Event> {
    @Inject
    public ApiEventTransformer() {
    }

    @Override
    public Event transform(Pair<ApiEvent, DateTime> data) {
        ApiEvent apiEvent = data.getValue0();
        DateTime fetched = data.getValue1();
        return new Event(apiEvent.id, apiEvent.name, new DateTime(apiEvent.start), new DateTime(apiEvent.end),
                apiEvent.category, apiEvent.tags, apiEvent.room, apiEvent.hosts, apiEvent.description,
                apiEvent.banner, fetched);
    }

    @Override
    public Pair<ApiEvent, DateTime> reverseTransform(Event data) {
        return new Pair<>(
                new ApiEvent(data.getId(), data.getName(),
                        ISODateTimeFormat.dateTimeNoMillis().print(data.getStart()),
                        ISODateTimeFormat.dateTimeNoMillis().print(data.getEnd()), data.getCategory(),
                        data.getTags(), data.getRoom(), data.getHosts(), data.getDescription(), data.getBanner()),
                data.getFetched());
    }

    @Override
    public List<Event> bulkTransform(List<Pair<ApiEvent, DateTime>> fromEvents) {
        ArrayList<Event> toEvents = new ArrayList<>(fromEvents.size());

        for (Pair<ApiEvent, DateTime> fromEvent : fromEvents) {
            toEvents.add(this.transform(fromEvent));
        }

        return toEvents;
    }

    @Override
    public List<Pair<ApiEvent, DateTime>> bulkReverseTransform(List<Event> fromEvents) {
        ArrayList<Pair<ApiEvent, DateTime>> toEvents = new ArrayList<>(fromEvents.size());

        for (Event fromEvent : fromEvents) {
            toEvents.add(this.reverseTransform(fromEvent));
        }

        return toEvents;
    }
}