PerformanceReportSerializer.java 7.61 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.google.gson.Gson
 *  com.google.gson.GsonBuilder
 *  com.google.gson.TypeAdapter
 *  com.google.gson.TypeAdapterFactory
 *  com.google.gson.reflect.TypeToken
 *  com.google.gson.stream.JsonReader
 *  com.google.gson.stream.JsonToken
 *  com.google.gson.stream.JsonWriter
 */
package com.day.cq.analytics.testandtarget.impl.serializer;

import com.day.cq.analytics.testandtarget.PerformanceReport;
import com.day.cq.analytics.testandtarget.PerformanceReportItem;
import com.day.cq.analytics.testandtarget.impl.serializer.AbstractSerializer;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;

public class PerformanceReportSerializer
extends AbstractSerializer<PerformanceReport> {
    public static final String ACTIVITY_TOTALS_NAME = "Activity Totals";

    @Override
    public String serialize(PerformanceReport o) {
        throw new UnsupportedOperationException("Not implemented");
    }

    @Override
    public PerformanceReport deserialize(String json, Class<PerformanceReport> clazz) {
        return (PerformanceReport)new GsonBuilder().registerTypeAdapterFactory((TypeAdapterFactory)new Deserializer()).create().fromJson(json, clazz);
    }

    private static class Adapter
    extends TypeAdapter<PerformanceReport> {
        private Adapter() {
        }

        public void write(JsonWriter out, PerformanceReport value) throws IOException {
            throw new UnsupportedOperationException("Not implemented");
        }

        public PerformanceReport read(JsonReader in) throws IOException {
            PerformanceReport report = new PerformanceReport();
            in.beginObject();
            while (in.hasNext()) {
                String name = in.nextName();
                if ("experiences".equals(name)) {
                    this.readExperiences(in, report);
                    continue;
                }
                if ("winner".equals(name)) {
                    this.readWinningExperience(in, report);
                    continue;
                }
                if ("campaignTotals".equals(name)) {
                    this.readCampaignTotals(in, report);
                    continue;
                }
                in.skipValue();
            }
            in.endObject();
            return report;
        }

        private void readCampaignTotals(JsonReader in, PerformanceReport report) throws IOException {
            in.beginObject();
            PerformanceReportItem item = new PerformanceReportItem();
            item.setExperienceName("Activity Totals");
            while (in.hasNext()) {
                String name = in.nextName();
                if (name.equals("count")) {
                    item.setEntryCount(in.nextInt());
                    continue;
                }
                if (name.equals("conversionRate")) {
                    item.setConversionRate(in.nextDouble());
                    continue;
                }
                if (name.equals("rpm")) {
                    item.setRPV(in.nextString());
                    continue;
                }
                if (name.equals("aov")) {
                    item.setAOV(in.nextString());
                    continue;
                }
                if (name.equals("sales")) {
                    item.setTotalSales(in.nextString());
                    continue;
                }
                in.skipValue();
            }
            report.addItem(item);
            in.endObject();
        }

        private void readWinningExperience(JsonReader in, PerformanceReport report) throws IOException {
            in.beginObject();
            while (in.hasNext()) {
                String name = in.nextName();
                if (name.equals("winningExperience")) {
                    report.setWinningExperienceName(in.nextString());
                    continue;
                }
                in.skipValue();
            }
            in.endObject();
        }

        private void readExperiences(JsonReader in, PerformanceReport report) throws IOException {
            in.beginArray();
            while (!in.peek().equals((Object)JsonToken.END_ARRAY)) {
                if (!in.peek().equals((Object)JsonToken.BEGIN_OBJECT)) continue;
                PerformanceReportItem item = new PerformanceReportItem();
                in.beginObject();
                while (!in.peek().equals((Object)JsonToken.END_OBJECT)) {
                    if (in.peek().equals((Object)JsonToken.NAME)) {
                        String name = in.nextName();
                        if (name.equals("count")) {
                            item.setEntryCount(in.nextInt());
                            continue;
                        }
                        if (name.equals("conversions")) {
                            item.setConversionCount(in.nextInt());
                            continue;
                        }
                        if (name.equals("name")) {
                            item.setExperienceName(in.nextString());
                            continue;
                        }
                        if (name.equals("conversionRate")) {
                            item.setConversionRate(in.nextDouble());
                            continue;
                        }
                        if (name.equals("lift")) {
                            item.setLift(in.nextDouble());
                            continue;
                        }
                        if (name.equals("confidence")) {
                            item.setConfidence(in.nextDouble());
                            continue;
                        }
                        if (name.equals("engagement")) {
                            item.setEngagement(in.nextDouble());
                            continue;
                        }
                        if (name.equals("engagementTotal")) {
                            item.setEngagementTotal(in.nextDouble());
                            continue;
                        }
                        if (name.equals("engagementCount")) {
                            item.setEngagementCount(in.nextInt());
                            continue;
                        }
                        if (name.equals("rpm")) {
                            item.setRPV(in.nextString());
                            continue;
                        }
                        if (name.equals("aov")) {
                            item.setAOV(in.nextString());
                            continue;
                        }
                        if (name.equals("sales")) {
                            item.setTotalSales(in.nextString());
                            continue;
                        }
                        in.skipValue();
                        continue;
                    }
                    in.skipValue();
                }
                in.endObject();
                report.addItem(item);
            }
            in.endArray();
        }
    }

    private static final class Deserializer
    implements TypeAdapterFactory {
        private Deserializer() {
        }

        public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {
            Class rawType = typeToken.getRawType();
            if (!PerformanceReport.class.isAssignableFrom(rawType)) {
                return null;
            }
            return new Adapter();
        }
    }

}