Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @SuppressWarnings("unchecked")
- public static <T> T insertOrUpdate(Dao dao, T obj) {
- if (obj == null)
- return null;
- Entity<T> en = (Entity<T>) dao.getEntity(obj.getClass());
- if (en.getPkType() == PkType.UNKNOWN)
- throw new IllegalArgumentException("no support , without pks");
- boolean doInsert = false;
- switch (en.getPkType()) {
- case ID:
- Number n = (Number) en.getIdField().getValue(obj);
- if (n == null || n.intValue() == 0)
- doInsert = true;
- break;
- case NAME:
- if (null == en.getNameField().getValue(obj))
- doInsert = false;
- break;
- case COMPOSITE:
- doInsert = true;
- for(MappingField mf :en.getCompositePKFields()) {
- Object v = mf.getValue(obj);
- if (v != null) {
- if (v instanceof Number && ((Number)v).intValue() != 0) {
- continue;
- }
- doInsert = true;
- }
- }
- case UNKNOWN:
- throw Lang.impossible();
- }
- if (doInsert) {
- return dao.insert(obj);
- } else{
- dao.update(obj);
- return obj;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement