Package ch.aonyx.broker.ib.api.contract

Source Code of ch.aonyx.broker.ib.api.contract.ContractSpecificationEventCreatingInputStreamConsumer

/*
* Copyright (C) 2012 Aonyx
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ch.aonyx.broker.ib.api.contract;

import static ch.aonyx.broker.ib.api.util.InputStreamUtils.readDouble;
import static ch.aonyx.broker.ib.api.util.InputStreamUtils.readInt;
import static ch.aonyx.broker.ib.api.util.InputStreamUtils.readString;

import java.io.InputStream;

import ch.aonyx.broker.ib.api.io.AbstractEventCreatingInputStreamConsumerSupport;
import ch.aonyx.broker.ib.api.order.PairTagValue;

/**
* @author Christophe Marcourt
* @since 1.0.0
*/
public final class ContractSpecificationEventCreatingInputStreamConsumer extends
        AbstractEventCreatingInputStreamConsumerSupport<ContractSpecificationEvent> {

    public ContractSpecificationEventCreatingInputStreamConsumer(final InputStream inputStream,
            final int serverCurrentVersion) {
        super(inputStream, serverCurrentVersion);
    }

    @Override
    protected ContractSpecificationEvent consumeVersionLess(final InputStream inputStream) {
        int requestId = -1;
        if (getVersion() >= 3) {
            requestId = readInt(inputStream);
        }
        final ContractSpecification contractSpecification = consumerContractSpecification(inputStream);
        return createEvent(requestId, contractSpecification);
    }

    private ContractSpecification consumerContractSpecification(final InputStream inputStream) {
        final ContractSpecification contractSpecification = new ContractSpecification();
        final Contract contract = new Contract();
        contractSpecification.setContract(contract);
        contract.setSymbol(readString(inputStream));
        contract.setSecurityType(SecurityType.fromAbbreviation(readString(inputStream)));
        contract.setExpiry(readString(inputStream));
        contract.setStrike(readDouble(inputStream));
        contract.setOptionRight(OptionRight.fromInitialOrName(readString(inputStream)));
        contract.setExchange(readString(inputStream));
        contract.setCurrencyCode(readString(inputStream));
        contract.setLocalSymbol(readString(inputStream));
        contractSpecification.setMarketName(readString(inputStream));
        contractSpecification.setTradingClass(readString(inputStream));
        contract.setId(readInt(inputStream));
        contractSpecification.setMinimumFluctuation(readDouble(inputStream));
        contract.setMultiplier(readString(inputStream));
        contractSpecification.setValidOrderTypes(readString(inputStream));
        contractSpecification.setValidExchanges(readString(inputStream));
        if (getVersion() >= 2) {
            contractSpecification.setPriceMagnifier(readInt(inputStream));
        }
        if (getVersion() >= 4) {
            contractSpecification.setUnderlyingContractId(readInt(inputStream));
        }
        if (getVersion() >= 5) {
            contractSpecification.setLongName(readString(inputStream));
            contract.setPrimaryExchange(readString(inputStream));
        }
        if (getVersion() >= 6) {
            contractSpecification.setContractMonth(readString(inputStream));
            contractSpecification.setIndustry(readString(inputStream));
            contractSpecification.setCategory(readString(inputStream));
            contractSpecification.setSubcategory(readString(inputStream));
            contractSpecification.setTimeZoneId(readString(inputStream));
            contractSpecification.setTradingHours(readString(inputStream));
            contractSpecification.setLiquidHours(readString(inputStream));
        }
        if (getVersion() >= 8) {
            contractSpecification.setEconomicValueRule(readString(inputStream));
            contractSpecification.setEconomicValueMultiplier(readDouble(inputStream));
        }
        if (getVersion() >= 7) {
            final int securityIdsCount = readInt(inputStream);
            for (int i = 0; i < securityIdsCount; i++) {
                final PairTagValue pairTagValue = new PairTagValue();
                contractSpecification.getSecurityIds().add(pairTagValue);
                pairTagValue.setTagName(readString(inputStream));
                pairTagValue.setValue(readString(inputStream));
            }
        }
        return contractSpecification;
    }

    private ContractSpecificationEvent createEvent(final int requestId,
            final ContractSpecification contractSpecification) {
        return new ContractSpecificationEvent(toRequestId(requestId), contractSpecification);
    }

}
TOP

Related Classes of ch.aonyx.broker.ib.api.contract.ContractSpecificationEventCreatingInputStreamConsumer

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.