PrpGetAttributes.java
package com.mycim.webapp.actions.attribute;
import com.fa.sesa.i18n.I18nUtils;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.collections.CollectionUtils;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.bas.Relation;
import com.mycim.valueobject.security.UserGroup;
import com.mycim.webapp.WebUtils;
import com.mycim.webapp.actions.PrpSetupAction;
import com.mycim.webapp.forms.RootForm;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* @author Johnson.Wang
* @version 6.0.0
* @date 2019/9/2
**/
public class PrpGetAttributes extends PrpSetupAction {
private static final boolean RELEASED = true;
private static final String GROUP_NAMES_DELIMETER_KEY = ",";
private static final String USER_GROUPS_KEY = "ADMINISTRATORS,SYSTEM";
private static final String ISHASANYGROUPS = "isHasAnyGroups";
@Override
public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
RootForm theform = (RootForm) form;
String objectType = getObjectType(request);
theform.setObjectType(objectType);
long instanceRrn = baseService.getNamedObjectRrn(theform.getInstanceId(), getNamedSpace(getObject(request),
LocalContext
.getFacilityRrn()),
getObject(request));
List<Map> attributes = sysService
.getAllAttributes(instanceRrn, getNamedSpace(getObject(request), LocalContext.getFacilityRrn()),
objectType, I18nUtils.getCurrentLanguage());
if (CollectionUtils.isEmpty(attributes)) {
theform.setPages(0);
}
request.setAttribute(ISHASANYGROUPS, isHasAnyGroups());
request.setAttribute("collection", attributes);
theform.setTransId("modify");
return (new ActionForward(mapping.getInput()));
}
public String getObject(HttpServletRequest request) {
String object = WebUtils.getParameter("objecttype", request);
if (object.equalsIgnoreCase("entity")) {
object = ObjectList.EQP_KEY;
}
if (object.equalsIgnoreCase("item")) {
object = ObjectList.PRODUCT_KEY;
}
if (object.equalsIgnoreCase("route")) {
object = ObjectList.WFL_KEY;
}
if (object.equalsIgnoreCase("process")) {
object = ObjectList.WFL_KEY;
}
return object;
}
public String getObjectType(HttpServletRequest request) {
String object = WebUtils.getParameter("objecttype", request);
if (object.equalsIgnoreCase("entity")) {
object = "equipment";
}
if (object.equalsIgnoreCase("item")) {
object = "product";
}
if (object.equalsIgnoreCase("route")) {
object = "ROUTE";
}
if (object.equalsIgnoreCase("process")) {
object = "PROCESS";
}
return object;
}
/**
* 判断用户是否属于用户组
*/
private boolean isHasAnyGroups() {
boolean hasAnyGroup = false;
String[] groups = USER_GROUPS_KEY.split(GROUP_NAMES_DELIMETER_KEY);
for (int i = 0; i < groups.length; i++) {
String groupId = groups[i];
if (checkUserGroup(groupId)) {
hasAnyGroup = true;
break;
}
}
return hasAnyGroup;
}
private boolean checkUserGroup(String groupId) {
boolean existed = false;
UserGroup userGroup = new UserGroup(groupId, baseService
.getNamedSpace(LocalContext.getFacilityRrn(), ObjectList.USERGROUP_KEY), ObjectList.USERGROUP_KEY);
userGroup = securityService.getUserGroup(userGroup);
if (userGroup != null) {
Relation relation = new Relation();
relation.setFromRrn(LocalContext.getUserRrn());
relation.setToRrn(userGroup.getInstanceRrn());
if (baseService.getRelation(relation) == null) {
existed = false;
} else {
existed = true;
}
}
return existed;
}
}