Abstractproperty introduced for domainproperties

This commit is contained in:
Purodha Blissenbach 2012-11-27 12:12:11 +01:00
parent e5fe2a57f7
commit da4bee4361
16 changed files with 59 additions and 45 deletions

View File

@ -70,7 +70,7 @@ public abstract class AbstractModule implements Module, Serializable {
public void buttonClick(ClickEvent event) {
application.getMainWindow().removeWindow(childWindow);
try {
Map<String, String> map = new HashMap<String, String>();
Map<String, AbstractProperty> map = new HashMap<String, AbstractProperty>();
genericForm.transferToHash(map, form);
((InsertAble) thisModule).insertRow(map);
componentFactory.loadData();

View File

@ -142,7 +142,7 @@ public abstract class DatabaseModule extends GenericModule {
public List<String> getDatabaseUsers() {
ArrayList<String> list = new ArrayList<String>();
try {
Object callSearch = getApplication().getRemote().callSearch(getUserModuleIdent(), new HashMap<String, String>());
Object callSearch = getApplication().getRemote().callSearch(getUserModuleIdent(), new HashMap<String, AbstractProperty>());
if (callSearch instanceof Object[]) {
for (Object row : ((Object[])callSearch)) {
if (row instanceof Map<?, ?>) {

View File

@ -4,6 +4,6 @@ import java.util.Map;
public interface DeleteAble {
public void deleteRow(Map<String, String> paramHash) throws HsarwebException;
public void deleteRow(Map<String, AbstractProperty> paramHash) throws HsarwebException;
}

View File

@ -12,16 +12,16 @@ public abstract class GenericModule extends AbstractModule implements InsertAble
private static final long serialVersionUID = 1L;
public void insertRow(Map<String, String> paramHash) throws HsarwebException {
public void insertRow(Map<String, AbstractProperty> paramHash) throws HsarwebException {
getApplication().getRemote().callAdd(getModuleConfig().getRemoteName(), paramHash);
}
public void deleteRow(Map<String, String> paramHash) throws HsarwebException {
public void deleteRow(Map<String, AbstractProperty> paramHash) throws HsarwebException {
getApplication().getRemote().callDelete(getModuleConfig().getRemoteName(), paramHash);
}
public void updateRow(Map<String, String> paramHash) throws HsarwebException {
Map<String, String> whereHash = new HashMap<String, String>();
public void updateRow(Map<String, AbstractProperty> paramHash) throws HsarwebException {
Map<String, AbstractProperty> whereHash = new HashMap<String, AbstractProperty>();
String idKey = findIdKey();
whereHash.put(idKey, paramHash.get(idKey));
getApplication().getRemote().callUpdate(getModuleConfig().getRemoteName(), paramHash, whereHash);
@ -43,7 +43,7 @@ public abstract class GenericModule extends AbstractModule implements InsertAble
public List<String> getUsers() {
ArrayList<String> list = new ArrayList<String>();
try {
Object callSearch = getApplication().getRemote().callSearch("user", new HashMap<String, String>());
Object callSearch = getApplication().getRemote().callSearch("user", new HashMap<String, AbstractProperty>());
if (callSearch instanceof Object[]) {
for (Object row : ((Object[])callSearch)) {
if (row instanceof Map<?, ?>) {
@ -64,7 +64,7 @@ public abstract class GenericModule extends AbstractModule implements InsertAble
public List<String> getEMailAliases() {
ArrayList<String> list = new ArrayList<String>();
try {
Object callSearch = getApplication().getRemote().callSearch("emailalias", new HashMap<String, String>());
Object callSearch = getApplication().getRemote().callSearch("emailalias", new HashMap<String, AbstractProperty>());
if (callSearch instanceof Object[]) {
for (Object row : ((Object[])callSearch)) {
if (row instanceof Map<?, ?>) {
@ -85,7 +85,7 @@ public abstract class GenericModule extends AbstractModule implements InsertAble
public List<String> getDomains() {
ArrayList<String> list = new ArrayList<String>();
try {
Object callSearch = getApplication().getRemote().callSearch("domain", new HashMap<String, String>());
Object callSearch = getApplication().getRemote().callSearch("domain", new HashMap<String, AbstractProperty>());
if (callSearch instanceof Object[]) {
for (Object row : ((Object[])callSearch)) {
if (row instanceof Map<?, ?>) {
@ -106,7 +106,7 @@ public abstract class GenericModule extends AbstractModule implements InsertAble
public List<String> getPackets() {
ArrayList<String> list = new ArrayList<String>();
try {
Object callSearch = getApplication().getRemote().callSearch("pac", new HashMap<String, String>());
Object callSearch = getApplication().getRemote().callSearch("pac", new HashMap<String, AbstractProperty>());
if (callSearch instanceof Object[]) {
for (Object row : ((Object[])callSearch)) {
if (row instanceof Map<?, ?>) {

View File

@ -35,8 +35,8 @@ public class HomeModule extends AbstractModule implements ComponentFactory, Upda
setComponentFactory(this);
}
public void updateRow(Map<String, String> paramHash) throws HsarwebException {
Map<String, String> whereHash = new HashMap<String, String>();
public void updateRow(Map<String, AbstractProperty> paramHash) throws HsarwebException {
Map<String, AbstractProperty> whereHash = new HashMap<String, AbstractProperty>();
String idKey = findIdKey();
whereHash.put(idKey, paramHash.get(idKey));
paramHash.remove(idKey);
@ -94,8 +94,8 @@ public class HomeModule extends AbstractModule implements ComponentFactory, Upda
Button button = new Button(moduleConfig.getLabel("change_password"));
ThemeResource icon = new ThemeResource(moduleConfig.getLabel("change_password_icon"));
button.setIcon(icon);
Map<String, String> whereHash = new HashMap<String, String>();
whereHash.put("name", application.getLogin());
Map<String, AbstractProperty> whereHash = new HashMap<String, AbstractProperty>();
whereHash.put("name", new StringProperty (application.getLogin()));
Long key = -1L;
try {
Object object = application.getRemote().callSearch(moduleConfig.getRemoteName(), whereHash);
@ -130,8 +130,8 @@ public class HomeModule extends AbstractModule implements ComponentFactory, Upda
public void buttonClick(ClickEvent event) {
application.getMainWindow().removeWindow(childWindow);
try {
Map<String, String> map = new HashMap<String, String>();
map.put("id", ((Long) event.getButton().getData()).toString());
Map<String, AbstractProperty> map = new HashMap<String, AbstractProperty>();
map.put("id", new StringProperty(((Long) event.getButton().getData()).toString()));
Iterator<Component> componentIterator = form.getLayout().getComponentIterator();
while (componentIterator.hasNext()) {
Component component = (Component) componentIterator.next();

View File

@ -4,6 +4,6 @@ import java.util.Map;
public interface InsertAble {
public void insertRow(Map<String, String> paramHash) throws HsarwebException;
public void insertRow(Map<String, AbstractProperty> paramHash) throws HsarwebException;
}

View File

@ -18,23 +18,23 @@ public class Remote {
this.app = application;
}
public Object callSearch(String module, Map<String, String> where) throws HsarwebException {
public Object callSearch(String module, Map<String, AbstractProperty> where) throws HsarwebException {
return xmlrpcCall(module, "search", where);
}
public void callAdd(String module, Map<String, String> set) throws HsarwebException {
public void callAdd(String module, Map<String, AbstractProperty> set) throws HsarwebException {
xmlrpcCall(module, "add", set);
}
public void callUpdate(String module, Map<String, String> set, Map<String, String> where) throws HsarwebException {
public void callUpdate(String module, Map<String, AbstractProperty> set, Map<String, AbstractProperty> where) throws HsarwebException {
xmlrpcCall(module, "update", set, where);
}
public void callDelete(String module, Map<String, String> where) throws HsarwebException {
public void callDelete(String module, Map<String, AbstractProperty> where) throws HsarwebException {
xmlrpcCall(module, "delete", where);
}
private Object xmlrpcCall(String module, String operation, Map<String, String> param1) throws HsarwebException {
private Object xmlrpcCall(String module, String operation, Map<String, AbstractProperty> param1) throws HsarwebException {
Object[] params = new Object[3];
params[0] = app.getLogin();
params[1] = app.getProxyTicket();
@ -42,7 +42,7 @@ public class Remote {
return xmlrpcCall(module + "." + operation, params);
}
private Object xmlrpcCall(String module, String operation, Map<String, String> param1, Map<String, String> param2) throws HsarwebException {
private Object xmlrpcCall(String module, String operation, Map<String, AbstractProperty> param1, Map<String, AbstractProperty> param2) throws HsarwebException {
Object[] params = new Object[4];
params[0] = app.getLogin();
params[1] = app.getProxyTicket();
@ -77,5 +77,4 @@ public class Remote {
return client;
}
}

View File

@ -4,6 +4,6 @@ import java.util.Map;
public interface UpdateAble {
public void updateRow(Map<String, String> paramHash) throws HsarwebException;
public void updateRow(Map<String, AbstractProperty> paramHash) throws HsarwebException;
}

View File

@ -1,12 +1,13 @@
package de.hsadmin.web.config;
import de.hsadmin.web.AbstractProperty;
import de.hsadmin.web.HsarwebException;
public interface PropertyFieldFactory {
public Object createFieldComponent(PropertyConfig prop, Object value);
public String getValue(PropertyConfig prop, Object component) throws HsarwebException;
public AbstractProperty getValue(PropertyConfig prop, Object component) throws HsarwebException;
public void setReadOnly(boolean readOnly);

View File

@ -10,6 +10,8 @@ import com.vaadin.terminal.Sizeable;
import com.vaadin.ui.DateField;
import com.vaadin.ui.PopupDateField;
import de.hsadmin.web.AbstractProperty;
import de.hsadmin.web.StringProperty;
import de.hsadmin.web.config.PropertyConfig;
import de.hsadmin.web.config.PropertyFieldFactory;
@ -41,9 +43,9 @@ public class DatePropertyFieldFactory implements PropertyFieldFactory {
}
@Override
public String getValue(PropertyConfig prop, Object component) {
public AbstractProperty getValue(PropertyConfig prop, Object component) {
if (component instanceof DateField) {
return serverDf.format((Date) ((DateField) component).getValue());
return (new StringProperty(serverDf.format((Date) ((DateField) component).getValue()))); // TODO: besser DateProperty ?
}
return null;
}

View File

@ -3,6 +3,8 @@ package de.hsadmin.web.vaadin;
import com.vaadin.terminal.Sizeable;
import com.vaadin.ui.TextField;
import de.hsadmin.web.AbstractProperty;
import de.hsadmin.web.StringProperty;
import de.hsadmin.web.config.PropertyConfig;
import de.hsadmin.web.config.PropertyFieldFactory;
@ -22,9 +24,9 @@ public class DefaultPropertyFieldFactory implements PropertyFieldFactory {
}
@Override
public String getValue(PropertyConfig prop, Object component) {
public AbstractProperty getValue(PropertyConfig prop, Object component) {
if (component instanceof TextField) {
return (String) ((TextField) component).getValue();
return new StringProperty((String) ((TextField) component).getValue());
}
return null;
}

View File

@ -15,9 +15,11 @@ import com.vaadin.ui.Select;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import de.hsadmin.web.AbstractProperty;
import de.hsadmin.web.GenericModule;
import de.hsadmin.web.HsarwebException;
import de.hsadmin.web.Module;
import de.hsadmin.web.StringProperty;
import de.hsadmin.web.config.PropertyConfig;
import de.hsadmin.web.config.PropertyFieldFactory;
@ -92,7 +94,7 @@ public class EMailTargetPropertyFieldFactory implements PropertyFieldFactory {
}
@Override
public String getValue(PropertyConfig prop, Object component) throws HsarwebException {
public AbstractProperty getValue(PropertyConfig prop, Object component) throws HsarwebException {
StringBuffer target = new StringBuffer();
boolean insertKomma = false;
for (Integer key : targets.keySet()) {
@ -106,7 +108,7 @@ public class EMailTargetPropertyFieldFactory implements PropertyFieldFactory {
insertKomma = true;
}
}
return target.toString();
return new StringProperty(target.toString());
}
@Override

View File

@ -10,9 +10,11 @@ import com.vaadin.ui.Component;
import com.vaadin.ui.Form;
import com.vaadin.ui.Layout;
import de.hsadmin.web.AbstractProperty;
import de.hsadmin.web.HsarwebException;
import de.hsadmin.web.MainApplication;
import de.hsadmin.web.Module;
import de.hsadmin.web.StringProperty;
import de.hsadmin.web.config.ModuleConfig;
import de.hsadmin.web.config.PropertyConfig;
import de.hsadmin.web.config.PropertyFieldFactory;
@ -46,8 +48,8 @@ public class GenericForm {
try {
MainApplication application = module.getApplication();
ModuleConfig config = module.getModuleConfig();
Map<String, String> where = new HashMap<String, String>();
where.put(findIdKey(), entityId.toString());
Map<String, AbstractProperty> where = new HashMap<String, AbstractProperty>();
where.put(findIdKey(), new StringProperty(entityId.toString()));
Object searchResult = application.getRemote().callSearch(config.getRemoteName(), where);
if (searchResult instanceof Object[]) {
Map<?, ?> row = (Map<?, ?>) (((Object[]) searchResult)[0]);
@ -88,11 +90,11 @@ public class GenericForm {
return idKey;
}
public void transferToHash(Map<String, String> map, Form form) throws HsarwebException {
public void transferToHash(Map<String, AbstractProperty> map, Form form) throws HsarwebException {
Iterator<Component> iterator = form.getLayout().getComponentIterator();
Object formData = form.getData();
if (formData != null && formData instanceof Long) {
map.put(findIdKey(), ((Long) formData).toString());
map.put(findIdKey(), new StringProperty(((Long) formData).toString()));
}
while (iterator.hasNext()) {
Component component = (Component) iterator.next();

View File

@ -4,8 +4,10 @@ import com.vaadin.terminal.Sizeable;
import com.vaadin.ui.PasswordField;
import com.vaadin.ui.VerticalLayout;
import de.hsadmin.web.AbstractProperty;
import de.hsadmin.web.HsarwebException;
import de.hsadmin.web.Module;
import de.hsadmin.web.StringProperty;
import de.hsadmin.web.config.ModuleConfig;
import de.hsadmin.web.config.PropertyConfig;
import de.hsadmin.web.config.PropertyFieldFactory;
@ -42,13 +44,13 @@ public class PasswordPropertyFieldFactory implements PropertyFieldFactory {
}
@Override
public String getValue(PropertyConfig prop, Object component) throws HsarwebException {
public AbstractProperty getValue(PropertyConfig prop, Object component) throws HsarwebException {
if (component instanceof VerticalLayout) {
VerticalLayout layout = (VerticalLayout) component;
PasswordField pw1 = (PasswordField) layout.getComponent(0);
PasswordField pw2 = (PasswordField) layout.getComponent(1);
if (pw1.getValue().equals(pw2.getValue())) {
return (String) pw1.getValue();
return new StringProperty((String) pw1.getValue());
} else {
throw new HsarwebException("password mismatch");
}

View File

@ -5,7 +5,9 @@ import java.util.Map;
import com.vaadin.terminal.Sizeable;
import com.vaadin.ui.Select;
import de.hsadmin.web.AbstractProperty;
import de.hsadmin.web.HsarwebException;
import de.hsadmin.web.StringProperty;
import de.hsadmin.web.config.PropertyConfig;
import de.hsadmin.web.config.PropertyFieldFactory;
@ -33,10 +35,10 @@ public class SelectPropertyFieldFactory implements PropertyFieldFactory {
}
@Override
public String getValue(PropertyConfig prop, Object component)
public AbstractProperty getValue(PropertyConfig prop, Object component)
throws HsarwebException {
if (component instanceof Select) {
return (String) ((Select) component).getValue();
return new StringProperty((String) ((Select) component).getValue());
}
return null;
}

View File

@ -22,10 +22,12 @@ import com.vaadin.ui.Window;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.themes.BaseTheme;
import de.hsadmin.web.AbstractProperty;
import de.hsadmin.web.DeleteAble;
import de.hsadmin.web.HsarwebException;
import de.hsadmin.web.MainApplication;
import de.hsadmin.web.Module;
import de.hsadmin.web.StringProperty;
import de.hsadmin.web.UpdateAble;
import de.hsadmin.web.config.ComponentFactory;
import de.hsadmin.web.config.LocaleConfig;
@ -107,7 +109,7 @@ public class TableComponentFactory implements ComponentFactory, Serializable {
table.removeAllItems();
try {
ModuleConfig moduleConfig = module.getModuleConfig();
Object callSearch = module.getApplication().getRemote().callSearch(moduleConfig.getRemoteName(), new HashMap<String, String>());
Object callSearch = module.getApplication().getRemote().callSearch(moduleConfig.getRemoteName(), new HashMap<String, AbstractProperty>());
List<PropertyConfig> propertyList = moduleConfig.getPropertyList();
if (callSearch instanceof Object[]) {
for (Object row : ((Object[])callSearch)) {
@ -229,7 +231,7 @@ public class TableComponentFactory implements ComponentFactory, Serializable {
public void buttonClick(ClickEvent event) {
application.getMainWindow().removeWindow(childWindow);
try {
Map<String, String> map = new HashMap<String, String>();
Map<String, AbstractProperty> map = new HashMap<String, AbstractProperty>();
genericForm.transferToHash(map, form);
((UpdateAble) module).updateRow(map);
loadData();
@ -285,8 +287,8 @@ public class TableComponentFactory implements ComponentFactory, Serializable {
public void buttonClick(ClickEvent event) {
application.getMainWindow().removeWindow(childWindow);
try {
Map<String, String> map = new HashMap<String, String>();
map.put(findIdKey(), ((Long) button.getData()).toString());
Map<String, AbstractProperty> map = new HashMap<String, AbstractProperty>();
map.put(findIdKey(), new StringProperty(((Long) button.getData()).toString()));
((DeleteAble) module).deleteRow(map);
loadData();
} catch (HsarwebException e) {