blob: 42f02d75734f3b407bb714f8ec6062b146d0d292 [file] [log] [blame]
/*
* Copyright (c) 1998, 2020 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.events;
import java.util.Vector;
import org.eclipse.persistence.indirection.*;
import org.eclipse.persistence.mappings.*;
import org.eclipse.persistence.descriptors.RelationalDescriptor;
import org.eclipse.persistence.tools.schemaframework.TableDefinition;
public class Customer {
public Address address;
public Phone phoneNumber;
public EmailAccount email;
public CreditCard creditCard;
public String name;
public ValueHolderInterface orders;
public Vector associations;
public Number id;
public boolean preWrite;
public boolean postWrite;
public boolean preUpdate;
public Customer() {
this.associations = new Vector(3);
this.orders = new ValueHolder(new Vector());
}
public static RelationalDescriptor descriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
/* First define the class, table and descriptor properties. */
descriptor.setJavaClass(Customer.class);
descriptor.setTableName("EVENTCUSTOMER");
descriptor.setPrimaryKeyFieldName("ID");
descriptor.setSequenceNumberName("SEQ");
descriptor.setSequenceNumberFieldName("ID");
/* Next define the attribute mappings. */
OneToOneMapping addressMapping = new OneToOneMapping();
addressMapping.setAttributeName("address");
addressMapping.setReferenceClass(Address.class);
addressMapping.dontUseIndirection();
addressMapping.privateOwnedRelationship();
addressMapping.addForeignKeyFieldName("EVENTCUSTOMER.ADDRESS_ID", "EADDRESS.ID");
descriptor.addMapping(addressMapping);
OneToOneMapping phoneMapping = new OneToOneMapping();
phoneMapping.setAttributeName("phoneNumber");
phoneMapping.setReferenceClass(Phone.class);
phoneMapping.dontUseIndirection();
phoneMapping.privateOwnedRelationship();
phoneMapping.addForeignKeyFieldName("EVENTCUSTOMER.PHONE_ID", "EPHONE.ID");
descriptor.addMapping(phoneMapping);
OneToOneMapping emailMapping = new OneToOneMapping();
emailMapping.setAttributeName("email");
emailMapping.setReferenceClass(EmailAccount.class);
emailMapping.dontUseIndirection();
emailMapping.privateOwnedRelationship();
emailMapping.addForeignKeyFieldName("EVENTCUSTOMER.EMAIL_ID", "EMAILACC.ID");
descriptor.addMapping(emailMapping);
DirectCollectionMapping associationsMapping = new DirectCollectionMapping();
associationsMapping.setAttributeName("associations");
associationsMapping.dontUseIndirection();
associationsMapping.setReferenceTableName("EASSOCIATIONS");
associationsMapping.setDirectFieldName("EASSOCIATIONS.DESCRIP");
associationsMapping.addReferenceKeyFieldName("EASSOCIATIONS.CUSTOMER_ID", "EVENTCUSTOMER.ID");
descriptor.addMapping(associationsMapping);
OneToManyMapping ordersMapping = new OneToManyMapping();
ordersMapping.setAttributeName("orders");
ordersMapping.setReferenceClass(Order.class);
ordersMapping.useBasicIndirection();
ordersMapping.addTargetForeignKeyFieldName("EVENTORDER.CUSTOMER_ID", "EVENTCUSTOMER.ID");
descriptor.addMapping(ordersMapping);
AggregateObjectMapping creditMapping = new AggregateObjectMapping();
creditMapping.setAttributeName("creditCard");
creditMapping.setReferenceClass(org.eclipse.persistence.testing.models.events.CreditCard.class);
creditMapping.setIsNullAllowed(true);
descriptor.addMapping(creditMapping);
descriptor.addDirectMapping("id", "ID");
descriptor.addDirectMapping("name", "NAME");
return descriptor;
}
public static Customer example1() {
Customer customer = new Customer();
customer.address = Address.example1();
customer.email = org.eclipse.persistence.testing.models.events.EmailAccount.example1();
customer.phoneNumber = Phone.example1();
((Vector)customer.orders.getValue()).add(Order.example2());
((Vector)customer.orders.getValue()).add(Order.example1());
customer.associations.add("Mickey Mouse Club");
customer.associations.add("Canadian Penitentiary System");
customer.name = "John Lancy";
customer.creditCard = new CreditCard();
customer.creditCard.number = "346556544565";
customer.creditCard.expiry = "04/03";
return customer;
}
public static Customer example2() {
Customer customer = new Customer();
customer.address = Address.example2();
customer.email = org.eclipse.persistence.testing.models.events.EmailAccount.example2();
customer.phoneNumber = Phone.example2();
((Vector)customer.orders.getValue()).add(Order.example3());
((Vector)customer.orders.getValue()).add(Order.example4());
customer.associations.add("Masons");
customer.associations.add("Illuminaty");
customer.name = "Bobby Ore";
customer.creditCard = new CreditCard();
customer.creditCard.number = "456556544565";
customer.creditCard.expiry = "03/03";
return customer;
}
/**
* Return a platform independant definition of the database table.
*/
public static TableDefinition tableDefinition() {
TableDefinition definition = new TableDefinition();
definition.setName("EVENTCUSTOMER");
definition.addIdentityField("ID", java.math.BigDecimal.class, 15);
definition.addField("ADDRESS_ID", java.math.BigDecimal.class, 15);
definition.addField("PHONE_ID", java.math.BigDecimal.class, 15);
definition.addField("EMAIL_ID", java.math.BigDecimal.class, 15);
definition.addField("NAME", String.class, 40);
definition.addField("CARD_NUMBER", String.class, 12);
definition.addField("CARD_EXPIRY", String.class, 5);
return definition;
}
/**
* Return a platform independant definition of the database table.
*/
public static TableDefinition directCollectionTableDefinition() {
TableDefinition definition = new TableDefinition();
definition.setName("EASSOCIATIONS");
definition.addField("CUSTOMER_ID", java.math.BigDecimal.class, 15);
definition.addField("DESCRIP", String.class, 40);
return definition;
}
}