/******************************************************************************* | |
* Copyright (c) 1998, 2013 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.inheritance; | |
import java.io.*; | |
import java.util.Enumeration; | |
import org.eclipse.persistence.descriptors.*; | |
import org.eclipse.persistence.sessions.*; | |
import org.eclipse.persistence.mappings.*; | |
import org.eclipse.persistence.tools.schemaframework.*; | |
import org.eclipse.persistence.testing.models.inheritance.PC; | |
public class Computer implements Serializable { | |
public int id; | |
public int memory; | |
public int processorSpeed; | |
public String processorMake; | |
public String manufacturer; | |
public static void addToDescriptor(ClassDescriptor descriptor) { | |
// In order for this domain model to work with all of our tests, it must be set | |
// up so that the transformation mapping below is not added twice. | |
// As a result, we check for the mapping before adding it. | |
// The reason this mapping is not added in the project is that some Mapping Workbench | |
// tests rely on the ammendment method. | |
Enumeration mappings = descriptor.getMappings().elements(); | |
while (mappings.hasMoreElements()) { | |
DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement(); | |
if (mapping.isTransformationMapping()) { | |
Object ctype = ((TransformationMapping)mapping).getFieldNameToMethodNames().get("CTYPE"); | |
if (ctype != null) { | |
return; | |
} | |
; | |
} | |
} | |
TransformationMapping typeMapping = new TransformationMapping(); | |
typeMapping.addFieldTransformation("CTYPE", "getComputerType"); | |
descriptor.addMapping(typeMapping); | |
} | |
public static Mac example1() { | |
Mac mac = new Mac(); | |
mac.processorSpeed = 166; | |
mac.memory = 64; | |
mac.processorMake = "Motorolla 6046"; | |
mac.manufacturer = "Apple"; | |
return mac; | |
} | |
public static IBMPC example2() { | |
IBMPC pc = new IBMPC(); | |
pc.processorSpeed = 133; | |
pc.memory = 32; | |
pc.processorMake = "Intel Pentium"; | |
pc.manufacturer = "Dell"; | |
pc.isClone = "true"; | |
return pc; | |
} | |
public static IBMPC example3() { | |
IBMPC pc = new IBMPC(); | |
pc.processorSpeed = 450; | |
pc.memory = 128; | |
pc.processorMake = "Intel Pentium II"; | |
pc.manufacturer = "Compact"; | |
pc.isClone = "true"; | |
return pc; | |
} | |
public static IBMPC example3a() { | |
IBMPC pc = new IBMPC(); | |
pc.processorSpeed = 450; | |
pc.memory = 128; | |
pc.processorMake = "Intel Pentium II"; | |
pc.manufacturer = "IBM"; | |
pc.isClone = "false"; | |
return pc; | |
} | |
public static PC example4() { | |
PC pc = new PC(); | |
pc.processorSpeed = 33; | |
pc.memory = 8; | |
pc.processorMake = "Motorolla 3000"; | |
pc.manufacturer = "Apple"; | |
return pc; | |
} | |
public static Mainframe example5() { | |
Mainframe mainframe = new Mainframe(); | |
mainframe.processorSpeed = 5000; | |
mainframe.memory = 1600; | |
mainframe.processorMake = "R6000"; | |
mainframe.manufacturer = "IBM"; | |
mainframe.numberOfProcessors = 12; | |
return mainframe; | |
} | |
public static Class getClassFromRow(Record row) { | |
if (row.get("CTYPE").equals("PC")) { | |
if (row.get("PCTYPE").equals("IBM")) { | |
return org.eclipse.persistence.testing.models.inheritance.IBMPC.class; | |
} else if (row.get("PCTYPE").equals("MAC")) { | |
return org.eclipse.persistence.testing.models.inheritance.Mac.class; | |
} else { | |
return PC.class; | |
} | |
} else if (row.get("CTYPE").equals("MF")) { | |
return org.eclipse.persistence.testing.models.inheritance.Mainframe.class; | |
} else { | |
return org.eclipse.persistence.testing.models.inheritance.Computer.class; | |
} | |
} | |
public String getComputerType() { | |
return "COM"; | |
} | |
/** | |
* Return the view for Oracle. | |
*/ | |
public static ViewDefinition oracleView() { | |
ViewDefinition definition = new ViewDefinition(); | |
definition.setName("AllComputers"); | |
definition.setSelectClause("Select C.*, M.*" + " from INH_COMP C, INH_MF M" + " where C.id = M.MF_ID (+)"); | |
return definition; | |
} | |
/** | |
* Return the view for Sybase. | |
*/ | |
public static ViewDefinition sybaseView() { | |
ViewDefinition definition = new ViewDefinition(); | |
definition.setName("AllComputers"); | |
definition.setSelectClause("Select C.*, M.*" + " from INH_COMP C, INH_MF M" + " where C.ID *= M.MF_ID"); | |
return definition; | |
} | |
/** | |
* Return the view for MySQL. It is supported as of MySQL 5.0.1 | |
*/ | |
public static ViewDefinition mySQLView() { | |
ViewDefinition definition = new ViewDefinition(); | |
definition.setName("AllComputers"); | |
definition.setSelectClause("Select C.*, M.*" + " from INH_COMP C left join INH_MF M on C.ID = M.MF_ID"); | |
return definition; | |
} | |
} |