/*
 * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0,
 * or the Eclipse Distribution License v. 1.0 which is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
 */

// Contributors:
//     Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.models.bigbad;

import java.util.*;

import java.math.*;

import java.io.*;

import org.eclipse.persistence.indirection.*;

/**
 * A very large object used for performance testing.
 * Object has 100 attributes,
 * 10 part primary key,
 * 2 blobs,
 * 10 large strings.
 */
public class BigBadObject implements Serializable {
    public long id01;
    public long id02;
    public long id03;
    public long id04;
    public long id05;
    public long id06;
    public long id07;
    public long id08;
    public long id09;
    public long id10;

    public byte[] blob;
    public List serializedBlob;

    public String largeString01;
    public String largeString02;
    public String largeString03;

    public BigDecimal number01;
    public BigDecimal number02;

    public String string01;
    public String string02;
    public String string03;
    public String string04;
    public String string05;
    public String string06;
    public String string07;
    public String string08;
    public String string09;
    public String string10;
    public String string11;
    public String string12;
    public String string13;
    public String string14;
    public String string15;
    public String string16;
    public String string17;
    public String string18;
    public String string19;
    public String string20;

    public Calendar calendar01;
    public Calendar calendar02;
    public Calendar calendar03;
    public Calendar calendar04;
    public Calendar calendar05;
    public Calendar calendar06;
    public Calendar calendar07;
    public Calendar calendar08;
    public Calendar calendar09;
    public Calendar calendar10;

    public java.sql.Date date01;
    public java.sql.Date date02;
    public java.sql.Date date03;
    public java.sql.Date date04;
    public java.sql.Date date05;
    public java.sql.Date date06;
    public java.sql.Date date07;
    public java.sql.Date date08;
    public java.sql.Date date09;
    public java.sql.Date date10;

    public java.sql.Time time01;
    public java.sql.Time time02;
    public java.sql.Time time03;
    public java.sql.Time time04;
    public java.sql.Time time05;
    public java.sql.Time time06;
    public java.sql.Time time07;
    public java.sql.Time time08;
    public java.sql.Time time09;
    public java.sql.Time time10;

    public java.sql.Timestamp timestamp01;
    public java.sql.Timestamp timestamp02;
    public java.sql.Timestamp timestamp03;
    public java.sql.Timestamp timestamp04;
    public java.sql.Timestamp timestamp05;
    public java.sql.Timestamp timestamp06;
    public java.sql.Timestamp timestamp07;
    public java.sql.Timestamp timestamp08;
    public java.sql.Timestamp timestamp09;
    public java.sql.Timestamp timestamp10;

    public ValueHolderInterface<BigBadReferenceData> ref01;
    public ValueHolderInterface<BigBadReferenceData> ref02;
    public ValueHolderInterface<BigBadReferenceData> ref03;
    public ValueHolderInterface<BigBadReferenceData> ref04;
    public ValueHolderInterface<BigBadReferenceData> ref05;
    public ValueHolderInterface<BigBadReferenceData> ref06;
    public ValueHolderInterface<BigBadReferenceData> ref07;
    public ValueHolderInterface<BigBadReferenceData> ref08;
    public ValueHolderInterface<BigBadReferenceData> ref09;
    public ValueHolderInterface<BigBadReferenceData> ref10;

    public BigBadAggregate agg01;
    public BigBadAggregate agg02;
    public BigBadAggregate agg03;
    public BigBadAggregate agg04;
    public BigBadAggregate agg05;
}
