PageRenderTime 29ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/com/google/appengine/datanucleus/test/UnidirectionalSuperclassTableChildJDO.java

http://datanucleus-appengine.googlecode.com/
Java | 221 lines | 152 code | 49 blank | 20 comment | 12 complexity | bead00bc072f5e938b4f248db4bf3166 MD5 | raw file
Possible License(s): Apache-2.0
  1. /**********************************************************************
  2. Copyright (c) 2011 Google Inc.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. **********************************************************************/
  13. package com.google.appengine.datanucleus.test;
  14. import java.util.Date;
  15. import javax.jdo.annotations.Discriminator;
  16. import javax.jdo.annotations.DiscriminatorStrategy;
  17. import javax.jdo.annotations.Extension;
  18. import javax.jdo.annotations.IdGeneratorStrategy;
  19. import javax.jdo.annotations.PersistenceCapable;
  20. import javax.jdo.annotations.Persistent;
  21. import javax.jdo.annotations.PrimaryKey;
  22. public class UnidirectionalSuperclassTableChildJDO {
  23. public static final String DISCRIMINATOR_TOP = "Top";
  24. public static final String DISCRIMINATOR_MIDDLE = "Middle";
  25. public static final String DISCRIMINATOR_BOTTOM = "Bottom";
  26. @PersistenceCapable(detachable = "true")
  27. @Discriminator(strategy = DiscriminatorStrategy.VALUE_MAP, column = "TYPE", value = DISCRIMINATOR_TOP)
  28. public static class UnidirTop {
  29. @PrimaryKey
  30. @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  31. @Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value="true")
  32. private String id;
  33. private String str;
  34. private String name;
  35. public String getId() {
  36. return id;
  37. }
  38. public String getStr() {
  39. return str;
  40. }
  41. public void setStr(String str) {
  42. this.str = str;
  43. }
  44. public String getName() {
  45. return name;
  46. }
  47. public void setName(String name) {
  48. this.name = name;
  49. }
  50. public void setId(String id) {
  51. this.id = id;
  52. }
  53. /**
  54. * We get weird test failures if we give Flight an equals() method due to
  55. * attempts to read fields of deleted objects. TODO(maxr) Straighten this
  56. * out.
  57. */
  58. public boolean customEquals(Object o) {
  59. if (this == o) {
  60. return true;
  61. }
  62. if (o == null || getClass() != o.getClass()) {
  63. return false;
  64. }
  65. UnidirTop unidir = (UnidirTop) o;
  66. if (str != null ? !str.equals(unidir.str) : unidir.str != null) {
  67. return false;
  68. }
  69. if (name != null ? !name.equals(unidir.name) : unidir.name != null) {
  70. return false;
  71. }
  72. return true;
  73. }
  74. public int getPropertyCount() {
  75. return 3; // str, name, TYPE
  76. }
  77. }
  78. @PersistenceCapable(detachable = "true")
  79. @Discriminator(value = DISCRIMINATOR_MIDDLE)
  80. public static class UnidirMiddle extends UnidirTop {
  81. private Date date;
  82. public Date getDate() {
  83. return date;
  84. }
  85. public void setDate(Date date) {
  86. this.date = date;
  87. }
  88. public int getPropertyCount() {
  89. return 4; // str, name, date, TYPE
  90. }
  91. }
  92. @PersistenceCapable(detachable = "true")
  93. @Discriminator(value = DISCRIMINATOR_BOTTOM)
  94. public static class UnidirBottom extends UnidirMiddle {
  95. private Integer integer;
  96. public Integer getInteger() {
  97. return integer;
  98. }
  99. public void setInteger(Integer integer) {
  100. this.integer = integer;
  101. }
  102. public int getPropertyCount() {
  103. return 5; // str, name, date, integer, TYPE
  104. }
  105. }
  106. @PersistenceCapable(detachable = "true")
  107. public static class UnidirTopWithIndexColumn {
  108. @PrimaryKey
  109. @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  110. @Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value="true")
  111. private String id;
  112. private String str;
  113. private String name;
  114. @SuppressWarnings("unused")
  115. private int index;
  116. public String getId() {
  117. return id;
  118. }
  119. public String getStr() {
  120. return str;
  121. }
  122. public void setStr(String str) {
  123. this.str = str;
  124. }
  125. public String getName() {
  126. return name;
  127. }
  128. public void setName(String name) {
  129. this.name = name;
  130. }
  131. }
  132. @PersistenceCapable
  133. public static class UnidirTopWithOverriddenIdColumn {
  134. @SuppressWarnings("unused")
  135. @PrimaryKey
  136. @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY, column = "something_else")
  137. @Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value="true")
  138. private String id;
  139. }
  140. @PersistenceCapable(detachable = "true")
  141. @Discriminator(column = "TYPE")
  142. public static class UnidirTopEncodedStringPkSeparateNameField {
  143. @PrimaryKey
  144. @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  145. @Extension(vendorName = "datanucleus", key="gae.encoded-pk", value="true")
  146. private String id;
  147. @Persistent
  148. @Extension(vendorName = "datanucleus", key="gae.pk-name", value="true")
  149. private String name;
  150. public String getId() {
  151. return id;
  152. }
  153. public void setId(String id) {
  154. this.id = id;
  155. }
  156. public String getName() {
  157. return name;
  158. }
  159. public void setName(String name) {
  160. this.name = name;
  161. }
  162. }
  163. @PersistenceCapable(detachable = "true")
  164. public static class UnidirMiddleEncodedStringPkSeparateNameField extends UnidirTopEncodedStringPkSeparateNameField {
  165. }
  166. @PersistenceCapable(detachable = "true")
  167. public static class UnidirBottomEncodedStringPkSeparateNameField extends UnidirMiddleEncodedStringPkSeparateNameField {
  168. }
  169. }