blob: 7846930cde31641088dd006ca190aac86014524e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
/**
*
* 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("imgData").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();
}
}
|