com.speedment.examples.social.JSONImage.java Source code

Java tutorial

Introduction

Here is the source code for com.speedment.examples.social.JSONImage.java

Source

/**
 *
 * Copyright (c) 2006-2015, Speedment, Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); You may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at:
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.speedment.examples.social;

import static com.speedment.examples.social.util.Base64Util.fromBase64;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javafx.scene.image.Image;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

/**
 *
 * @author Emil Forslund
 */
public class JSONImage implements Comparable<JSONImage> {
    private String title, description;
    private Image image;
    private LocalDateTime uploaded;
    private JSONUser uploader;

    private JSONImage() {
    }

    public String getTitle() {
        return title;
    }

    public String getDescription() {
        return description;
    }

    public Image getImage() {
        return image;
    }

    public LocalDateTime getUploaded() {
        return uploaded;
    }

    public JSONUser getUploader() {
        return uploader;
    }

    public static List<JSONImage> parseFrom(String json) {

        final JSONObject container = (JSONObject) JSONValue.parse(json);
        final JSONArray array = (JSONArray) container.get("images");
        final List<JSONImage> images = new ArrayList<>();

        array.stream().forEach(o -> {
            final JSONObject obj = (JSONObject) o;
            final JSONImage img = new JSONImage();
            final long time = Long.parseLong(obj.get("uploaded").toString());

            final LocalDateTime ldt = LocalDateTime.ofEpochSecond(time / 1000L, (int) (time % 1000) * 1000,
                    ZoneOffset.UTC);

            img.title = obj.get("title").toString();
            img.description = obj.get("description").toString();
            img.uploaded = ldt;
            img.uploader = JSONUser.parse((JSONObject) obj.get("uploader"));
            img.image = fromBase64(obj.get("img_data").toString());
            images.add(img);
        });

        Collections.sort(images, Comparator.reverseOrder());

        return images;
    }

    @Override
    public int compareTo(JSONImage o) {
        return (int) Duration.between(o.uploaded, uploaded).getSeconds();
    }
}