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