package com.mossle.user.support;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.mossle.core.mapper.BeanMapper;
import com.mossle.user.persistence.domain.UserAttr;
import com.mossle.user.persistence.domain.UserBase;
import com.mossle.user.persistence.domain.UserSchema;
public class UserBaseWrapper extends UserBase {
private transient BeanMapper beanMapper = new BeanMapper();
private transient List<UserAttrWrapper> userAttrWrappers = new ArrayList<UserAttrWrapper>();
public UserBaseWrapper() {
}
public UserBaseWrapper(UserBase userBase) {
beanMapper.copy(userBase, this);
if (userBase.getUserRepo() == null) {
return;
}
for (UserSchema userSchema : userBase.getUserRepo().getUserSchemas()) {
boolean notFound = true;
for (UserAttr userAttr : userBase.getUserAttrs()) {
if (userAttr.getUserSchema().getId().equals(userSchema.getId())) {
notFound = false;
userAttrWrappers.add(new UserAttrWrapper(userAttr));
break;
}
}
if (notFound) {
userAttrWrappers.add(new UserAttrWrapper(userSchema));
}
}
}
public List<UserAttrWrapper> getUserAttrWrappers() {
return userAttrWrappers;
}
// ~ ======================================================================
public Map<String, Object> toMap() {
Map<String, Object> map = new HashMap<String, Object>();
this.copyUserBase(map, this);
for (UserAttrWrapper userAttrWrapper : userAttrWrappers) {
this.copyUserAttr(map, userAttrWrapper);
}
return map;
}
public void copyUserBase(Map<String, Object> map, UserBase userBase) {
map.put("id", userBase.getId());
map.put("username", userBase.getUsername());
map.put("displayName", userBase.getDisplayName());
map.put("email", userBase.getEmail());
map.put("mobile", userBase.getMobile());
map.put("ref", userBase.getRef());
map.put("status", userBase.getStatus());
}
public void copyUserAttr(Map<String, Object> map,
UserAttrWrapper userAttrWrapper) {
map.put(userAttrWrapper.getCode(), userAttrWrapper.getValue());
}
}