From ed89351c717de51589ab2d8b588eb3b74d0ed4e5 Mon Sep 17 00:00:00 2001
From: Peter Hormanns <peter.hormanns@jalin.de>
Date: Tue, 18 Dec 2012 13:58:29 +0100
Subject: [PATCH] revert changes

---
 hsarweb/src/de/hsadmin/web/UpdateAble.java                               |    2 
 hsarweb/src/de/hsadmin/web/vaadin/DomainOptionsPropertyFieldFactory.java |  117 +++++++++++++++++++++++++++++
 hsarweb/src/de/hsadmin/web/vaadin/TableComponentFactory.java             |   10 +-
 hsarweb/src/de/hsadmin/web/AbstractProperty.java                         |    5 +
 hsarweb/src/de/hsadmin/web/AbstractModule.java                           |    2 
 hsarweb/src/de/hsadmin/web/InsertAble.java                               |    2 
 hsarweb/src/de/hsadmin/web/config/PropertyFieldFactory.java              |    3 
 hsarweb/src/de/hsadmin/web/GenericModule.java                            |   16 ++--
 hsarweb/src/de/hsadmin/web/vaadin/EMailTargetPropertyFieldFactory.java   |    6 +
 hsarweb/src/de/hsadmin/web/vaadin/DefaultPropertyFieldFactory.java       |    6 +
 hsarweb/src/de/hsadmin/web/Remote.java                                   |   13 +-
 hsarweb/src/de/hsadmin/web/vaadin/GenericForm.java                       |   10 +-
 hsarweb/src/de/hsadmin/web/StringProperty.java                           |   10 ++
 hsarweb/src/de/hsadmin/web/ListOfStringsProperty.java                    |   15 +++
 hsarweb/src/de/hsadmin/web/vaadin/PasswordPropertyFieldFactory.java      |    6 +
 hsarweb/src/de/hsadmin/web/DeleteAble.java                               |    2 
 hsarweb/src/de/hsadmin/web/vaadin/SelectPropertyFieldFactory.java        |    6 +
 hsarweb/src/de/hsadmin/web/DatabaseModule.java                           |    2 
 hsarweb/src/de/hsadmin/web/vaadin/DatePropertyFieldFactory.java          |    6 +
 19 files changed, 200 insertions(+), 39 deletions(-)

diff --git a/hsarweb/src/de/hsadmin/web/AbstractModule.java b/hsarweb/src/de/hsadmin/web/AbstractModule.java
index 8726124..6e9d4f3 100644
--- a/hsarweb/src/de/hsadmin/web/AbstractModule.java
+++ b/hsarweb/src/de/hsadmin/web/AbstractModule.java
@@ -82,7 +82,7 @@
 							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();
diff --git a/hsarweb/src/de/hsadmin/web/AbstractProperty.java b/hsarweb/src/de/hsadmin/web/AbstractProperty.java
new file mode 100644
index 0000000..1527a0f
--- /dev/null
+++ b/hsarweb/src/de/hsadmin/web/AbstractProperty.java
@@ -0,0 +1,5 @@
+package de.hsadmin.web;
+
+public class AbstractProperty {
+	
+}
diff --git a/hsarweb/src/de/hsadmin/web/DatabaseModule.java b/hsarweb/src/de/hsadmin/web/DatabaseModule.java
index 8a70b38..6b722ef 100644
--- a/hsarweb/src/de/hsadmin/web/DatabaseModule.java
+++ b/hsarweb/src/de/hsadmin/web/DatabaseModule.java
@@ -142,7 +142,7 @@
 	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<?, ?>) {
diff --git a/hsarweb/src/de/hsadmin/web/DeleteAble.java b/hsarweb/src/de/hsadmin/web/DeleteAble.java
index 650e102..938c12f 100644
--- a/hsarweb/src/de/hsadmin/web/DeleteAble.java
+++ b/hsarweb/src/de/hsadmin/web/DeleteAble.java
@@ -4,6 +4,6 @@
 
 public interface DeleteAble {
 
-	public void deleteRow(Map<String, String> paramHash) throws HsarwebException;
+	public void deleteRow(Map<String, AbstractProperty> paramHash) throws HsarwebException;
 	
 }
diff --git a/hsarweb/src/de/hsadmin/web/GenericModule.java b/hsarweb/src/de/hsadmin/web/GenericModule.java
index 4e1bcb1..f754624 100644
--- a/hsarweb/src/de/hsadmin/web/GenericModule.java
+++ b/hsarweb/src/de/hsadmin/web/GenericModule.java
@@ -12,16 +12,16 @@
 
 	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 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 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 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 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<?, ?>) {
diff --git a/hsarweb/src/de/hsadmin/web/InsertAble.java b/hsarweb/src/de/hsadmin/web/InsertAble.java
index 3c49771..c7af5a0 100644
--- a/hsarweb/src/de/hsadmin/web/InsertAble.java
+++ b/hsarweb/src/de/hsadmin/web/InsertAble.java
@@ -4,6 +4,6 @@
 
 public interface InsertAble {
 
-	public void insertRow(Map<String, String> paramHash) throws HsarwebException;
+	public void insertRow(Map<String, AbstractProperty> paramHash) throws HsarwebException;
 	
 }
diff --git a/hsarweb/src/de/hsadmin/web/ListOfStringsProperty.java b/hsarweb/src/de/hsadmin/web/ListOfStringsProperty.java
new file mode 100644
index 0000000..92f111f
--- /dev/null
+++ b/hsarweb/src/de/hsadmin/web/ListOfStringsProperty.java
@@ -0,0 +1,15 @@
+package de.hsadmin.web;
+
+import java.util.List;
+
+public class ListOfStringsProperty extends AbstractProperty {
+	public List<String> properties; 
+	
+	public ListOfStringsProperty(){
+// ??		this.properties = new List<String>();
+	}
+	
+	public boolean Add(String string){
+		 return properties.add(string);
+	}
+}
diff --git a/hsarweb/src/de/hsadmin/web/Remote.java b/hsarweb/src/de/hsadmin/web/Remote.java
index b9771a6..ddb03f8 100644
--- a/hsarweb/src/de/hsadmin/web/Remote.java
+++ b/hsarweb/src/de/hsadmin/web/Remote.java
@@ -18,23 +18,23 @@
 		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.getRunAs();
 		params[1] = app.getProxyTicket();
@@ -42,7 +42,7 @@
 		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.getRunAs();
 		params[1] = app.getProxyTicket();
@@ -76,6 +76,5 @@
 		}
 		return client;
 	}
-
 
 }
diff --git a/hsarweb/src/de/hsadmin/web/StringProperty.java b/hsarweb/src/de/hsadmin/web/StringProperty.java
new file mode 100644
index 0000000..4c3e9e2
--- /dev/null
+++ b/hsarweb/src/de/hsadmin/web/StringProperty.java
@@ -0,0 +1,10 @@
+package de.hsadmin.web;
+
+public class StringProperty extends AbstractProperty {
+	public String property ;
+
+	public StringProperty(String property) {
+		this.property = property;
+	}
+
+}
diff --git a/hsarweb/src/de/hsadmin/web/UpdateAble.java b/hsarweb/src/de/hsadmin/web/UpdateAble.java
index e9aaaae..1753c09 100644
--- a/hsarweb/src/de/hsadmin/web/UpdateAble.java
+++ b/hsarweb/src/de/hsadmin/web/UpdateAble.java
@@ -4,6 +4,6 @@
 
 public interface UpdateAble {
 
-	public void updateRow(Map<String, String> paramHash) throws HsarwebException;
+	public void updateRow(Map<String, AbstractProperty> paramHash) throws HsarwebException;
 	
 }
diff --git a/hsarweb/src/de/hsadmin/web/config/PropertyFieldFactory.java b/hsarweb/src/de/hsadmin/web/config/PropertyFieldFactory.java
index 90fc176..95d7cd0 100644
--- a/hsarweb/src/de/hsadmin/web/config/PropertyFieldFactory.java
+++ b/hsarweb/src/de/hsadmin/web/config/PropertyFieldFactory.java
@@ -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);
 
diff --git a/hsarweb/src/de/hsadmin/web/vaadin/DatePropertyFieldFactory.java b/hsarweb/src/de/hsadmin/web/vaadin/DatePropertyFieldFactory.java
index 626f1d8..c973d70 100644
--- a/hsarweb/src/de/hsadmin/web/vaadin/DatePropertyFieldFactory.java
+++ b/hsarweb/src/de/hsadmin/web/vaadin/DatePropertyFieldFactory.java
@@ -10,6 +10,8 @@
 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 @@
 	}
 
 	@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;
 	}
diff --git a/hsarweb/src/de/hsadmin/web/vaadin/DefaultPropertyFieldFactory.java b/hsarweb/src/de/hsadmin/web/vaadin/DefaultPropertyFieldFactory.java
index 02d1c45..1089fe3 100644
--- a/hsarweb/src/de/hsadmin/web/vaadin/DefaultPropertyFieldFactory.java
+++ b/hsarweb/src/de/hsadmin/web/vaadin/DefaultPropertyFieldFactory.java
@@ -3,6 +3,8 @@
 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 @@
 	}
 
 	@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;
 	}
diff --git a/hsarweb/src/de/hsadmin/web/vaadin/DomainOptionsPropertyFieldFactory.java b/hsarweb/src/de/hsadmin/web/vaadin/DomainOptionsPropertyFieldFactory.java
new file mode 100644
index 0000000..cd0d3d5
--- /dev/null
+++ b/hsarweb/src/de/hsadmin/web/vaadin/DomainOptionsPropertyFieldFactory.java
@@ -0,0 +1,117 @@
+/**
+ * 
+ */
+package de.hsadmin.web.vaadin;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.vaadin.data.Property;
+import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.terminal.Sizeable;
+import com.vaadin.ui.AbstractField;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Select;
+import com.vaadin.ui.VerticalLayout;
+
+import de.hsadmin.web.AbstractProperty;
+import de.hsadmin.web.HsarwebException;
+import de.hsadmin.web.ListOfStringsProperty;
+import de.hsadmin.web.config.PropertyConfig;
+import de.hsadmin.web.config.PropertyFieldFactory;
+
+/**
+ * @author pblissenbach
+ *
+ */
+public class DomainOptionsPropertyFieldFactory implements PropertyFieldFactory {
+	private Map<String,AbstractProperty> optionTypes ; // TODO: auf Vorrat hier
+	private ListOfStringsProperty setOptions ;
+	private boolean readOnly = false;
+	private boolean writeOnce = false;
+	private VerticalLayout layout;
+
+	public DomainOptionsPropertyFieldFactory() {
+		// TODO: besorge Options und ihre Typen aus der DB
+		optionTypes = new HashMap<String,AbstractProperty>() ;
+		optionTypes.put("backupmxforexternalmx", null);
+		optionTypes.put("greylisting", null);
+		optionTypes.put("htdocsfallback", null);
+		optionTypes.put("includes", null);
+		optionTypes.put("indexes", null);
+		optionTypes.put("multiviews", null);
+		optionTypes.put("nonexistiondomainoptionfortesting", null); // TESTCASE
+		optionTypes.put("php", null);
+		// TODO: besorge Options  .... Ende
+//		setOptions = null ;
+		setOptions = new ListOfStringsProperty() ;
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	public Object createFieldComponent(PropertyConfig prop, Object value) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public AbstractProperty getValue(PropertyConfig prop, Object component)
+			throws HsarwebException {
+		return setOptions;
+	}
+
+	@Override
+	public void setReadOnly(boolean readOnly) {
+		this.readOnly = readOnly;
+	}
+
+	@Override
+	public boolean isReadOnly() {
+		return readOnly;
+	}
+
+	@Override
+	public void setWriteOnce(boolean writeOnce) {
+		this.writeOnce = writeOnce;
+	}
+
+	@Override
+	public boolean isWriteOnce() {
+		return writeOnce;
+	}
+	
+	class SingleDomainOption {
+		private HorizontalLayout targetLine;
+		private HorizontalLayout leftPart;
+		private HorizontalLayout rightPart;
+		private int index;
+		private String optionName;
+		private String testunusedoptionName;
+		private DomainOptionsPropertyFieldFactory owner;
+		
+		protected SingleDomainOption(DomainOptionsPropertyFieldFactory owner, int key, String optionName, Object optionValue) {
+			this.owner = owner;
+			this.index = key;
+			this.optionName = optionName;
+			targetLine = new HorizontalLayout();
+			targetLine.setWidth(480.0f, Sizeable.UNITS_PIXELS);
+			leftPart = new HorizontalLayout();
+			leftPart.setWidth(100.0f, Sizeable.UNITS_PIXELS);
+			leftPart.setCaption(optionName);
+			rightPart = new HorizontalLayout();
+			rightPart.setWidth(380.0f, Sizeable.UNITS_PIXELS);
+			// ToDO: Fallunterscheidungen nach Optionsart. Z.Z. nur Boolean.
+		}
+		
+		public String getValue() {
+			String value = null;
+			if (rightPart.getComponentCount() > 0) {
+				Object object = ((AbstractField) rightPart.getComponent(0)).getValue();
+				if (object != null && object instanceof String) {
+					value = ((String) object).trim();
+				}
+			}
+			return value;
+		}
+	}
+}
\ No newline at end of file
diff --git a/hsarweb/src/de/hsadmin/web/vaadin/EMailTargetPropertyFieldFactory.java b/hsarweb/src/de/hsadmin/web/vaadin/EMailTargetPropertyFieldFactory.java
index 94c3c91..b6a4d98 100644
--- a/hsarweb/src/de/hsadmin/web/vaadin/EMailTargetPropertyFieldFactory.java
+++ b/hsarweb/src/de/hsadmin/web/vaadin/EMailTargetPropertyFieldFactory.java
@@ -15,9 +15,11 @@
 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 @@
 	}
 
 	@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 @@
 				insertKomma = true;
 			}
 		}
-		return target.toString();
+		return new StringProperty(target.toString());
 	}
 
 	@Override
diff --git a/hsarweb/src/de/hsadmin/web/vaadin/GenericForm.java b/hsarweb/src/de/hsadmin/web/vaadin/GenericForm.java
index 2124996..78b9958 100644
--- a/hsarweb/src/de/hsadmin/web/vaadin/GenericForm.java
+++ b/hsarweb/src/de/hsadmin/web/vaadin/GenericForm.java
@@ -10,9 +10,11 @@
 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 @@
 		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]);
@@ -121,11 +123,11 @@
 		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();
diff --git a/hsarweb/src/de/hsadmin/web/vaadin/PasswordPropertyFieldFactory.java b/hsarweb/src/de/hsadmin/web/vaadin/PasswordPropertyFieldFactory.java
index f9c32a7..6367152 100644
--- a/hsarweb/src/de/hsadmin/web/vaadin/PasswordPropertyFieldFactory.java
+++ b/hsarweb/src/de/hsadmin/web/vaadin/PasswordPropertyFieldFactory.java
@@ -4,8 +4,10 @@
 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;
@@ -43,13 +45,13 @@
 	}
 
 	@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");
 			}
diff --git a/hsarweb/src/de/hsadmin/web/vaadin/SelectPropertyFieldFactory.java b/hsarweb/src/de/hsadmin/web/vaadin/SelectPropertyFieldFactory.java
index 446b61f..6850a1d 100644
--- a/hsarweb/src/de/hsadmin/web/vaadin/SelectPropertyFieldFactory.java
+++ b/hsarweb/src/de/hsadmin/web/vaadin/SelectPropertyFieldFactory.java
@@ -5,7 +5,9 @@
 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 @@
 	}
 
 	@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;
 	}
diff --git a/hsarweb/src/de/hsadmin/web/vaadin/TableComponentFactory.java b/hsarweb/src/de/hsadmin/web/vaadin/TableComponentFactory.java
index 83951af..0eaf71d 100644
--- a/hsarweb/src/de/hsadmin/web/vaadin/TableComponentFactory.java
+++ b/hsarweb/src/de/hsadmin/web/vaadin/TableComponentFactory.java
@@ -21,10 +21,12 @@
 import com.vaadin.ui.Window;
 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;
@@ -106,7 +108,7 @@
 		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)) {
@@ -228,7 +230,7 @@
 					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();
@@ -287,8 +289,8 @@
 					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) {

--
Gitblit v1.9.0-SNAPSHOT