CimSetupAction.java
/*
* @ Copyright 2001 FA Software;
* All right reserved. No part of this program may be reproduced or
* transmitted in any form or by any means, electronic or
* mechanical, including photocopying, recording, or by any
* information storage or retrieval system without written
* permission from FA Software, except for inclusion of brief
* quotations in a review.
*/
package com.mycim.webapp.actions;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.context.spring.SpringContext;
import com.mycim.framework.logging.Logger;
import com.mycim.framework.logging.LoggerFactory;
import com.mycim.framework.utils.beans.PropertyUtils;
import com.mycim.server.ems.service.EmsService;
import com.mycim.server.security.service.SecurityService;
import com.mycim.valueobject.bas.NamedObject;
import com.mycim.valueobject.bas.Relation;
import com.mycim.valueobject.consts.LinkTypeList;
import com.mycim.valueobject.security.Station;
import com.mycim.valueobject.security.User;
import com.mycim.valueobject.security.UserGroup;
import com.mycim.valueobject.sys.ReferenceFile;
import com.mycim.valueobject.sys.ReferenceFileDetail;
import com.mycim.webapp.Constants;
import com.mycim.webapp.forms.RootForm;
import com.mycim.webapp.forms.security.StationInfoForm;
import com.mycim.webapp.forms.security.UserInfoForm;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public class CimSetupAction extends AbstractAction {
private static final Logger logger = LoggerFactory.getLogger(CimSetupAction.class);
protected SecurityService securityService = SpringContext.getBean(SecurityService.class);
protected EmsService emsService = SpringContext.getBean(EmsService.class);
protected void process(NamedObject instance) {
String action = instance.getTransId();
long instanceRrn = 0;
if (action.equals(Constants.CREATE_KEY)) {
if (instance instanceof Station) {
instanceRrn = securityService.insertStation((Station) instance);
} else if (instance instanceof User) {
instanceRrn = securityService.insertUser((User) instance);
} else if (instance instanceof UserGroup) {
instanceRrn = securityService.insertUserGroup((UserGroup) instance);
} else if (instance instanceof ReferenceFile) {
instanceRrn = sysService.insertReferenceFile((ReferenceFile) instance);
} else if (instance instanceof ReferenceFileDetail) {
instanceRrn = sysService.insertReferenceFileDetail((ReferenceFileDetail) instance);
}
instance.setInstanceRrn(instanceRrn);
} else if (action.equals(Constants.DELETE_KEY)) {
if (instance instanceof Station) {
securityService.deleteStation((Station) instance);
} else if (instance instanceof User) {
securityService.deleteUser((User) instance);
} else if (instance instanceof UserGroup) {
securityService.deleteUserGroup((UserGroup) instance);
} else if (instance instanceof ReferenceFile) {
sysService.deleteReferenceFile((ReferenceFile) instance);
} else if (instance instanceof ReferenceFileDetail) {
sysService.deleteReferenceFileDetail((ReferenceFileDetail) instance);
}
} else if (action.equals(Constants.MODIFY_KEY)) {
if (instance instanceof Station) {
securityService.updateStation((Station) instance);
} else if (instance instanceof User) {
securityService.updateUser((User) instance);
} else if (instance instanceof UserGroup) {
securityService.updateUserGroup((UserGroup) instance);
} else if (instance instanceof ReferenceFile) {
sysService.updateReferenceFile((ReferenceFile) instance);
} else if (instance instanceof ReferenceFileDetail) {
sysService.updateReferenceFileDetail((ReferenceFileDetail) instance);
}
}
}
protected Collection getUserGroups(User user) {
return securityService.getUserGroups(user);
}
protected List<Relation> getEquipments(Station station) {
return securityService.getEquipmentOfStation(station.getInstanceRrn());
}
protected String getReferValus(String ref, String key_value, String getValue) {
return sysService.referenceDetailExchangeNull(ref, key_value, getValue);
}
protected List<String> getRefFileValues(String ref, String key_value, String getValue) {
return sysService.getRefFileValues(ref, key_value, getValue);
}
protected Collection getReferenceFileValues(ReferenceFile referenceFile) {
return sysService.getReferenceFileDetails(referenceFile.getInstanceRrn());
}
protected List<Relation> getUsers(Station station) {
return securityService.getUserOfStation(station.getInstanceRrn());
}
protected List<Relation> getOperations(Station station) {
return securityService.getOperationOfStation(station.getInstanceRrn());
}
protected Collection getUsers(UserGroup userGroup) {
return securityService.getUsers(userGroup);
}
protected void addUserToGroup(User user, UserGroup userGroup) {
Relation relation = buildRelation(user, userGroup);
if (relation != null) {
relation.setTransId(Constants.MODIFY_KEY);
relation.setTransPerformedby(LocalContext.getUserId());
relation.setLinkType(LinkTypeList.USER_USERGROUP_KEY);
// if this relation exists do nothing
if (baseService.getRelation(relation) == null) {
relation.setTransId(Constants.CREATE_KEY);
securityService.addUserToUsergroup(relation);
}
}
}
protected Relation buildRelation(NamedObject fromObject, NamedObject toObject) {
Relation relation = new Relation();
if (fromObject.getInstanceRrn() <= 0) {
long fromRrn = baseService.getNamedObjectRrn(fromObject);
if (fromRrn > 0) {
relation.setFromRrn(fromRrn);
} else {
return null;
}
} else {
relation.setFromRrn(fromObject.getInstanceRrn());
}
if (toObject.getInstanceRrn() <= 0) {
long toRrn = baseService.getNamedObjectRrn(toObject);
if (toRrn > 0) {
relation.setToRrn(toRrn);
} else {
return null;
}
} else {
relation.setToRrn(toObject.getInstanceRrn());
}
return relation;
}
protected void addUserToGroup(Long userRrn, Long groupRrn) {
Relation relation = new Relation(userRrn, groupRrn, LinkTypeList.USER_USERGROUP_KEY);
// if this relation exists do nothing
if (baseService.getRelation(relation) == null) {
securityService.addUserToUsergroup(relation);
}
}
protected void removeUserFromGroup(User user, UserGroup userGroup) {
Relation relation = buildRelation(user, userGroup);
if (relation == null) {
logger.debug("!----error in the remove user form userGroup!---!");
} else {
relation.setLinkType(LinkTypeList.USER_USERGROUP_KEY);
// if this relation is not existed do nothing
if (baseService.getRelation(relation) != null) {
logger.info("relation " + relation.getFromRrn() + " " + relation.getToRrn());
securityService.removeUserFromGroup(relation);
}
}
}
@Override
protected void doCopy(RootForm theform, NamedObject instance) throws Exception {
String origId = theform.getInstanceId();
if (instance instanceof User) {
instance = getInstance(instance);
} else if (instance instanceof UserGroup) {
instance = getInstance(instance);
} else if (instance instanceof ReferenceFile) {
instance = getInstance(instance);
} else if (instance instanceof Station) {
instance = getInstance(instance);
}
// populate the new information thru the new instance id
PropertyUtils.copyProperties(theform, instance);
// avoid to copy password bugs
if (instance instanceof User) {
((UserInfoForm) theform).setPassword("");
((UserInfoForm) theform).setPasswordConfirm("");
} else if (instance instanceof Station) {
((StationInfoForm) theform).setPassword("");
((StationInfoForm) theform).setPasswordConfirm("");
((StationInfoForm) theform).setPasswordExpiredPeriod(null);
}
// and restore the original Id
theform.setInstanceId(origId);
}
@Override
protected NamedObject getInstance(NamedObject instance) {
// temp object to store the value object retrived from database
NamedObject _instance = null;
if (instance instanceof Station) {
_instance = securityService.getStation((Station) instance);
} else if (instance instanceof User) {
_instance = securityService.getUser((User) instance);
} else if (instance instanceof UserGroup) {
_instance = securityService.getUserGroup((UserGroup) instance);
} else if (instance instanceof ReferenceFile) {
_instance = sysService.getReferenceFile((ReferenceFile) instance);
} else if (instance instanceof ReferenceFileDetail) {
_instance = sysService.getReferenceFileDetail((ReferenceFileDetail) instance);
}
if (_instance != null) {
instance = _instance;
}
return instance;
}
protected void changeUserPassword(User user) {
securityService.changeUserPassword(user);
}
protected String connectMesSystem(Map objectInfo, long facilityRrn, String user) {
// todo 接口相关的待完成
return null;
}
}