Package com.codecademy.eventhub.model

Source Code of com.codecademy.eventhub.model.User$Builder

package com.codecademy.eventhub.model;

import com.google.common.collect.Maps;
import com.codecademy.eventhub.base.ByteBufferMap;
import com.codecademy.eventhub.base.KeyValueCallback;

import java.nio.ByteBuffer;
import java.util.Map;

public class User {
  private final ByteBufferMap byteBufferMap;

  private User(ByteBufferMap byteBufferMap) {
    this.byteBufferMap = byteBufferMap;
  }

  public String getExternalId() {
    return get("external_user_id");
  }

  public String get(String key) {
    return byteBufferMap.get(key);
  }

  public void enumerate(KeyValueCallback callback) {
    byteBufferMap.enumerate(callback);
  }

  public ByteBuffer toByteBuffer() {
    return byteBufferMap.toByteBuffer();
  }

  @Override
  public String toString() {
    return String.format("external user id: %s" + getExternalId());
  }

  public static User fromByteBuffer(ByteBuffer byteBuffer) {
    return new User(new ByteBufferMap(byteBuffer.duplicate()));
  }

  public static class Builder {
    private final String externalId;
    private Map<String, String> properties;

    public Builder(String externalId, Map<String, String> properties) {
      this.externalId = externalId;
      this.properties = properties;
    }

    public Builder add(String key, String value) {
      properties.put(key, value);
      return this;
    }

    public User build() {
      Map<String, String> allProperties = Maps.newHashMap();
      allProperties.putAll(properties);
      allProperties.put("external_user_id", externalId);
      return new User(ByteBufferMap.build(allProperties));
    }
  }
}
TOP

Related Classes of com.codecademy.eventhub.model.User$Builder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.