All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.iab.gpp.encoder.segment.UspV1CoreSegment Maven / Gradle / Ivy

The newest version!
package com.iab.gpp.encoder.segment;

import java.util.List;
import com.iab.gpp.encoder.datatype.UnencodableCharacter;
import com.iab.gpp.encoder.datatype.UnencodableInteger;
import com.iab.gpp.encoder.error.DecodingException;
import com.iab.gpp.encoder.field.GenericFields;
import com.iab.gpp.encoder.field.UspV1Field;
import com.iab.gpp.encoder.section.UspV1;

public class UspV1CoreSegment extends AbstractLazilyEncodableSegment {

  public UspV1CoreSegment() {
    super();
  }

  public UspV1CoreSegment(String encodedString) {
    super();
    this.decode(encodedString);
  }

  @Override
  public List getFieldNames() {
    return UspV1Field.USPV1_CORE_SEGMENT_FIELD_NAMES;
  }

  @Override
  protected GenericFields initializeFields() {
    GenericFields fields = new GenericFields();
    fields.put(UspV1Field.VERSION, new UnencodableInteger(UspV1.VERSION));
    fields.put(UspV1Field.NOTICE, new UnencodableCharacter('-', (v -> v == 'Y' || v == 'N' || v == '-')));
    fields.put(UspV1Field.OPT_OUT_SALE, new UnencodableCharacter('-', (v -> v == 'Y' || v == 'N' || v == '-')));
    fields.put(UspV1Field.LSPA_COVERED, new UnencodableCharacter('-', (v -> v == 'Y' || v == 'N' || v == '-')));
    return fields;
  }

  @Override
  protected String encodeSegment(GenericFields fields) {
    String str = "";
    str += fields.get(UspV1Field.VERSION).getValue();
    str += fields.get(UspV1Field.NOTICE).getValue();
    str += fields.get(UspV1Field.OPT_OUT_SALE).getValue();
    str += fields.get(UspV1Field.LSPA_COVERED).getValue();
    return str;
  }

  @Override
  protected void decodeSegment(String encodedString, GenericFields fields) {
    if (encodedString == null || encodedString.length() != 4) {
      throw new DecodingException("Invalid uspv1 string: '" + encodedString + "'");
    }

    try {
      fields.get(UspV1Field.VERSION).setValue(Integer.parseInt(encodedString.substring(0, 1)));
      fields.get(UspV1Field.NOTICE).setValue(encodedString.charAt(1));
      fields.get(UspV1Field.OPT_OUT_SALE).setValue(encodedString.charAt(2));
      fields.get(UspV1Field.LSPA_COVERED).setValue(encodedString.charAt(3));
    } catch (Exception e) {
      throw new DecodingException("Unable to decode UspV1CoreSegment '" + encodedString + "'", e);
    }
  }

}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy