Package com.barchart.feed.inst.provider

Source Code of com.barchart.feed.inst.provider.InstrumentBase$InstIdentifier

/**
* Copyright (C) 2011-2013 Barchart, Inc. <http://www.barchart.com/>
*
* All rights reserved. Licensed under the OSI BSD License.
*
* http://www.opensource.org/licenses/bsd-license.php
*/
package com.barchart.feed.inst.provider;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.barchart.feed.api.model.meta.Exchange;
import com.barchart.feed.api.model.meta.Instrument;
import com.barchart.feed.api.util.Identifier;
import com.barchart.feed.inst.InstrumentField;
import com.barchart.missive.core.ObjectMapSafe;
import com.barchart.util.value.api.Factory;
import com.barchart.util.value.api.FactoryLoader;
import com.barchart.util.value.api.Fraction;
import com.barchart.util.value.api.Price;
import com.barchart.util.value.api.Schedule;
import com.barchart.util.value.api.Size;
import com.barchart.util.value.api.TimeInterval;
import com.barchart.util.values.api.PriceValue;

public abstract class InstrumentBase extends ObjectMapSafe implements Instrument {
 
  private static final Factory factory = FactoryLoader.load();
 
  public final List<Identifier> componentLegs =
      new ArrayList<Identifier>();
 
  private volatile Identifier id = Identifier.NULL;
 
  public static class InstIdentifier implements Identifier {
   
    private final String id;
   
    public InstIdentifier(final CharSequence id) {
      this.id = id.toString().intern();
    }
   
    @Override
    public String toString() {
      return id;
    }

    @Override
    public int compareTo(Identifier o) {
      return id.compareTo(o.toString());
    }
   
    @Override
    public boolean equals(final Object o) {
     
      if(!(o instanceof Identifier)) {
        return false;
      }
     
      return id.equals(((Identifier)o).toString());
     
    }
   
    @Override
    public int hashCode() {
      return id.hashCode();
    }
   
    @Override
    public boolean isNull() {
      return this == Identifier.NULL;
    }
   
  }
 
  @Override
  public MetaType type() {
    return MetaType.INSTRUMENT;
  }
 
  @Override
  public Identifier id() {
    if(id == Identifier.NULL && get(InstrumentField.GUID) != null &&
        !get(InstrumentField.GUID).isNull()) {
      id = new InstIdentifier(get(InstrumentField.GUID).toString());
    }
    return id;
  }
 
  @Override
  public int compareTo(final Instrument o) {
    return id().compareTo(o.id());
  }
 
  @Override
  public int hashCode() {
    return id().hashCode();
  }
 
  @Override
  public boolean equals(final Object o) {
    if(o instanceof Instrument) {
      return compareTo((Instrument)o) == 0;
    } else {
      return false;
    }
  }
 
  @Override
  public final boolean isNull() {
    return this == Instrument.NULL;
  }
 
  @Override
  public String marketGUID() {
    return get(InstrumentField.GUID).toString();
  }

  @Override
  public SecurityType securityType() {
    return get(InstrumentField.SECURITY_TYPE);
  }

  @Override
  public BookLiquidityType liquidityType() {
    return get(InstrumentField.BOOK_LIQUIDITY);
  }

  @Override
  public BookStructureType bookStructure() {
    return get(InstrumentField.BOOK_STRUCTURE);
  }

  @Override
  public Size maxBookDepth() {
    return factory.newSize(get(InstrumentField.BOOK_DEPTH).asLong(), 1);
  }
 
  @Override
  public String instrumentDataVendor() {
    return get(InstrumentField.VENDOR).toString();
  }

  @Override
  public String symbol() {
    return get(InstrumentField.SYMBOL).toString();
  }

  @Override
  public String description() {
    return get(InstrumentField.DESCRIPTION).toString();
  }

  @Override
  public String CFICode() {
    return get(InstrumentField.CFI_CODE).toString();
  }
 
  @Override
  public Exchange exchange() {
    return Exchanges.fromCode(exchangeCode());
  }

  @Override
  public String exchangeCode() {
    return get(InstrumentField.EXCHANGE_CODE).toString();
  }

  @Override
  public Price tickSize() {
    final PriceValue temp = get(InstrumentField.TICK_SIZE);
    return factory.newPrice(temp.mantissa(), temp.exponent());
  }

  @Override
  public Price pointValue() {
    final PriceValue temp = get(InstrumentField.POINT_VALUE);
    return factory.newPrice(temp.mantissa(), temp.exponent());
  }

  @Override
  public Fraction displayFraction() {
    return get(InstrumentField.DISPLAY_FRACTION);
  }

  @Override
  public TimeInterval lifetime() {
    return get(InstrumentField.LIFETIME);
  }

  @Override
  public Schedule marketHours() {
    return get(InstrumentField.MARKET_HOURS);
  }
 
  @Override
  public long timeZoneOffset() {
    return get(InstrumentField.TIME_ZONE_OFFSET).asLong();
  }

  @Override
  public String timeZoneName() {
    return get(InstrumentField.TIME_ZONE_NAME).toString();
  }

  @Override
  public List<Identifier> componentLegs() {
    return Collections.unmodifiableList(componentLegs);
  }

}
TOP

Related Classes of com.barchart.feed.inst.provider.InstrumentBase$InstIdentifier

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.