forked from gooddata/gooddata-java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAttribute.java
More file actions
91 lines (74 loc) · 2.65 KB
/
Copy pathAttribute.java
File metadata and controls
91 lines (74 loc) · 2.65 KB
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
/*
* Copyright (C) 2007-2014, GoodData(R) Corporation. All rights reserved.
*/
package com.gooddata.md;
import org.codehaus.jackson.annotate.JsonCreator;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.annotate.JsonTypeInfo;
import org.codehaus.jackson.annotate.JsonTypeName;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import java.util.Collection;
import java.util.Collections;
import static java.util.Arrays.asList;
/**
* Attribute of GoodData project dataset
*/
@JsonTypeName("attribute")
@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class Attribute extends AbstractObj implements Queryable {
@JsonProperty("content")
private final Content content;
@JsonCreator
private Attribute(@JsonProperty("meta") Meta meta, @JsonProperty("content") Content content) {
super(meta);
this.content = content;
}
/* Just for serialization test */
Attribute(String title, Key primaryKey, Key foreignKey) {
super(new Meta(title));
content = new Content(asList(primaryKey), asList(foreignKey), Collections.<DisplayForm>emptyList());
}
@JsonIgnore
public Collection<DisplayForm> getDisplayForms() {
return content.getDisplayForms();
}
@JsonIgnore
public Collection<Key> getPrimaryKeys() {
return content.getPk();
}
@JsonIgnore
public Collection<Key> getForeignKeys() {
return content.getFk();
}
@JsonIgnore
public DisplayForm getDefaultDisplayForm() {
return getDisplayForms().iterator().next();
}
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
private static class Content {
private final Collection<Key> pk;
private final Collection<Key> fk;
private final Collection<DisplayForm> displayForms;
@JsonCreator
public Content(@JsonProperty("pk") Collection<Key> pk, @JsonProperty("fk") Collection<Key> fk,
@JsonProperty("displayForms") Collection<DisplayForm> displayForms) {
this.pk = pk;
this.fk = fk;
this.displayForms = displayForms;
}
public Collection<Key> getPk() {
return pk;
}
public Collection<Key> getFk() {
return fk;
}
public Collection<DisplayForm> getDisplayForms() {
return displayForms;
}
}
}