/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved. * */ package com.sleepycat.persist.test; import static com.sleepycat.persist.model.Relationship.MANY_TO_ONE; import com.sleepycat.persist.impl.Enhanced; import com.sleepycat.persist.impl.EnhancedAccessor; import com.sleepycat.persist.impl.EntityInput; import com.sleepycat.persist.impl.EntityOutput; import com.sleepycat.persist.impl.Format; import com.sleepycat.persist.impl.RefreshException; import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.PrimaryKey; import com.sleepycat.persist.model.SecondaryKey; /** * For running ASMifier -- adds minimal enhancements. */ @Entity class Enhanced1 implements Enhanced { @PrimaryKey private String f1; @SecondaryKey(relate=MANY_TO_ONE) private int f2; @SecondaryKey(relate=MANY_TO_ONE) private String f3; @SecondaryKey(relate=MANY_TO_ONE) private String f4; private int f5; private String f6; private String f7; private int f8; private int f9; private int f10; private int f11; private int f12; static { EnhancedAccessor.registerClass(null, new Enhanced1()); } public Object bdbNewInstance() { return new Enhanced1(); } public Object bdbNewArray(int len) { return new Enhanced1[len]; } public boolean bdbIsPriKeyFieldNullOrZero() { return f1 == null; } public void bdbWritePriKeyField(EntityOutput output, Format format) throws RefreshException { output.writeKeyObject(f1, format); } public void bdbReadPriKeyField(EntityInput input, Format format) throws RefreshException { f1 = (String) input.readKeyObject(format); } public void bdbWriteSecKeyFields(EntityOutput output) throws RefreshException { /* If primary key is an object: */ output.registerPriKeyObject(f1); /* Always: */ output.writeInt(f2); output.writeObject(f3, null); output.writeObject(f4, null); } public void bdbReadSecKeyFields(EntityInput input, int startField, int endField, int superLevel) throws RefreshException { /* If primary key is an object: */ input.registerPriKeyObject(f1); if (superLevel <= 0) { switch (startField) { case 0: f2 = input.readInt(); if (endField == 0) break; case 1: f3 = (String) input.readObject(); if (endField == 1) break; case 2: f4 = (String) input.readObject(); } } } public void bdbWriteNonKeyFields(EntityOutput output) throws RefreshException { output.writeInt(f5); output.writeObject(f6, null); output.writeObject(f7, null); output.writeInt(f8); output.writeInt(f9); output.writeInt(f10); output.writeInt(f11); output.writeInt(f12); } public void bdbReadNonKeyFields(EntityInput input, int startField, int endField, int superLevel) throws RefreshException { if (superLevel <= 0) { switch (startField) { case 0: f5 = input.readInt(); if (endField == 0) break; case 1: f6 = (String) input.readObject(); if (endField == 1) break; case 2: f7 = (String) input.readObject(); if (endField == 2) break; case 3: f8 = input.readInt(); if (endField == 3) break; case 4: f9 = input.readInt(); if (endField == 4) break; case 5: f10 = input.readInt(); if (endField == 5) break; case 6: f11 = input.readInt(); if (endField == 6) break; case 7: f12 = input.readInt(); } } } public void bdbWriteCompositeKeyFields(EntityOutput output, Format[] formats) { } public void bdbReadCompositeKeyFields(EntityInput input, Format[] formats) { } public boolean bdbNullifyKeyField(Object o, int field, int superLevel, boolean isSecField, Object keyElement) { if (superLevel > 0) { return false; } else if (isSecField) { switch (field) { case 1: if (f3 != null) { f3 = null; return true; } else { return false; } case 2: if (f4 != null) { f4 = null; return true; } else { return false; } default: return false; } } else { switch (field) { case 1: if (f6 != null) { f6 = null; return true; } else { return false; } case 2: if (f7 != null) { f7 = null; return true; } else { return false; } default: return false; } } } public Object bdbGetField(Object o, int field, int superLevel, boolean isSecField) { if (superLevel > 0) { } else if (isSecField) { switch (field) { case 0: return Integer.valueOf(f2); case 1: return f3; case 2: return f4; } } else { switch (field) { case 0: return Integer.valueOf(f5); case 1: return f6; case 2: return f7; } } return null; } public void bdbSetField(Object o, int field, int superLevel, boolean isSecField, Object value) { if (superLevel > 0) { } else if (isSecField) { switch (field) { case 0: f2 = ((Integer) value).intValue(); return; case 1: f3 = (String) value; return; case 2: f4 = (String) value; return; } } else { switch (field) { case 0: f5 = ((Integer) value).intValue(); return; case 1: f6 = (String) value; return; case 2: f7 = (String) value; return; } } } public void bdbSetPriField(Object o, Object value) { f1 = (String) value; } }