/******************************************************************************* * Copyright (c) 1998, 2015 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.readonly; import java.util.Vector; import org.eclipse.persistence.descriptors.RelationalDescriptor; import org.eclipse.persistence.mappings.*; import org.eclipse.persistence.tools.schemaframework.TableDefinition; public class Movie { public Number id; public String title; public Studio studio; public Vector actors; public Promoter promoter; public Movie() { super(); this.actors = new Vector(); } public void addActor(Actor actor) { this.actors.addElement(actor); } // Movie descriptor public static RelationalDescriptor descriptor() { RelationalDescriptor descriptor = new RelationalDescriptor(); descriptor.setJavaClass(org.eclipse.persistence.testing.models.readonly.Movie.class); descriptor.setTableName("RO_MOVIE"); descriptor.addPrimaryKeyFieldName("MOV_ID"); descriptor.setSequenceNumberName("SEQ"); descriptor.setSequenceNumberFieldName("MOV_ID"); descriptor.addDirectMapping("id", "MOV_ID"); descriptor.addDirectMapping("title", "TITLE"); ManyToManyMapping actorsMapping = new ManyToManyMapping(); actorsMapping.setAttributeName("actors"); actorsMapping.setReferenceClass(Actor.class); actorsMapping.setRelationTableName("ACT_MOV"); actorsMapping.setSourceRelationKeyFieldName("MOV_ID"); actorsMapping.setTargetRelationKeyFieldName("ACT_ID"); actorsMapping.dontUseIndirection(); actorsMapping.privateOwnedRelationship(); descriptor.addMapping(actorsMapping); AggregateObjectMapping studioMapping = new AggregateObjectMapping(); studioMapping.setAttributeName("studio"); studioMapping.setReferenceClass(Studio.class); studioMapping.readOnly(); descriptor.addMapping(studioMapping); OneToOneMapping oneToOneMapping = new OneToOneMapping(); oneToOneMapping.setAttributeName("promoter"); oneToOneMapping.setReferenceClass(Promoter.class); oneToOneMapping.addForeignKeyFieldName("PROMO_ID", "PROMO_ID"); oneToOneMapping.dontUseIndirection(); descriptor.addMapping(oneToOneMapping); return descriptor; } public static Movie example1() { Movie example = new Movie(); example.setTitle("The Empire Strikes Back"); example.setStudio(Studio.example1()); Actor actor1 = Actor.example1(); actor1.addMovie(example); Actor actor2 = Actor.example4(); actor2.addMovie(example); example.addActor(actor1); example.addActor(actor2); example.setPromoter(Promoter.example1()); return example; } public static Movie example2() { Movie example = new Movie(); example.setTitle("Air Force One"); example.setStudio(Studio.example2()); Actor actor1 = Actor.example1(); actor1.addMovie(example); Actor actor2 = Actor.example2(); actor2.addMovie(example); example.addActor(actor1); example.addActor(actor2); example.setPromoter(Promoter.example2()); return example; } public static Movie example3() { Movie example = new Movie(); example.setTitle("Deep Impact"); example.setStudio(Studio.example3()); Actor actor1 = Actor.example2(); actor1.addMovie(example); Actor actor2 = Actor.example3(); actor2.addMovie(example); example.addActor(actor1); example.addActor(actor2); example.setStudio(Studio.example4()); example.setPromoter(Promoter.example3()); return example; } public static Movie example4() { Movie example = new Movie(); example.setTitle("Meatballs"); example.setStudio(Studio.example4()); Actor actor1 = Actor.example2(); actor1.addMovie(example); Actor actor2 = Actor.example3(); actor2.addMovie(example); Actor actor5 = Actor.example5(); actor5.addMovie(example); example.addActor(actor1); example.addActor(actor2); example.addActor(actor5); example.setPromoter(Promoter.example4()); return example; } public static Movie example5() { Movie example = new Movie(); example.setTitle("Apocalype Now"); example.setStudio(Studio.example5()); Actor actor1 = Actor.example1(); actor1.addMovie(example); Actor actor2 = Actor.example2(); actor2.addMovie(example); example.addActor(actor1); example.addActor(actor2); example.setPromoter(Promoter.example5()); return example; } public Vector getActors() { return actors; } public Promoter getPromoter() { return promoter; } public Studio getStudio() { return studio; } public String getTitle() { return title; } public void setPromoter(Promoter newValue) { this.promoter = newValue; } public void setStudio(Studio studio) { this.studio = studio; } public void setTitle(String title) { this.title = title; } // Movie table definition public static TableDefinition tableDefinition() { TableDefinition definition = new TableDefinition(); definition.setName("RO_MOVIE"); definition.addIdentityField("MOV_ID", java.math.BigDecimal.class, 15); definition.addField("TITLE", String.class, 50); definition.addField("STD_NAME", String.class, 50); definition.addField("STD_OWN", String.class, 50); definition.addField("STD_ADD", java.math.BigDecimal.class, 15); definition.addField("PROMO_ID", java.math.BigDecimal.class, 15); return definition; } public String toString() { return new String("Movie: " + getTitle()); } }