package com.vci.client.framework.systemConfig.stafforgmanage;
|
|
import java.awt.BorderLayout;
|
import java.awt.FlowLayout;
|
import java.awt.event.ActionEvent;
|
import java.util.HashMap;
|
import java.util.LinkedHashMap;
|
import java.util.LinkedList;
|
import java.util.Map;
|
|
import javax.swing.JPanel;
|
import javax.swing.border.TitledBorder;
|
|
import com.vci.client.LogonApplication;
|
import com.vci.client.common.VCIBasePanel;
|
import com.vci.client.common.objects.UserEntityObject;
|
import com.vci.client.framework.appConfig.object.AppConfigDetailObject;
|
import com.vci.client.framework.delegate.AppConfigDetailClientDelegate;
|
import com.vci.client.framework.delegate.RightManagementClientDelegate;
|
import com.vci.client.framework.rightConfig.object.FunctionObject;
|
import com.vci.client.framework.specialrole.ModuleInterface.IModuleShow;
|
import com.vci.client.framework.systemConfig.object.CombinationObject;
|
import com.vci.client.framework.systemConfig.object.PasswordStrategyObject;
|
import com.vci.client.framework.util.RightControlUtil;
|
import com.vci.client.ui.exception.VCIException;
|
import com.vci.client.ui.locale.LocaleDisplay;
|
import com.vci.client.ui.swing.VCIOptionPane;
|
import com.vci.client.ui.swing.VCISwingUtil;
|
import com.vci.client.ui.swing.components.VCIJButton;
|
import com.vci.client.ui.swing.components.VCIJPanel;
|
import com.vci.client.ui.swing.components.table.AbstractVCIJTableDataProvider;
|
import com.vci.client.ui.swing.components.table.VCIJTableNode;
|
import com.vci.client.ui.swing.components.table.VCIJTablePanel;
|
/**
|
* <p>Title: PasswordStrategyTablePanel </p>
|
* <p>Description: 密码策略</p>
|
* <p>Copyright: Copyright (c) 2012</p>
|
* <p>Company: VCI</p>
|
* @author wangxl
|
* @time 2012-5-21
|
* @version 1.0
|
*/
|
public class PasswordStrategyTablePanel extends VCIBasePanel implements IModuleShow{
|
|
private static final long serialVersionUID = 1L;
|
private VCIJButton addButton = VCISwingUtil.createVCIJButton("",LocaleDisplay.getI18nString("rmip.stafforg.operate.add", "RMIPFramework", getLocale()) ,LocaleDisplay.getI18nString("rmip.stafforg.operate.add", "RMIPFramework", getLocale()) , "create.gif",null);
|
private VCIJButton editButton = VCISwingUtil.createVCIJButton("",LocaleDisplay.getI18nString("rmip.stafforg.operate.modify", "RMIPFramework", getLocale()) , LocaleDisplay.getI18nString("rmip.stafforg.operate.modify", "RMIPFramework", getLocale()) ,"modify.gif", null);
|
private VCIJButton deleteButton = VCISwingUtil.createVCIJButton("",LocaleDisplay.getI18nString("rmip.stafforg.operate.delete", "RMIPFramework", getLocale()) , LocaleDisplay.getI18nString("rmip.stafforg.operate.delete", "RMIPFramework", getLocale()) , "delete.gif" ,null);
|
|
private String logonUserId = "",logonRoleId;
|
private String moduleName = "";
|
private String iconName,moduleShowInfo ;
|
|
// private SpecialRoleObject specialRoleObject = new SpecialRoleObject();
|
// public SpecialRoleObject getSpecialRoleObject() {
|
// return specialRoleObject;
|
// }
|
//
|
// public void setSpecialRoleObject(SpecialRoleObject specialRoleObject) {
|
// this.specialRoleObject = specialRoleObject;
|
// }
|
public String getLogonUserId() {
|
return logonUserId;
|
}
|
public void setLogonUserId(String logonUserId) {
|
this.logonUserId = logonUserId;
|
}
|
public String getLogonRoleId() {
|
return logonRoleId;
|
}
|
public void setLogonRoleId(String logonRoleId) {
|
this.logonRoleId = logonRoleId;
|
}
|
public void setModuleName(String moduleName) {
|
this.moduleName = moduleName;
|
}
|
public void setIconName(String iconName) {
|
this.iconName = iconName;
|
}
|
public void setModuleShowInfo(String moduleShowInfo) {
|
this.moduleShowInfo = moduleShowInfo;
|
}
|
private LinkedList<VCIJButton> selfCustomButtons = new LinkedList<VCIJButton>();
|
{
|
selfCustomButtons.add(addButton);
|
//添加密码策略修改限制,只有在系统配置项中配置为true才显示修改按钮
|
String editAppConfigValue = "true";
|
String key = "";
|
UserEntityObject userEntityObject = LogonApplication.getUserEntityObject();
|
userEntityObject.setModules("密级策略修改控制");
|
|
try {
|
AppConfigDetailObject[] appConfigDetails = new AppConfigDetailClientDelegate(userEntityObject).getAppConfigDetails();
|
if(appConfigDetails!=null&&appConfigDetails.length>0){
|
for (AppConfigDetailObject appConfigDetailObject : appConfigDetails) {
|
key = appConfigDetailObject.getKey();
|
if("password_policy_changeable".equals(key)){
|
editAppConfigValue = appConfigDetailObject.getValue();
|
}
|
}
|
}
|
} catch (VCIException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
if("true".equalsIgnoreCase(editAppConfigValue)){
|
selfCustomButtons.add(editButton);
|
}
|
//over
|
selfCustomButtons.add(deleteButton);
|
}
|
public PasswordStrategyTablePanel(FunctionObject funcObj){
|
super(funcObj);
|
init();
|
// checkPermission();
|
}
|
private void init() {
|
//LogonApplication.getUserEntityObject().setModules(this.getClass().getName());
|
//LogonApplication.getUserEntityObject().setModules("密码策略");
|
initComponents();
|
initAction();//初始化按钮点击事件
|
}
|
private void initComponents() {
|
setLayout(new BorderLayout());
|
// add(initControl(), BorderLayout.SOUTH);
|
add(initTablePanel(), BorderLayout.CENTER);
|
}
|
private JPanel initTablePanel(){
|
JPanel pal = new JPanel();
|
pal.setLayout(new BorderLayout());
|
pal.setBorder(new TitledBorder("密码策略"));
|
pal.add(tablePanel(), BorderLayout.CENTER);
|
pal.setVisible(true);
|
return pal;
|
}
|
|
private void checkPermission(){
|
checkRight(RightControlUtil.CREATE, addButton);
|
checkRight(RightControlUtil.UPDATE, editButton);
|
checkRight(RightControlUtil.DELETE, deleteButton);
|
}
|
|
class MyDataProvider extends AbstractVCIJTableDataProvider<PasswordStrategyObject>{
|
|
@Override
|
public PasswordStrategyObject[] getDatas(int pageNo, int pageSize) {
|
PasswordStrategyObject[] psdStgObjs = null;
|
try {
|
psdStgObjs = new RightManagementClientDelegate(LogonApplication.getUserEntityObject())
|
.fetchAllPasswordStrategy(pageNo,pageSize);
|
} catch (VCIException re) {
|
VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", re);
|
}
|
return psdStgObjs;
|
}
|
|
@Override
|
public VCIJTableNode<PasswordStrategyObject> getNewRowNode(
|
PasswordStrategyObject dataObj) {
|
VCIJTableNode<PasswordStrategyObject> node = new VCIJTableNode<PasswordStrategyObject>(dataObj);
|
node.setPropertyValue(getSpecialColumns()[0], dataObj.getName());
|
node.setPropertyValue(getSpecialColumns()[1], dataObj.getPasswordLen());
|
node.setPropertyValue(getSpecialColumns()[2], dataObj.getPasswordMaxLen());
|
String charSpeics = "";
|
//CombinationObject[] combinationObjs = null;
|
|
int cts = dataObj.getCharTypes();
|
|
if ((cts & 0x01) == 0x01)
|
charSpeics +="数字;";
|
if ((cts & 0x02) == 0x02)
|
charSpeics +="小写字母;";
|
if ((cts & 0x04) == 0x04)
|
charSpeics +="大写字母;";
|
if ((cts & 0x08) == 0x08)
|
charSpeics +="符号;";
|
|
if (charSpeics.length() > 1)
|
charSpeics = charSpeics.substring(0, charSpeics.length() - 1);
|
|
node.setPropertyValue(getSpecialColumns()[3], charSpeics);
|
node.setPropertyValue(getSpecialColumns()[4], dataObj.getRequiredType());
|
node.setPropertyValue(getSpecialColumns()[5], dataObj.getOverdueDay());
|
node.setPropertyValue(getSpecialColumns()[6], dataObj.getRemideDay());
|
node.setPropertyValue(getSpecialColumns()[7], dataObj.getRetryTime());
|
node.setPropertyValue(getSpecialColumns()[8], dataObj.getLockTime());
|
node.setPropertyValue(getSpecialColumns()[9], dataObj.getDesc()== null ? "" : dataObj.getDesc());
|
node.setPropertyValue(getSpecialColumns()[10], dataObj.getIsDefault() ? "是" : "否");
|
return node;
|
}
|
|
@Override
|
public String[] getSpecialColumns() {
|
return "策略名称, 密码最小长度, 密码最大长度, 组合方式, 必填种类, 过期时间(天), 提醒时间(天), 重试次数(次), 锁定时间(分钟), 描述, 是否为默认策略".split(",");
|
}
|
|
@Override
|
public int getTotal() {
|
try {
|
total = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).getPasswordStrategyTotal();
|
} catch (VCIException e) {
|
e.printStackTrace();
|
VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e);
|
}
|
return this.total;
|
}}
|
MyDataProvider dataProvider = new MyDataProvider();
|
VCIJTablePanel<PasswordStrategyObject> tablePanel = new VCIJTablePanel<PasswordStrategyObject>(dataProvider);
|
private VCIJPanel tablePanel(){
|
int startIndex = dataProvider.getDataColumnStartIndex();
|
LinkedHashMap<Integer, Integer> widthMaps = new LinkedHashMap<Integer, Integer>();
|
widthMaps.put(startIndex++, 100);
|
widthMaps.put(startIndex++, 100);
|
widthMaps.put(startIndex++, 100);
|
widthMaps.put(startIndex++, 250);
|
|
tablePanel.setColumnWidthMaps(widthMaps);
|
tablePanel.setCustomButtonFlowAlign(FlowLayout.CENTER);
|
tablePanel.setCustomButtons(selfCustomButtons);
|
tablePanel.setShowPaging(true);
|
tablePanel.setPageButtonFlowAlign(FlowLayout.CENTER);
|
tablePanel.setShowExport(false);
|
tablePanel.buildTablePanel();
|
tablePanel.refreshTableData();
|
return tablePanel;
|
}
|
|
/**
|
* 事件
|
*/
|
private void initAction(){
|
addButton.addActionListener(new java.awt.event.ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
addButton_conform();
|
}
|
});
|
|
editButton.addActionListener(new java.awt.event.ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
editButton_conform();
|
}
|
});
|
|
deleteButton.addActionListener(new java.awt.event.ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
deleteButton_conform();
|
}
|
});
|
|
}
|
|
/**
|
* 添加事件
|
*/
|
private void addButton_conform(){
|
PasswordSrategyDialog dialog = new PasswordSrategyDialog(this ,"addPwdStg");
|
dialog.setVisible(true);
|
}
|
|
/**
|
* 修改事件
|
*/
|
private void editButton_conform(){
|
int len = tablePanel.getSelectedRowIndexs().length;
|
if(len == 0){
|
VCIOptionPane.showMessage(this,
|
"请选择密级策略!");
|
return;
|
}
|
if (len > 1){
|
VCIOptionPane.showMessage(this,
|
"一次只能对一个密级策略进行修改操作,请重新选择");
|
return;
|
}
|
LinkedList<PasswordStrategyObject> objects = tablePanel.getSelectedRowObjects();
|
PasswordSrategyDialog dialog = new PasswordSrategyDialog (this,objects.get(0),"editPwdStg");
|
dialog.setVisible(true);
|
}
|
/**
|
* 删除事件
|
*/
|
private void deleteButton_conform(){
|
int len = tablePanel.getSelectedRowIndexs().length;
|
if(len == 0){
|
VCIOptionPane.showMessage(this,
|
"请选择要删除的对象!");
|
return;
|
}
|
String[] puids = new String[len];
|
|
Map<String, String> map = new HashMap<String, String>();
|
for (int i = 0; i < len; i++) {
|
LinkedList<PasswordStrategyObject> objects = tablePanel.getSelectedRowObjects();
|
PasswordStrategyObject pwdStgObj = objects.get(i);
|
if(pwdStgObj.getIsDefault()) {
|
VCIOptionPane.showMessageDialog(this, "要删除的密码策略 "+pwdStgObj.getName()+" 是默认策略,不允许删除\n如果要删除请先把其他密码策略设置成默认的,在进行删除操作!");
|
map.clear();
|
return;
|
}
|
puids[i] = pwdStgObj.getId();
|
try {
|
int count = new RightManagementClientDelegate().checkPasswordStrategyIsquotedCount(puids[i]);
|
if(count > 0){
|
VCIOptionPane.showMessageDialog(this, "要删除的密码策略 "+pwdStgObj.getName()+" 已被引用,不允许删除!");
|
map.clear();
|
return;
|
}
|
} catch (VCIException e) {
|
VCIOptionPane.showError(LogonApplication.frame, "RMIPFramework", e);
|
}
|
|
map.put(pwdStgObj.getId(), pwdStgObj.getName());
|
}
|
|
|
int ok=VCIOptionPane.showQuestion(LogonApplication.frame,
|
"确定要删除选中的对象吗?");
|
|
if (ok == 0) {
|
boolean rs=true;
|
try {
|
rs = new RightManagementClientDelegate(LogonApplication.getUserEntityObject()).deletePasswordStrategy(puids);
|
} catch (VCIException e) {
|
VCIOptionPane.showError(LogonApplication.frame,"RMIPFramework", e);
|
return ;
|
}
|
if (!rs) {
|
return;
|
}
|
}else{
|
return;
|
}
|
|
tablePanel.refreshTableData();
|
}
|
@Override
|
public String getUserID() {
|
return logonUserId;
|
}
|
@Override
|
public String getRoleID() {
|
return logonRoleId;
|
}
|
@Override
|
public JPanel getModuleComponent() {
|
return this;
|
}
|
@Override
|
public String getModuleName() {
|
return moduleName;
|
}
|
@Override
|
public String getIconName() {
|
return iconName;
|
}
|
@Override
|
public String getModuleShowInfo() {
|
return moduleShowInfo;
|
}
|
}
|