blob: 2298e47d21fed3c4cf46d3ed5648d9d48ab0ceb0 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.openjpa.persistence.datacache.common.apps;
import java.util.Collection;
import java.util.Date;
import java.util.LinkedList;
import java.util.Locale;
import javax.persistence.CascadeType;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.apache.openjpa.persistence.PersistentCollection;
import org.apache.openjpa.persistence.jdbc.ContainerTable;
import org.apache.openjpa.persistence.jdbc.ElementJoinColumn;
import org.apache.openjpa.persistence.jdbc.OrderColumn;
import org.apache.openjpa.persistence.jdbc.XJoinColumn;
/**
* Used in testing; should be enhanced.
*/
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYP")
@DiscriminatorValue("CACHE_A")
public class CacheObjectA {
private String name = null;
private long age = 0;
@ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE })
private CacheObjectA relatedObj = null;
@PersistentCollection
@ContainerTable(name = "CACHE_STRINGCOLL",
joinColumns = @XJoinColumn(name = "ID"))
@ElementJoinColumn(name = "ELEMENT")
/*
* @ManyToMany @JoinTable(name="CACHE_STRINGCOLL",
* joinColumns=@JoinColumn(name="ID"),
* inverseJoinColumns=@JoinColumn(name="ELEMENT"))
*/
private Collection<String> stringColl = new LinkedList();
/*
* @ManyToMany @JoinTable(name="CACHE_RELATEDCOLL",
* joinColumns=@JoinColumn(name="ID"),
* inverseJoinColumns=@JoinColumn(name="ELEMENT"))
*/
@PersistentCollection
@ContainerTable(name = "CACHE_RELATEDCOLL",
joinColumns = @XJoinColumn(name = "ID"))
@ElementJoinColumn(name = "ELEMENT")
private Collection<CacheObjectA> relatedColl = new LinkedList();
/*
* @PersistentCollection @ContainerTable(name="CACHE_AS",
* joinColumns=@XJoinColumn(name="ID")) @ElementJoinColumn(name="ELEMENT")
* @OrderColumn(name="ORDR")
*/
@ManyToMany
@JoinTable(name = "CACHE_AS", joinColumns = @JoinColumn(name = "ID"),
inverseJoinColumns = @JoinColumn(name = "ELEMENT"))
private CacheObjectA[] as;
@PersistentCollection
@ContainerTable(name = "CACHE_STRINGARRAY",
joinColumns = @XJoinColumn(name = "ID"))
@ElementJoinColumn(name = "ELEMENT")
@OrderColumn(name = "ORDR")
/*
* @ManyToMany @JoinTable(name="CACHE_STRINGARRAY",
* joinColumns=@JoinColumn(name="ID"),
* inverseJoinColumns=@JoinColumn(name="ELEMENT"))
*/
private String[] stringArray;
@PersistentCollection
@ContainerTable(name = "CACHE_PRIMITIVEARRAY",
joinColumns = @XJoinColumn(name = "ID"))
@ElementJoinColumn(name = "ELEMENT")
@OrderColumn(name = "ORDR")
/*
* @ManyToMany @JoinTable(name="CACHE_PRIMITIVEARRAY",
* joinColumns=@JoinColumn(name="ID"),
* inverseJoinColumns=@JoinColumn(name="ELEMENT"))
*/
private float[] primitiveArray;
@PersistentCollection
@ContainerTable(name = "CACHE_DATEARRAY",
joinColumns = @XJoinColumn(name = "ID"))
@ElementJoinColumn(name = "ELEMENT")
@OrderColumn(name = "ORDR")
/*
* @ManyToMany @JoinTable(name="CACHE_DATEARRAY",
* joinColumns=@JoinColumn(name="ID"),
* inverseJoinColumns=@JoinColumn(name="ELEMENT"))
*/
private Date[] dateArray;
@Temporal(TemporalType.DATE)
private Date date;
private Locale locale;
@ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE })
private CacheObjectB relatedB = null;
@OneToOne(fetch = FetchType.LAZY, cascade = { CascadeType.ALL })
private CacheObjectInterface relatedInterface = null;
public CacheObjectA() {
}
public CacheObjectA(String name, long age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getAge() {
return age;
}
public void setAge(long age) {
this.age = age;
}
public CacheObjectA getRelatedObject() {
return relatedObj;
}
public void setRelatedObject(CacheObjectA o) {
relatedObj = o;
}
public Collection getStringCollection() {
return stringColl;
}
public void setStringCollection(Collection coll) {
stringColl = coll;
}
public Collection getRelatedCollection() {
return relatedColl;
}
public void setRelatedCollection(Collection coll) {
relatedColl = coll;
}
public CacheObjectA[] getRelatedArray() {
return as;
}
public void setRelatedArray(CacheObjectA[] array) {
as = array;
}
public String[] getStringArray() {
return stringArray;
}
public void setStringArray(String[] array) {
stringArray = array;
}
public void setPrimitiveArray(float[] val) {
primitiveArray = val;
}
public float[] getPrimitiveArray() {
return primitiveArray;
}
public void setDateArray(Date[] val) {
dateArray = val;
}
public Date[] getDateArray() {
return dateArray;
}
public void setDate(Date val) {
date = val;
}
public Date getDate() {
return date;
}
public void setLocale(Locale val) {
locale = val;
}
public Locale getLocale() {
return locale;
}
public void setRelatedB(CacheObjectB val) {
relatedB = val;
}
public CacheObjectB getRelatedB() {
return relatedB;
}
public void setRelatedInterface(CacheObjectInterface val) {
relatedInterface = val;
}
public CacheObjectInterface getRelatedInterface() {
return relatedInterface;
}
public String toString() {
try {
return "CacheObjectA: " + super.toString() + "; name: " + name
+ "; age: " + age;
}
catch (Exception e) {
return "CacheObjectA: " + super.toString() + "; "
+ "Exception in toString(): " + e;
}
}
}