Advertisement
Guest User

Untitled

a guest
Apr 21st, 2015
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. @SuppressWarnings("unchecked")
  2. public static <T> T insertOrUpdate(Dao dao, T obj) {
  3. if (obj == null)
  4. return null;
  5. Entity<T> en = (Entity<T>) dao.getEntity(obj.getClass());
  6. if (en.getPkType() == PkType.UNKNOWN)
  7. throw new IllegalArgumentException("no support , without pks");
  8. boolean doInsert = false;
  9. switch (en.getPkType()) {
  10. case ID:
  11. Number n = (Number) en.getIdField().getValue(obj);
  12. if (n == null || n.intValue() == 0)
  13. doInsert = true;
  14. break;
  15. case NAME:
  16. if (null == en.getNameField().getValue(obj))
  17. doInsert = false;
  18. break;
  19. case COMPOSITE:
  20. doInsert = true;
  21. for(MappingField mf :en.getCompositePKFields()) {
  22. Object v = mf.getValue(obj);
  23. if (v != null) {
  24. if (v instanceof Number && ((Number)v).intValue() != 0) {
  25. continue;
  26. }
  27. doInsert = true;
  28. }
  29. }
  30. case UNKNOWN:
  31. throw Lang.impossible();
  32. }
  33. if (doInsert) {
  34. return dao.insert(obj);
  35. } else{
  36. dao.update(obj);
  37. return obj;
  38. }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement