blob: 18de69608f6e9aea736ee0a29ef6dfb1d386e51d [file] [log] [blame]
/*
* 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:
// dminsky - initial API and implementation
package org.eclipse.persistence.testing.tests.unitofwork;
import java.util.Vector;
import org.eclipse.persistence.descriptors.*;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.mappings.foundation.*;
import org.eclipse.persistence.tools.schemaframework.TableDefinition;
public class MutableAttributeObject {
protected int id;
// supported byte[] type
protected byte[] byteArray;
// java.util types
protected java.util.Calendar utilCalendar;
protected java.util.Date utilDate;
// java.sql types
protected java.sql.Date sqlDate;
protected java.sql.Time sqlTime;
protected java.sql.Timestamp sqlTimestamp;
// custom java.util.Date subclass
protected DateSubclass dateSubclass;
public MutableAttributeObject() {
super();
}
public static MutableAttributeObject example1() {
MutableAttributeObject container = new MutableAttributeObject();
long timeNow = System.currentTimeMillis();
// byte[] with all values set to 1
byte[] someBytes = new byte[128];
java.util.Arrays.fill(someBytes, (byte)1);
container.setByteArray(someBytes);
// java.util types
container.setUtilDate(new java.util.Date(timeNow));
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.setTimeInMillis(timeNow);
container.setUtilCalendar(cal);
// java.sql types
container.setSqlTime(new java.sql.Time(timeNow));
container.setSqlDate(new java.sql.Date(timeNow));
container.setSqlTimestamp(new java.sql.Timestamp(timeNow));
// custom date subclass
container.setDateSubclass(new DateSubclass());
return container;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public byte[] getByteArray() {
return byteArray;
}
public void setByteArray(byte[] byteArray) {
this.byteArray = byteArray;
}
public java.util.Calendar getUtilCalendar() {
return utilCalendar;
}
public void setUtilCalendar(java.util.Calendar utilCalendar) {
this.utilCalendar = utilCalendar;
}
public java.util.Date getUtilDate() {
return utilDate;
}
public void setUtilDate(java.util.Date utilDate) {
this.utilDate = utilDate;
}
public java.sql.Time getSqlTime() {
return sqlTime;
}
public void setSqlTime(java.sql.Time sqlTime) {
this.sqlTime = sqlTime;
}
public java.sql.Timestamp getSqlTimestamp() {
return sqlTimestamp;
}
public void setSqlTimestamp(java.sql.Timestamp sqlTimestamp) {
this.sqlTimestamp = sqlTimestamp;
}
public java.sql.Date getSqlDate() {
return sqlDate;
}
public void setSqlDate(java.sql.Date sqlDate) {
this.sqlDate = sqlDate;
}
public DateSubclass getDateSubclass() {
return dateSubclass;
}
public void setDateSubclass(DateSubclass dateSubclass) {
this.dateSubclass = dateSubclass;
}
public static RelationalDescriptor descriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
/* define the class, table and descriptor properties. */
descriptor.setJavaClass(MutableAttributeObject.class);
descriptor.setTableName("MUTABLE_TYPE");
descriptor.setPrimaryKeyFieldName("ID");
descriptor.setSequenceNumberFieldName("ID");
descriptor.setSequenceNumberName("SEQ");
/* Next define the direct mappings. */
descriptor.addDirectMapping("id", "ID");
descriptor.addDirectMapping("byteArray", "BYTE_ARRAY");
descriptor.addDirectMapping("dateSubclass", "DATE_SUBCLASS");
descriptor.addDirectMapping("sqlDate", "SQL_DATE");
descriptor.addDirectMapping("sqlTime", "SQL_TIME");
descriptor.addDirectMapping("sqlTimestamp", "SQL_TIMESTAMP");
descriptor.addDirectMapping("utilCalendar", "UTIL_CALENDAR");
descriptor.addDirectMapping("utilDate", "UTIL_DATE");
/* Configure all of the mappings as mutable, except the id mapping */
Vector<DatabaseMapping> mappings = descriptor.getMappings();
for (int i = 0; i < mappings.size(); i++) {
AbstractDirectMapping mapping = (AbstractDirectMapping)mappings.get(i);
if (!mapping.getAttributeName().equalsIgnoreCase("id")) {
mapping.setIsMutable(true);
}
}
return descriptor;
}
public static TableDefinition tableDefinition() {
TableDefinition definition = new TableDefinition();
definition.setName("MUTABLE_TYPE");
// identity field
definition.addIdentityField("ID", java.lang.Integer.class);
// regular direct mapping fields
definition.addField("BYTE_ARRAY", java.sql.Blob.class); // byte[] mapping to BLOB
definition.addField("DATE_SUBCLASS", java.sql.Date.class);
definition.addField("SQL_DATE", java.sql.Date.class);
definition.addField("SQL_TIME", java.sql.Time.class);
definition.addField("SQL_TIMESTAMP", java.sql.Timestamp.class);
definition.addField("UTIL_CALENDAR", java.sql.Timestamp.class);
definition.addField("UTIL_DATE", java.sql.Date.class);
return definition;
}
}