1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.tuigwaa.database.function;
17
18 import org.seasar.tuigwaa.model.common.EntityUtils;
19
20 import com.isenshi.util.functor.UnaryFunction;
21
22 public class SaveOrUpdateExeFunction extends AbstractExeFunction implements
23 UnaryFunction {
24
25 public Object evaluate(Object obj) {
26 EntityUtils.setUser(obj);
27 EntityUtils.setTimestamp(obj);
28
29 if (EntityUtils.hasId(obj) && EntityUtils.manyToMnayFlag(getEntity())) {
30 Object savedObj = getSession().load(getJavaClass(),
31 EntityUtils.getId(obj));
32 EntityUtils.copyPropertiesCollectionEscape(obj, savedObj, getEntity());
33 EntityUtils.bindSelfObject(savedObj, getEntity());
34 getSession().saveOrUpdate(savedObj);
35 } else if(EntityUtils.hasId(obj)){
36 EntityUtils.bindSelfObject(obj, getEntity());
37 getSession().update(obj);
38 }else{
39 EntityUtils.bindSelfObject(obj, getEntity());
40 save(obj);
41 }
42 return null;
43 }
44 }