Skip to content

Commit 3a3a61e

Browse files
chuffChad Huff
andauthored
Minnesota (#85)
* Minnesota * Fix section references * Fix MN datatypes --------- Co-authored-by: Chad Huff <chad@totalium.com>
1 parent 230c292 commit 3a3a61e

16 files changed

Lines changed: 860 additions & 198 deletions

README.md

Lines changed: 306 additions & 145 deletions
Large diffs are not rendered by default.

iabgpp-encoder/src/main/java/com/iab/gpp/encoder/GppModel.java

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,7 @@
1010
import com.iab.gpp.encoder.error.EncodingException;
1111
import com.iab.gpp.encoder.error.InvalidFieldException;
1212
import com.iab.gpp.encoder.field.HeaderV1Field;
13-
import com.iab.gpp.encoder.section.EncodableSection;
14-
import com.iab.gpp.encoder.section.HeaderV1;
15-
import com.iab.gpp.encoder.section.Sections;
16-
import com.iab.gpp.encoder.section.TcfCaV1;
17-
import com.iab.gpp.encoder.section.TcfEuV2;
18-
import com.iab.gpp.encoder.section.UsCa;
19-
import com.iab.gpp.encoder.section.UsCo;
20-
import com.iab.gpp.encoder.section.UsCt;
21-
import com.iab.gpp.encoder.section.UsDe;
22-
import com.iab.gpp.encoder.section.UsFl;
23-
import com.iab.gpp.encoder.section.UsIa;
24-
import com.iab.gpp.encoder.section.UsMt;
25-
import com.iab.gpp.encoder.section.UsNat;
26-
import com.iab.gpp.encoder.section.UsNe;
27-
import com.iab.gpp.encoder.section.UsNh;
28-
import com.iab.gpp.encoder.section.UsNj;
29-
import com.iab.gpp.encoder.section.UsOr;
30-
import com.iab.gpp.encoder.section.UsTn;
31-
import com.iab.gpp.encoder.section.UsTx;
32-
import com.iab.gpp.encoder.section.UsUt;
33-
import com.iab.gpp.encoder.section.UsVa;
34-
import com.iab.gpp.encoder.section.UspV1;
13+
import com.iab.gpp.encoder.section.*;
3514

3615
public class GppModel {
3716
private Map<String, EncodableSection> sections = new HashMap<>();
@@ -119,6 +98,9 @@ public void setFieldValue(String sectionName, String fieldName, Object value) {
11998
} else if (sectionName.equals(UsTn.NAME)) {
12099
section = new UsTn();
121100
this.sections.put(UsTn.NAME, section);
101+
} else if (sectionName.equals(UsMn.NAME)) {
102+
section = new UsMn();
103+
this.sections.put(UsMn.NAME, section);
122104
}
123105
} else {
124106
section = this.sections.get(sectionName);
@@ -316,6 +298,10 @@ public UsTn getUsTnSection() {
316298
return (UsTn) getSection(UsTn.NAME);
317299
}
318300

301+
public UsMn getUsMnSection() {
302+
return (UsMn) getSection(UsMn.NAME);
303+
}
304+
319305
public List<Integer> getSectionIds() {
320306
if (!this.decoded) {
321307
this.sections = this.decodeModel(this.encodedString);
@@ -427,6 +413,9 @@ protected Map<String, EncodableSection> decodeModel(String str) {
427413
} else if (sectionIds.get(i).equals(UsTn.ID)) {
428414
UsTn section = new UsTn(encodedSections[i + 1]);
429415
sections.put(UsTn.NAME, section);
416+
} else if (sectionIds.get(i).equals(UsMn.ID)) {
417+
UsMn section = new UsMn(encodedSections[i + 1]);
418+
sections.put(UsMn.NAME, section);
430419
}
431420
}
432421
}
@@ -537,6 +526,9 @@ public void decodeSection(String sectionName, String encodedString) {
537526
}else if (sectionName.equals(UsTn.NAME)) {
538527
section = new UsTn();
539528
this.sections.put(UsTn.NAME, section);
529+
}else if (sectionName.equals(UsMn.NAME)) {
530+
section = new UsMn();
531+
this.sections.put(UsMn.NAME, section);
540532
}
541533
} else {
542534
section = this.sections.get(sectionName);
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.iab.gpp.encoder.field;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
6+
public class UsMnField {
7+
8+
public static String VERSION = "Version";
9+
public static String PROCESSING_NOTICE = "ProcessingNotice";
10+
public static String SALE_OPT_OUT_NOTICE = "SaleOptOutNotice";
11+
public static String TARGETED_ADVERTISING_OPT_OUT_NOTICE = "TargetedAdvertisingOptOutNotice";
12+
public static String SALE_OPT_OUT = "SaleOptOut";
13+
public static String TARGETED_ADVERTISING_OPT_OUT = "TargetedAdvertisingOptOut";
14+
public static String SENSITIVE_DATA_PROCESSING = "SensitiveDataProcessing";
15+
public static String KNOWN_CHILD_SENSITIVE_DATA_CONSENTS = "KnownChildSensitiveDataConsents";
16+
public static String ADDITIONAL_DATA_PROCESSING_CONSENT = "AdditionalDataProcessingConsent";
17+
public static String MSPA_COVERED_TRANSACTION = "MspaCoveredTransaction";
18+
public static String MSPA_OPT_OUT_OPTION_MODE = "MspaOptOutOptionMode";
19+
public static String MSPA_SERVICE_PROVIDER_MODE = "MspaServiceProviderMode";
20+
21+
public static String GPC_SEGMENT_TYPE = "GpcSegmentType";
22+
public static String GPC_SEGMENT_INCLUDED = "GpcSegmentIncluded";
23+
public static String GPC = "Gpc";
24+
25+
//@formatter:off
26+
public static List<String> USMN_CORE_SEGMENT_FIELD_NAMES = Arrays.asList(new String[] {
27+
UsMnField.VERSION,
28+
UsMnField.PROCESSING_NOTICE,
29+
UsMnField.SALE_OPT_OUT_NOTICE,
30+
UsMnField.TARGETED_ADVERTISING_OPT_OUT_NOTICE,
31+
UsMnField.SALE_OPT_OUT,
32+
UsMnField.TARGETED_ADVERTISING_OPT_OUT,
33+
UsMnField.SENSITIVE_DATA_PROCESSING,
34+
UsMnField.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS,
35+
UsMnField.ADDITIONAL_DATA_PROCESSING_CONSENT,
36+
UsMnField.MSPA_COVERED_TRANSACTION,
37+
UsMnField.MSPA_OPT_OUT_OPTION_MODE,
38+
UsMnField.MSPA_SERVICE_PROVIDER_MODE
39+
});
40+
//@formatter:on
41+
42+
//@formatter:off
43+
public static List<String> USMN_GPC_SEGMENT_FIELD_NAMES = Arrays.asList(new String[] {
44+
UsMnField.GPC_SEGMENT_TYPE,
45+
UsMnField.GPC
46+
});
47+
//@formatter:on
48+
}

iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/Sections.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class Sections {
3434
SECTION_ID_NAME_MAP.put(UsNh.ID, UsNh.NAME);
3535
SECTION_ID_NAME_MAP.put(UsNj.ID, UsNj.NAME);
3636
SECTION_ID_NAME_MAP.put(UsTn.ID, UsTn.NAME);
37+
SECTION_ID_NAME_MAP.put(UsMn.ID, UsMn.NAME);
3738

3839
SECTION_ORDER = new ArrayList<Integer>(SECTION_ID_NAME_MAP.keySet()).stream().sorted()
3940
.map(id -> SECTION_ID_NAME_MAP.get(id)).collect(Collectors.toList());
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
package com.iab.gpp.encoder.section;
2+
3+
import com.iab.gpp.encoder.field.UsMnField;
4+
import com.iab.gpp.encoder.segment.*;
5+
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
9+
public class UsMn extends AbstractLazilyEncodableSection {
10+
11+
public static int ID = 23;
12+
public static int VERSION = 1;
13+
public static String NAME = "usmn";
14+
15+
public UsMn() {
16+
super();
17+
}
18+
19+
public UsMn(String encodedString) {
20+
super();
21+
decode(encodedString);
22+
}
23+
24+
@Override
25+
public int getId() {
26+
return UsMn.ID;
27+
}
28+
29+
@Override
30+
public String getName() {
31+
return UsMn.NAME;
32+
}
33+
34+
@Override
35+
public int getVersion() {
36+
return UsMn.VERSION;
37+
}
38+
39+
@Override
40+
protected List<EncodableSegment> initializeSegments() {
41+
List<EncodableSegment> segments = new ArrayList<>();
42+
segments.add(new UsMnCoreSegment());
43+
segments.add(new UsMnGpcSegment());
44+
return segments;
45+
}
46+
47+
@Override
48+
protected List<EncodableSegment> decodeSection(String encodedString) {
49+
List<EncodableSegment> segments = initializeSegments();
50+
51+
if (encodedString != null && !encodedString.isEmpty()) {
52+
String[] encodedSegments = encodedString.split("\\.");
53+
54+
if (encodedSegments.length > 0) {
55+
segments.get(0).decode(encodedSegments[0]);
56+
}
57+
58+
if (encodedSegments.length > 1) {
59+
segments.get(1).setFieldValue(UsMnField.GPC_SEGMENT_INCLUDED, true);
60+
segments.get(1).decode(encodedSegments[1]);
61+
} else {
62+
segments.get(1).setFieldValue(UsMnField.GPC_SEGMENT_INCLUDED, false);
63+
}
64+
}
65+
66+
return segments;
67+
}
68+
69+
@Override
70+
protected String encodeSection(List<EncodableSegment> segments) {
71+
List<String> encodedSegments = new ArrayList<>();
72+
73+
if (!segments.isEmpty()) {
74+
encodedSegments.add(segments.get(0).encode());
75+
if (segments.size() >= 2 && segments.get(1).getFieldValue(UsMnField.GPC_SEGMENT_INCLUDED).equals(true)) {
76+
encodedSegments.add(segments.get(1).encode());
77+
}
78+
}
79+
80+
return String.join(".", encodedSegments);
81+
}
82+
83+
84+
public Integer getProcessingNotice() {
85+
return (Integer) this.getFieldValue(UsMnField.PROCESSING_NOTICE);
86+
}
87+
88+
public Integer getSaleOptOutNotice() {
89+
return (Integer) this.getFieldValue(UsMnField.SALE_OPT_OUT_NOTICE);
90+
}
91+
92+
public Integer getTargetedAdvertisingOptOutNotice() {
93+
return (Integer) this.getFieldValue(UsMnField.TARGETED_ADVERTISING_OPT_OUT_NOTICE);
94+
}
95+
96+
public Integer getSaleOptOut() {
97+
return (Integer) this.getFieldValue(UsMnField.SALE_OPT_OUT);
98+
}
99+
100+
public Integer getTargetedAdvertisingOptOut() {
101+
return (Integer) this.getFieldValue(UsMnField.TARGETED_ADVERTISING_OPT_OUT);
102+
}
103+
104+
@SuppressWarnings("unchecked")
105+
public List<Integer> getSensitiveDataProcessing() {
106+
return (List<Integer>) this.getFieldValue(UsMnField.SENSITIVE_DATA_PROCESSING);
107+
}
108+
109+
@SuppressWarnings("unchecked")
110+
public Integer getKnownChildSensitiveDataConsents() {
111+
return (Integer) this.getFieldValue(UsMnField.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS);
112+
}
113+
114+
public Integer getAdditionalDataProcessingConsent() {
115+
return (Integer) this.getFieldValue(UsMnField.ADDITIONAL_DATA_PROCESSING_CONSENT);
116+
}
117+
118+
public Integer getMspaCoveredTransaction() {
119+
return (Integer) this.getFieldValue(UsMnField.MSPA_COVERED_TRANSACTION);
120+
}
121+
122+
public Integer getMspaOptOutOptionMode() {
123+
return (Integer) this.getFieldValue(UsMnField.MSPA_OPT_OUT_OPTION_MODE);
124+
}
125+
126+
public Integer getMspaServiceProviderMode() {
127+
return (Integer) this.getFieldValue(UsMnField.MSPA_SERVICE_PROVIDER_MODE);
128+
}
129+
130+
public Integer getGpcSegmentType() {
131+
return (Integer) this.getFieldValue(UsMnField.GPC_SEGMENT_TYPE);
132+
}
133+
134+
public Boolean getGpcSegmentIncluded() {
135+
return (Boolean) this.getFieldValue(UsMnField.GPC_SEGMENT_INCLUDED);
136+
}
137+
138+
public Boolean getGpc() {
139+
return (Boolean) this.getFieldValue(UsMnField.GPC);
140+
}
141+
}

iabgpp-encoder/src/main/java/com/iab/gpp/encoder/segment/UsDeCoreSegment.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import com.iab.gpp.encoder.error.DecodingException;
1212
import com.iab.gpp.encoder.field.EncodableBitStringFields;
1313
import com.iab.gpp.encoder.field.UsDeField;
14-
import com.iab.gpp.encoder.field.UsVaField;
1514
import com.iab.gpp.encoder.section.UsDe;
1615

1716
public class UsDeCoreSegment extends AbstractLazilyEncodableSegment<EncodableBitStringFields> {
@@ -61,7 +60,7 @@ protected EncodableBitStringFields initializeFields() {
6160
fields.put(UsDeField.SENSITIVE_DATA_PROCESSING,
6261
new EncodableFixedIntegerList(2, Arrays.asList(0, 0, 0, 0, 0, 0, 0, 0, 0))
6362
.withValidator(nullableBooleanAsTwoBitIntegerListValidator));
64-
fields.put(UsVaField.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS,
63+
fields.put(UsDeField.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS,
6564
new EncodableFixedIntegerList(2, Arrays.asList(0, 0, 0, 0, 0))
6665
.withValidator(nullableBooleanAsTwoBitIntegerListValidator));
6766
fields.put(UsDeField.ADDITIONAL_DATA_PROCESSING_CONSENT,

iabgpp-encoder/src/main/java/com/iab/gpp/encoder/segment/UsIaCoreSegment.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import com.iab.gpp.encoder.error.DecodingException;
1212
import com.iab.gpp.encoder.field.EncodableBitStringFields;
1313
import com.iab.gpp.encoder.field.UsIaField;
14-
import com.iab.gpp.encoder.field.UsVaField;
1514
import com.iab.gpp.encoder.section.UsIa;
1615

1716
public class UsIaCoreSegment extends AbstractLazilyEncodableSegment<EncodableBitStringFields> {
@@ -63,7 +62,7 @@ protected EncodableBitStringFields initializeFields() {
6362
fields.put(UsIaField.SENSITIVE_DATA_PROCESSING,
6463
new EncodableFixedIntegerList(2, Arrays.asList(0, 0, 0, 0, 0, 0, 0, 0))
6564
.withValidator(nullableBooleanAsTwoBitIntegerListValidator));
66-
fields.put(UsVaField.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS,
65+
fields.put(UsIaField.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS,
6766
new EncodableFixedInteger(2, 0).withValidator(nullableBooleanAsTwoBitIntegerValidator));
6867
fields.put(UsIaField.MSPA_COVERED_TRANSACTION,
6968
new EncodableFixedInteger(2, 1).withValidator(nonNullableBooleanAsTwoBitIntegerValidator));

0 commit comments

Comments
 (0)