/******************************************************************************* | |
* 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; | |
} | |
} |