blob: 6595713df6de24bedc9f880cbedc311a1cba8f23 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1998, 2013 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 v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* 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;
}
}