TntExperienceAdapterFactory.java 2.73 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.google.gson.JsonArray
 *  com.google.gson.JsonElement
 *  com.google.gson.JsonObject
 *  com.google.gson.JsonPrimitive
 */
package com.day.cq.analytics.testandtarget.impl.serializer;

import com.day.cq.analytics.testandtarget.impl.TestandtargetSegment;
import com.day.cq.analytics.testandtarget.impl.model.TestandtargetExperience;
import com.day.cq.analytics.testandtarget.impl.model.TestandtargetOffer;
import com.day.cq.analytics.testandtarget.impl.model.TntMbox;
import com.day.cq.analytics.testandtarget.impl.serializer.CustomTypeAdapterFactory;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import java.util.List;

public class TntExperienceAdapterFactory
extends CustomTypeAdapterFactory<TestandtargetExperience> {
    public static final TntExperienceAdapterFactory INSTANCE = new TntExperienceAdapterFactory();

    private TntExperienceAdapterFactory() {
        super(TestandtargetExperience.class);
    }

    @Override
    protected void beforeWrite(TestandtargetExperience source, JsonElement toSerialize) {
        List<TestandtargetOffer> offers;
        List<TestandtargetSegment> segments = source.getSegments();
        if (!segments.isEmpty()) {
            this.writeSegments(segments, toSerialize);
        }
        if (!(offers = source.getOffers()).isEmpty()) {
            this.writeOffers(offers, toSerialize);
        }
    }

    @Override
    protected void afterRead(JsonElement deserialized) {
        CustomTypeAdapterFactory.super.afterRead(deserialized);
    }

    private void writeSegments(List<TestandtargetSegment> segments, JsonElement toSerialize) {
        JsonArray segmentIds = new JsonArray();
        for (TestandtargetSegment s : segments) {
            segmentIds.add((JsonElement)new JsonPrimitive((Number)s.getSegmentId()));
        }
        JsonObject custom = toSerialize.getAsJsonObject();
        custom.add("segmentIds", (JsonElement)segmentIds);
    }

    private void writeOffers(List<TestandtargetOffer> offers, JsonElement toSerialize) {
        JsonArray offerLocations = new JsonArray();
        for (TestandtargetOffer o : offers) {
            TntMbox mbox = o.getTntMbox();
            JsonObject offerLocation = new JsonObject();
            offerLocation.add("offerId", (JsonElement)new JsonPrimitive((Number)o.getOfferId()));
            offerLocation.add("locationLocalId", (JsonElement)new JsonPrimitive((Number)mbox.getLocationLocalId()));
            offerLocations.add((JsonElement)offerLocation);
        }
        JsonObject custom = toSerialize.getAsJsonObject();
        custom.add("offerLocations", (JsonElement)offerLocations);
    }
}