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