blob: cbfbff40189eb34389f70ccb82ba78a7956b0a9d [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 System.Collections;
using Apache.Geode.Client;
namespace PdxTests
{
/// <summary>
/// User class for testing the put functionality for object.
/// </summary>
public class PortfolioPdx
: IPdxSerializable
{
#region Private members and methods
private int m_id;
private string m_pkid;
private PositionPdx m_position1;
private PositionPdx m_position2;
private Hashtable m_positions;
private string m_type;
private string m_status;
private string[] m_names;
private byte[] m_newVal;
private DateTime m_creationDate;
private byte[] m_arrayZeroSize;
private byte[] m_arrayNull;
private static string[] m_secIds = { "SUN", "IBM", "YHOO", "GOOG", "MSFT",
"AOL", "APPL", "ORCL", "SAP", "DELL" };
private UInt64 GetObjectSize(ISerializable obj)
{
return (obj == null ? 0 : obj.ObjectSize);
}
#endregion
#region Public accessors
public int ID
{
get
{
return m_id;
}
}
public string Pkid
{
get
{
return m_pkid;
}
}
public PositionPdx P1
{
get
{
return m_position1;
}
}
public PositionPdx P2
{
get
{
return m_position2;
}
}
public Hashtable Positions
{
get
{
return m_positions;
}
}
public string Status
{
get
{
return m_status;
}
}
public bool IsActive
{
get
{
return (m_status == "active");
}
}
public byte[] NewVal
{
get
{
return m_newVal;
}
}
public byte[] ArrayNull
{
get
{
return m_arrayNull;
}
}
public byte[] ArrayZeroSize
{
get
{
return m_arrayZeroSize;
}
}
public DateTime CreationDate
{
get
{
return m_creationDate;
}
}
public string Type
{
get
{
return m_type;
}
}
public static string[] SecIds
{
get
{
return m_secIds;
}
}
public override string ToString()
{
string portStr = string.Format("Portfolio [ID={0} status={1} " +
"type={2} pkid={3}]", m_id, m_status, m_type, m_pkid);
portStr += string.Format("{0}\tP1: {1}",
Environment.NewLine, m_position1);
portStr += string.Format("{0}\tP2: {1}",
Environment.NewLine, m_position2);
portStr += string.Format("{0}Creation Date: {1}", Environment.NewLine,
m_creationDate);
return portStr;
}
#endregion
#region Constructors
public PortfolioPdx()
{
m_id = 0;
m_pkid = null;
m_type = null;
m_status = null;
m_newVal = null;
m_creationDate = new DateTime();
}
public PortfolioPdx(int id)
: this(id, 0)
{
}
public PortfolioPdx(int id, int size)
: this(id, size, null)
{
}
public PortfolioPdx(int id, int size, string[] names)
{
m_names = names;
m_id = id;
m_pkid = id.ToString();
m_status = (id % 2 == 0) ? "active" : "inactive";
m_type = "type" + (id % 3);
int numSecIds = m_secIds.Length;
m_position1 = new PositionPdx(m_secIds[PositionPdx.Count % numSecIds],
PositionPdx.Count * 1000);
if (id % 2 != 0)
{
m_position2 = new PositionPdx(m_secIds[PositionPdx.Count % numSecIds],
PositionPdx.Count * 1000);
}
else
{
m_position2 = null;
}
m_positions = new Hashtable();
m_positions[m_secIds[PositionPdx.Count % numSecIds]] =
m_position1;
if (size > 0)
{
m_newVal = new byte[size];
for (int index = 0; index < size; index++)
{
m_newVal[index] = (byte)'B';
}
}
m_creationDate = DateTime.Now;
m_arrayNull = null;
m_arrayZeroSize = new byte[0];
}
#endregion
public static IPdxSerializable CreateDeserializable()
{
return new PortfolioPdx();
}
#region IPdxSerializable Members
public void FromData(IPdxReader reader)
{
m_id = reader.ReadInt("id");
bool isIdentity = reader.IsIdentityField("id");
if (isIdentity == false)
throw new IllegalStateException("Portfolio id is identity field");
bool isId = reader.HasField("id");
if (isId == false)
throw new IllegalStateException("Portfolio id field not found");
bool isNotId = reader.HasField("ID");
if (isNotId == true)
throw new IllegalStateException("Portfolio isNotId field found");
m_pkid = reader.ReadString("pkid");
m_position1 = (PositionPdx)reader.ReadObject("position1");
m_position2 = (PositionPdx)reader.ReadObject("position2");
m_positions = (Hashtable)reader.ReadObject("positions");
m_type = reader.ReadString("type");
m_status = reader.ReadString("status");
m_names = reader.ReadStringArray("names");
m_newVal = reader.ReadByteArray("newVal");
m_creationDate = reader.ReadDate("creationDate");
m_arrayNull = reader.ReadByteArray("arrayNull");
m_arrayZeroSize = reader.ReadByteArray("arrayZeroSize");
}
public void ToData(IPdxWriter writer)
{
writer.WriteInt("id", m_id)
//identity field
.MarkIdentityField("id")
.WriteString("pkid", m_pkid)
.WriteObject("position1", m_position1)
.WriteObject("position2", m_position2)
.WriteObject("positions", m_positions)
.WriteString("type", m_type)
.WriteString("status", m_status)
.WriteStringArray("names", m_names)
.WriteByteArray("newVal", m_newVal)
.WriteDate("creationDate", m_creationDate)
.WriteByteArray("arrayNull", m_arrayNull)
.WriteByteArray("arrayZeroSize", m_arrayZeroSize);
}
#endregion
}
}