blob: 297ef616ce0785bed03a1dc251e05c03f4f4bc92 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
using System;
using Apache.Geode.Client;
namespace PdxTests
{
public class PositionPdx
: IPdxSerializable
{
#region Private members
private long m_avg20DaysVol;
private string m_bondRating;
private double m_convRatio;
private string m_country;
private double m_delta;
private long m_industry;
private long m_issuer;
private double m_mktValue;
private double m_qty;
private string m_secId;
private string m_secLinks;
private string m_secType;
private int m_sharesOutstanding;
private string m_underlyer;
private long m_volatility;
private int m_pid;
private static int m_count = 0;
#endregion
#region Private methods
private void Init()
{
m_avg20DaysVol = 0;
m_bondRating = null;
m_convRatio = 0.0;
m_country = null;
m_delta = 0.0;
m_industry = 0;
m_issuer = 0;
m_mktValue = 0.0;
m_qty = 0.0;
m_secId = null;
m_secLinks = null;
m_secType = null;
m_sharesOutstanding = 0;
m_underlyer = null;
m_volatility = 0;
m_pid = 0;
}
private UInt64 GetObjectSize(ISerializable obj)
{
return (obj == null ? 0 : obj.ObjectSize);
}
#endregion
#region Public accessors
public string SecId
{
get
{
return m_secId;
}
}
public int Id
{
get
{
return m_pid;
}
}
public int SharesOutstanding
{
get
{
return m_sharesOutstanding;
}
}
public static int Count
{
get
{
return m_count;
}
set
{
m_count = value;
}
}
public override string ToString()
{
return "Position [secId="+m_secId+" sharesOutstanding="+m_sharesOutstanding+ " type="+m_secType +" id="+m_pid+"]";
}
#endregion
#region Constructors
public PositionPdx()
{
Init();
}
//This ctor is for a data validation test
public PositionPdx(Int32 iForExactVal)
{
Init();
char[] id = new char[iForExactVal+1];
for (int i = 0; i <= iForExactVal; i++)
{
id[i] = 'a';
}
m_secId = new string(id);
m_qty = iForExactVal % 2 == 0 ? 1000 : 100;
m_mktValue = m_qty * 2;
m_sharesOutstanding = iForExactVal;
m_secType = "a";
m_pid = iForExactVal;
}
public PositionPdx(string id, int shares)
{
Init();
m_secId = id;
m_qty = shares * (m_count % 2 == 0 ? 10.0 : 100.0);
m_mktValue = m_qty * 1.2345998;
m_sharesOutstanding = shares;
m_secType = "a";
m_pid = m_count++;
}
#endregion
public static IPdxSerializable CreateDeserializable()
{
return new PositionPdx();
}
#region IPdxSerializable Members
public void FromData(IPdxReader reader)
{
m_avg20DaysVol = reader.ReadLong("avg20DaysVol");
m_bondRating = reader.ReadString("bondRating");
m_convRatio = reader.ReadDouble("convRatio");
m_country = reader.ReadString("country");
m_delta = reader.ReadDouble("delta");
m_industry = reader.ReadLong("industry");
m_issuer = reader.ReadLong("issuer");
m_mktValue = reader.ReadDouble("mktValue");
m_qty = reader.ReadDouble("qty");
m_secId = reader.ReadString("secId");
m_secLinks = reader.ReadString("secLinks");
m_secType = reader.ReadString("secType");
m_sharesOutstanding = reader.ReadInt("sharesOutstanding");
m_underlyer = reader.ReadString("underlyer");
m_volatility = reader.ReadLong("volatility");
m_pid = reader.ReadInt("pid");
}
public void ToData(IPdxWriter writer)
{
writer.WriteLong("avg20DaysVol", m_avg20DaysVol);
writer.WriteString("bondRating", m_bondRating);
writer.WriteDouble("convRatio", m_convRatio);
writer.WriteString("country", m_country);
writer.WriteDouble("delta", m_delta);
writer.WriteLong("industry", m_industry);
writer.WriteLong("issuer", m_issuer);
writer.WriteDouble("mktValue", m_mktValue);
writer.WriteDouble("qty", m_qty);
writer.WriteString("secId", m_secId);
writer.WriteString("secLinks", m_secLinks);
writer.WriteString("secType", m_secType);
writer.WriteInt("sharesOutstanding", m_sharesOutstanding);
writer.WriteString("underlyer", m_underlyer);
writer.WriteLong("volatility", m_volatility);
writer.WriteInt("pid", m_pid);
//identity field
writer.MarkIdentityField("pid");
}
#endregion
}
}