com.factset.sdk.FactSetFundamentals.models.BatchResult Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of factsetfundamentals Show documentation
Show all versions of factsetfundamentals Show documentation
FactSet SDK for Java - factsetfundamentals
/*
* FactSet Fundamentals API
* Gain access to current, comprehensive, and comparative information on securities in worldwide developed and emerging markets. Composed of annual and interim/quarterly data, detailed historical financial statement content, per-share data, and calculated ratios, FactSet Fundamentals provides you with the information you need for a global investment perspective.This API is rate-limited to 10 requests per second and 10 concurrent requests per user.
*
* The version of the OpenAPI document: 2.2.0
* Contact: [email protected]
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
package com.factset.sdk.FactSetFundamentals.models;
import java.util.Objects;
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
import com.factset.sdk.FactSetFundamentals.models.Fundamental;
import com.factset.sdk.FactSetFundamentals.models.Segment;
import com.factset.sdk.FactSetFundamentals.models.SegmentValue;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonValue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import org.openapitools.jackson.nullable.JsonNullable;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.openapitools.jackson.nullable.JsonNullable;
import java.util.NoSuchElementException;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.factset.sdk.FactSetFundamentals.JSON;
import com.fasterxml.jackson.core.type.TypeReference;
import jakarta.ws.rs.core.GenericType;
import jakarta.ws.rs.core.Response;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.math.BigDecimal;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import com.factset.sdk.FactSetFundamentals.JSON;
@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
@JsonDeserialize(using = BatchResult.BatchResultDeserializer.class)
@JsonSerialize(using = BatchResult.BatchResultSerializer.class)
public class BatchResult extends AbstractOpenApiSchema implements Serializable {
private static final Logger log = Logger.getLogger(BatchResult.class.getName());
public static class BatchResultSerializer extends StdSerializer {
public BatchResultSerializer(Class t) {
super(t);
}
public BatchResultSerializer() {
this(null);
}
@Override
public void serialize(BatchResult value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
jgen.writeObject(value.getActualInstance());
}
}
public static class BatchResultDeserializer extends StdDeserializer {
public BatchResultDeserializer() {
this(BatchResult.class);
}
public BatchResultDeserializer(Class> vc) {
super(vc);
}
@Override
public BatchResult deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
JsonNode tree = jp.readValueAsTree();
Object deserialized = null;
boolean typeCoercion = ctxt.isEnabled(MapperFeature.ALLOW_COERCION_OF_SCALARS);
int match = 0;
JsonToken token = tree.traverse(jp.getCodec()).nextToken();
// deserialize Fundamental
try {
boolean attemptParsing = true;
// ensure that we respect type coercion as set on the client ObjectMapper
if (Fundamental.class.equals(Integer.class) || Fundamental.class.equals(Long.class) || Fundamental.class.equals(Float.class) || Fundamental.class.equals(Double.class) || Fundamental.class.equals(Boolean.class) || Fundamental.class.equals(String.class)) {
attemptParsing = typeCoercion;
if (!attemptParsing) {
attemptParsing |= ((Fundamental.class.equals(Integer.class) || Fundamental.class.equals(Long.class)) && token == JsonToken.VALUE_NUMBER_INT);
attemptParsing |= ((Fundamental.class.equals(Float.class) || Fundamental.class.equals(Double.class)) && token == JsonToken.VALUE_NUMBER_FLOAT);
attemptParsing |= (Fundamental.class.equals(Boolean.class) && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
attemptParsing |= (Fundamental.class.equals(String.class) && token == JsonToken.VALUE_STRING);
}
}
if (attemptParsing) {
deserialized = tree.traverse(jp.getCodec()).readValueAs(new TypeReference() { });
// TODO: there is no validation against JSON schema constraints
// (min, max, enum, pattern...), this does not perform a strict JSON
// validation, which means the 'match' count may be higher than it should be.
match++;
log.log(Level.FINER, "Input data matches schema 'Fundamental'");
}
} catch (Exception e) {
// deserialization failed, continue
log.log(Level.FINER, "Input data does not match schema 'Fundamental'", e);
}
// deserialize Segment
try {
boolean attemptParsing = true;
// ensure that we respect type coercion as set on the client ObjectMapper
if (Segment.class.equals(Integer.class) || Segment.class.equals(Long.class) || Segment.class.equals(Float.class) || Segment.class.equals(Double.class) || Segment.class.equals(Boolean.class) || Segment.class.equals(String.class)) {
attemptParsing = typeCoercion;
if (!attemptParsing) {
attemptParsing |= ((Segment.class.equals(Integer.class) || Segment.class.equals(Long.class)) && token == JsonToken.VALUE_NUMBER_INT);
attemptParsing |= ((Segment.class.equals(Float.class) || Segment.class.equals(Double.class)) && token == JsonToken.VALUE_NUMBER_FLOAT);
attemptParsing |= (Segment.class.equals(Boolean.class) && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
attemptParsing |= (Segment.class.equals(String.class) && token == JsonToken.VALUE_STRING);
}
}
if (attemptParsing) {
deserialized = tree.traverse(jp.getCodec()).readValueAs(new TypeReference() { });
// TODO: there is no validation against JSON schema constraints
// (min, max, enum, pattern...), this does not perform a strict JSON
// validation, which means the 'match' count may be higher than it should be.
match++;
log.log(Level.FINER, "Input data matches schema 'Segment'");
}
} catch (Exception e) {
// deserialization failed, continue
log.log(Level.FINER, "Input data does not match schema 'Segment'", e);
}
if (match == 1) {
BatchResult ret = new BatchResult();
ret.setActualInstance(deserialized);
return ret;
}
throw new IOException(String.format("Failed deserialization for BatchResult: %d classes match result, expected 1", match));
}
/**
* Handle deserialization of the 'null' value.
*/
@Override
public BatchResult getNullValue(DeserializationContext ctxt) throws JsonMappingException {
throw new JsonMappingException(ctxt.getParser(), "BatchResult cannot be null");
}
}
// store a list of schema names defined in oneOf
public static final Map schemas = new HashMap();
public BatchResult() {
super("oneOf", Boolean.FALSE);
}
public BatchResult(Fundamental o) {
super("oneOf", Boolean.FALSE);
setActualInstance(o);
}
public BatchResult(Segment o) {
super("oneOf", Boolean.FALSE);
setActualInstance(o);
}
static {
schemas.put("Fundamental", new GenericType() {
});
schemas.put("Segment", new GenericType() {
});
JSON.registerDescendants(BatchResult.class, Collections.unmodifiableMap(schemas));
}
@Override
public Map getSchemas() {
return BatchResult.schemas;
}
/**
* Set the instance that matches the oneOf child schema, check
* the instance parameter is valid against the oneOf child schemas:
* Fundamental, Segment
*
* It could be an instance of the 'oneOf' schemas.
* The oneOf child schemas may themselves be a composed schema (allOf, anyOf, oneOf).
*/
@Override
public void setActualInstance(Object instance) {
// Fundamental
if (JSON.isInstanceOf(Fundamental.class, instance, new HashSet>())) {
super.setActualInstance(instance);
return;
}
// Segment
if (JSON.isInstanceOf(Segment.class, instance, new HashSet>())) {
super.setActualInstance(instance);
return;
}
throw new RuntimeException("Invalid instance type. Must be Fundamental, Segment");
}
/**
* Get the actual instance, which can be the following:
* Fundamental, Segment
*
* @return The actual instance (Fundamental, Segment)
*/
@Override
public Object getActualInstance() {
return super.getActualInstance();
}
/**
* Get the actual instance of `Fundamental`. If the actual instance is not `Fundamental`,
* the ClassCastException will be thrown.
*
* @return The actual instance of `Fundamental`
* @throws ClassCastException if the instance is not `Fundamental`
*/
public Fundamental getFundamental() throws ClassCastException {
return (Fundamental)super.getActualInstance();
}
/**
* Get the actual instance of `Segment`. If the actual instance is not `Segment`,
* the ClassCastException will be thrown.
*
* @return The actual instance of `Segment`
* @throws ClassCastException if the instance is not `Segment`
*/
public Segment getSegment() throws ClassCastException {
return (Segment)super.getActualInstance();
}
}