run-as selector depends on user-role

This commit is contained in:
Peter Hormanns 2012-10-31 11:01:48 +01:00
parent 9f85951e2c
commit f97acf975c

View File

@ -54,49 +54,14 @@ public abstract class AbstractModule implements Module, Serializable {
if (this instanceof SearchAble || this instanceof InsertAble || if (this instanceof SearchAble || this instanceof InsertAble ||
!("USER".equals(application.getLoginUserRole()) || "NONE".equals(application.getLoginUserRole()))) { !("USER".equals(application.getLoginUserRole()) || "NONE".equals(application.getLoginUserRole()))) {
HorizontalLayout toolbar = new HorizontalLayout(); HorizontalLayout toolbar = new HorizontalLayout();
if (!("USER".equals(application.getLoginUserRole()) || "NONE".equals(application.getLoginUserRole()))) { if ("HOSTMASTER".equals(application.getLoginUserRole())) {
selRunAs = new Select(); createRunAsSelect(toolbar, new SearchForSelector("member", "membercode"), new SearchForSelector("pac", "name"));
selRunAs.setWidth(100.0f, Sizeable.UNITS_PIXELS); }
selRunAs.setImmediate(true); if ("CUSTOMER".equals(application.getLoginUserRole())) {
selRunAs.setNewItemsAllowed(false); createRunAsSelect(toolbar, new SearchForSelector("pac", "name"));
selRunAs.setNullSelectionAllowed(false); }
if (!application.getLoginUserRole().startsWith("PAC")) { if (application.getLoginUserRole().startsWith("PAC")) {
// if (application.getLoginUserRole().startsWith("PAC")) { createRunAsSelect(toolbar, new SearchForSelector("user", "name"));
//
// }
selRunAs.addItem(application.getLogin());
Object custListObj = application.getRemote().callSearch("member", new HashMap<String, String>());
if (custListObj instanceof Object[]) {
Object[] custList = (Object[]) custListObj;
for (Object custObj : custList) {
if (custObj instanceof Map<?, ?>) {
Map<?, ?> custHash = (Map<?, ?>)custObj;
selRunAs.addItem(custHash.get("membercode"));
}
}
}
}
Object pacListObj = application.getRemote().callSearch("pac", new HashMap<String, String>());
if (pacListObj instanceof Object[]) {
Object[] pacList = (Object[]) pacListObj;
for (Object pacObj : pacList) {
if (pacObj instanceof Map<?, ?>) {
Map<?, ?> pacHash = (Map<?, ?>)pacObj;
selRunAs.addItem(pacHash.get("name"));
}
}
}
selRunAs.select(application.getRunAs());
selRunAs.setScrollToSelectedItem(true);
selRunAs.addListener(new Property.ValueChangeListener() {
private static final long serialVersionUID = 1L;
@Override
public void valueChange(ValueChangeEvent event) {
Property property = event.getProperty();
application.setRunAs(property.getValue().toString());
}
});
toolbar.addComponent(selRunAs);
} }
if (this instanceof InsertAble) { if (this instanceof InsertAble) {
Button btNew = new Button(moduleConfig.getLabel("new")); Button btNew = new Button(moduleConfig.getLabel("new"));
@ -150,16 +115,44 @@ public abstract class AbstractModule implements Module, Serializable {
}); });
toolbar.addComponent(btNew); toolbar.addComponent(btNew);
} }
// if (this instanceof SearchAble) {
// Button btSearch = new Button("search");
// toolbar.addComponent(btSearch);
// }
layout.addComponent(toolbar); layout.addComponent(toolbar);
} }
layout.addComponent(component); layout.addComponent(component);
layout.setExpandRatio(component, 1.0f); layout.setExpandRatio(component, 1.0f);
} }
private void createRunAsSelect(HorizontalLayout toolbar, SearchForSelector... searchSelector) throws HsarwebException {
selRunAs = new Select();
selRunAs.setWidth(100.0f, Sizeable.UNITS_PIXELS);
selRunAs.setImmediate(true);
selRunAs.setNewItemsAllowed(false);
selRunAs.setNullSelectionAllowed(false);
selRunAs.addItem(application.getLogin());
for (SearchForSelector sel : searchSelector) {
Object custListObj = application.getRemote().callSearch(sel.getModuleName(), new HashMap<String, String>());
if (custListObj instanceof Object[]) {
Object[] custList = (Object[]) custListObj;
for (Object custObj : custList) {
if (custObj instanceof Map<?, ?>) {
Map<?, ?> custHash = (Map<?, ?>)custObj;
selRunAs.addItem(custHash.get(sel.getPropertyName()));
}
}
}
}
selRunAs.select(application.getRunAs());
selRunAs.setScrollToSelectedItem(true);
selRunAs.addListener(new Property.ValueChangeListener() {
private static final long serialVersionUID = 1L;
@Override
public void valueChange(ValueChangeEvent event) {
Property property = event.getProperty();
application.setRunAs(property.getValue().toString());
}
});
toolbar.addComponent(selRunAs);
}
public void setApplication(MainApplication app) throws HsarwebException { public void setApplication(MainApplication app) throws HsarwebException {
application = app; application = app;
@ -184,4 +177,19 @@ public abstract class AbstractModule implements Module, Serializable {
@Override @Override
public abstract ModuleConfig getModuleConfig(); public abstract ModuleConfig getModuleConfig();
private class SearchForSelector {
private final String moduleName;
private final String propertyName;
public SearchForSelector(String module, String property) {
moduleName = module;
propertyName = property;
}
public String getModuleName() {
return moduleName;
}
public String getPropertyName() {
return propertyName;
}
}
} }