blob: e289f94d8d2c841f71a32270dbf0293cc2a1cf95 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 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.collections;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.*;
import org.eclipse.persistence.descriptors.changetracking.ChangeTracker;
import org.eclipse.persistence.descriptors.changetracking.CollectionChangeEvent;
import org.eclipse.persistence.descriptors.changetracking.MapChangeEvent;
import org.eclipse.persistence.indirection.*;
import org.eclipse.persistence.testing.models.collections.Diner;
import org.eclipse.persistence.testing.models.collections.Location;
import org.eclipse.persistence.testing.models.collections.Menu;
/**
* Models a restaurant for testing TopLink support for JDK1.2 Collections and Maps.
*/
public class Restaurant implements ChangeTracker {
private String name;
private ValueHolderInterface menus;
private Collection waiters;
private java.math.BigDecimal id;
private Collection locations;
private TreeSet locations2;
private Map preferredCustomers;
private ValueHolderInterface slogans;
private ValueHolderInterface services;
private Map licenses;
public PropertyChangeListener listener;
/**
* Restaurant constructor comment.
*/
public Restaurant() {
super();
locations = new ArrayList();
setLocations2(new TreeSet(getLocationComparator()));
preferredCustomers = new Hashtable();
menus = new ValueHolder(new Hashtable());
slogans = new ValueHolder(new ArrayList());
services = new ValueHolder(new ArrayList());
licenses = new HashMap();
}
@Override
public PropertyChangeListener _persistence_getPropertyChangeListener() {
return listener;
}
@Override
public void _persistence_setPropertyChangeListener(PropertyChangeListener listener) {
this.listener = listener;
}
public void propertyChange(String propertyName, Object oldValue, Object newValue) {
if (listener != null) {
if (oldValue != newValue) {
listener.propertyChange(new PropertyChangeEvent(this, propertyName, oldValue, newValue));
}
}
}
public void collectionChange(String propertyName, Collection changedCollection, Object newObject, int changeType, boolean isChangeApplied) {
if (listener != null) {
listener.propertyChange(new CollectionChangeEvent(this, propertyName, changedCollection, newObject, changeType, isChangeApplied));
}
}
public void mapChange(String propertyName, Map changedCollection, Object key, Object newObject, int changeType, boolean isChangeApplied) {
if (listener != null) {
listener.propertyChange(new MapChangeEvent(this, propertyName, changedCollection, key, newObject, changeType, isChangeApplied));
}
}
public static Comparator getLocationComparator() {
return new LocationComparator();
}
public void addDiner(Diner aDiner) {
getDiners().put(aDiner.getLastName(), aDiner);
aDiner.addFavouriteRestaurant(this);
mapChange("preferredCustomers", getDiners(), aDiner.getLastName(), aDiner, MapChangeEvent.ADD, true);
}
public void addLocation(Location aLocation) {
getLocations().add(aLocation);
collectionChange("locations", getLocations(), aLocation, CollectionChangeEvent.ADD, true);
}
public void addMenu(Menu aMenu) {
aMenu.setOwner(this);
getMenus().put(aMenu.getKey(), aMenu);
mapChange("menus", getDiners(), aMenu.getKey(), aMenu, MapChangeEvent.ADD, true);
}
public void removeMenu(Menu aMenu) {
aMenu.setOwner((Restaurant)null);
getMenus().remove(aMenu.getKey());
mapChange("menus", getMenus(), aMenu.getKey(), aMenu, MapChangeEvent.REMOVE, true);
}
public String allToString() {
StringBuffer buf = new StringBuffer();
buf.append("Restaurant: " + this.getName());
buf.append(org.eclipse.persistence.internal.helper.Helper.cr());
if (getMenus() != null) {
buf.append("Menus: " + org.eclipse.persistence.internal.helper.Helper.getShortClassName(getMenus().getClass()));
buf.append(getMenus().toString());
buf.append(org.eclipse.persistence.internal.helper.Helper.cr());
}
if (getWaiters() != null) {
buf.append("Waiters: " + org.eclipse.persistence.internal.helper.Helper.getShortClassName(getWaiters().getClass()));
buf.append(getWaiters().toString());
buf.append(org.eclipse.persistence.internal.helper.Helper.cr());
}
if (getPreferredCustomers() != null) {
buf.append("PreferredCustomers: " + org.eclipse.persistence.internal.helper.Helper.getShortClassName(getPreferredCustomers().getClass()));
buf.append(getPreferredCustomers().toString());
buf.append(org.eclipse.persistence.internal.helper.Helper.cr());
}
if (getLocations() != null) {
buf.append("Locations: " + org.eclipse.persistence.internal.helper.Helper.getShortClassName(getLocations().getClass()));
buf.append(getLocations().toString());
buf.append(org.eclipse.persistence.internal.helper.Helper.cr());
}
if (getSlogans() != null) {
buf.append("Slogan: " + org.eclipse.persistence.internal.helper.Helper.getShortClassName(getSlogans().getClass()));
buf.append(getSlogans().toString());
buf.append(org.eclipse.persistence.internal.helper.Helper.cr());
}
return buf.toString();
}
public static Restaurant example1() {
Restaurant rest = new Restaurant();
rest.setName("Chez Abuse");
ArrayList waiters = new ArrayList();
waiters.add(org.eclipse.persistence.testing.models.collections.Waiter.example1(rest));
waiters.add(org.eclipse.persistence.testing.models.collections.Waiter.example2(rest));
waiters.add(org.eclipse.persistence.testing.models.collections.Waiter.example3(rest));
rest.setWaiters(waiters);
Hashtable menus = new Hashtable();
Menu menu = Menu.example1(rest);
menus.put(menu.getType(), menu);
menu = Menu.example2(rest);
menus.put(menu.getType(), menu);
menu = Menu.example3(rest);
menus.put(menu.getType(), menu);
rest.setMenus(menus);
ArrayList slogans = new ArrayList();
slogans.add("Fine food!");
slogans.add("Even the escargots have attitude.");
rest.setSlogans(slogans);
rest.getServices().add("Reservations Required");
rest.getServices().add("Formal Attire");
rest.getLicenses().put("Alcohol License", Boolean.TRUE);
rest.getLicenses().put("Smoking License", Boolean.TRUE);
rest.getLicenses().put("Food License", Boolean.TRUE);
return rest;
}
public static Restaurant example2() {
Restaurant rest = new Restaurant();
rest.setName("Pedro's");
ArrayList waiters = new ArrayList();
waiters.add(org.eclipse.persistence.testing.models.collections.Waiter.example4(rest));
waiters.add(org.eclipse.persistence.testing.models.collections.Waiter.example5(rest));
waiters.add(org.eclipse.persistence.testing.models.collections.Waiter.example6(rest));
rest.setWaiters(waiters);
Hashtable menus = new Hashtable();
Menu menu = Menu.example4(rest);
menus.put(menu.getType(), menu);
menu = Menu.example5(rest);
menus.put(menu.getType(), menu);
rest.setMenus(menus);
ArrayList slogans = new ArrayList();
slogans.add("Tacos are us.");
slogans.add("Hot food!");
rest.setSlogans(slogans);
rest.getServices().add("Air Conditioning");
rest.getLicenses().put("Alcohol License", Boolean.FALSE);
rest.getLicenses().put("Smoking License", Boolean.FALSE);
rest.getLicenses().put("Food License", Boolean.TRUE);
return rest;
}
public static Restaurant example3() {
Restaurant rest = new Restaurant();
rest.setName("Yellow River");
ArrayList waiters = new ArrayList();
waiters.add(org.eclipse.persistence.testing.models.collections.Waiter.example7(rest));
rest.setWaiters(waiters);
Hashtable menus = new Hashtable();
Menu menu = Menu.example6(rest);
menus.put(menu.getType(), menu);
rest.setMenus(menus);
ArrayList slogans = new ArrayList();
slogans.add("Good food!");
slogans.add("Yum, congee!.");
rest.setSlogans(slogans);
rest.getServices().add("Air Conditioning");
rest.getServices().add("Reservations Required");
rest.getLicenses().put("Alcohol License", Boolean.TRUE);
rest.getLicenses().put("Smoking License", Boolean.FALSE);
rest.getLicenses().put("Food License", Boolean.TRUE);
return rest;
}
public Map getDiners() {
return preferredCustomers;
}
public java.math.BigDecimal getId() {
return id;
}
public Collection getLocations() {
return locations;
}
public Collection getServices() {
return (Collection)services.getValue();
}
public Map getLicenses() {
return licenses;
}
public TreeSet getLocations2() {
return locations2;
}
public Map getMenus() {
return (Map)getMenusHolder().getValue();
}
public ValueHolderInterface getMenusHolder() {
return menus;
}
public String getName() {
return name;
}
public Map getPreferredCustomers() {
return preferredCustomers;
}
public Collection getSlogans() {
return (Collection)getSlogansHolder().getValue();
}
public org.eclipse.persistence.indirection.ValueHolderInterface getSlogansHolder() {
return slogans;
}
public Collection getWaiters() {
return waiters;
}
public void setId(java.math.BigDecimal newValue) {
propertyChange("id", this.id, id);
this.id = newValue;
}
public void setLocations(Collection newValue) {
propertyChange("locations", this.locations, newValue);
this.locations = newValue;
}
public void setLocations2(TreeSet newValue) {
propertyChange("locations2", this.locations2, newValue);
this.locations2 = newValue;
}
public void setMenus(Map newValue) {
propertyChange("menus", this.getMenusHolder().getValue(), newValue);
this.getMenusHolder().setValue(newValue);
}
public void setMenusHolder(ValueHolderInterface aHolder) {
menus = aHolder;
}
public void setName(String newValue) {
propertyChange("name", this.name, newValue);
this.name = newValue;
}
public void setPreferredCustomers(Map newValue) {
propertyChange("preferredCustomers", this.preferredCustomers, newValue);
this.preferredCustomers = newValue;
}
public void setSlogans(Collection aValue) {
propertyChange("slogans", getSlogansHolder().getValue(), aValue);
getSlogansHolder().setValue(aValue);
}
public void setSlogansHolder(org.eclipse.persistence.indirection.ValueHolderInterface newValue) {
this.slogans = newValue;
}
public void setWaiters(Collection newValue) {
propertyChange("waiters", this.waiters, newValue);
this.waiters = newValue;
}
/**
* Return a platform independant definition of the database table.
*/
public static org.eclipse.persistence.tools.schemaframework.TableDefinition sloganTableDefinition() {
org.eclipse.persistence.tools.schemaframework.TableDefinition definition = new org.eclipse.persistence.tools.schemaframework.TableDefinition();
definition.setName("COL_SLOG");
definition.addField("REST_ID", java.math.BigDecimal.class, 15);
definition.addField("SLOGAN", String.class, 200);
return definition;
}
public static org.eclipse.persistence.tools.schemaframework.TableDefinition servicesTableDefinition() {
org.eclipse.persistence.tools.schemaframework.TableDefinition definition = new org.eclipse.persistence.tools.schemaframework.TableDefinition();
definition.setName("COL_SERVICES");
definition.addField("REST_ID", java.math.BigDecimal.class, 15);
definition.addField("SERVICE", String.class, 5);
return definition;
}
public static org.eclipse.persistence.tools.schemaframework.TableDefinition licensesTableDefinition() {
org.eclipse.persistence.tools.schemaframework.TableDefinition definition = new org.eclipse.persistence.tools.schemaframework.TableDefinition();
definition.setName("COL_LICENSE");
definition.addField("REST_ID", java.math.BigDecimal.class, 15);
definition.addField("LICENSE", String.class, 2);
definition.addField("STATUS", Integer.class);
return definition;
}
/**
* Return a platform independant definition of the database table.
*/
public static org.eclipse.persistence.tools.schemaframework.TableDefinition tableDefinition() {
org.eclipse.persistence.tools.schemaframework.TableDefinition definition = new org.eclipse.persistence.tools.schemaframework.TableDefinition();
definition.setName("COL_REST");
definition.addIdentityField("ID", java.math.BigDecimal.class, 15);
definition.addField("NAME", String.class, 40);
return definition;
}
public String toString() {
StringBuffer buf = new StringBuffer();
buf.append("Restaurant: " + this.getName());
return buf.toString();
}
static class LocationComparator implements Comparator {
@Override
public int compare(Object object1, Object object2) {
if ((object1.getClass() != Location.class) || (object2.getClass() != Location.class)) {
throw new ClassCastException("Invalid comparison : " + object1 + ", " + object2);
}
Location loc1 = (Location)object1;
Location loc2 = (Location)object2;
return String.CASE_INSENSITIVE_ORDER.compare(loc1.getArea(), loc2.getArea());
}
}
}