From c5c575c095248791d95b604efc439a8a8212d5a8 Mon Sep 17 00:00:00 2001
From: Purodha <bli00@hostsharing.net>
Date: Wed, 20 Feb 2013 17:37:14 +0100
Subject: [PATCH] SelectableValues can now be annotated with kind of data (e.g. SINGLEVALUE, DOMAINOPTIONS, et al), and these annotations are passed to remote via moduleprop.search

---
 hsarback/src/de/hsadmin/core/model/DefaultSelectableValues.java |    9 +++-
 hsarback/src/de/hsadmin/remote/ModulePropertiesRemote.java      |   42 +++++++++++++++------
 hsarback/src/de/hsadmin/core/model/KindOfSelectableValue.java   |    5 ++
 hsarback/src/de/hsadmin/mods/dom/DomainOptionValues.java        |    6 +++
 4 files changed, 47 insertions(+), 15 deletions(-)

diff --git a/hsarback/src/de/hsadmin/core/model/DefaultSelectableValues.java b/hsarback/src/de/hsadmin/core/model/DefaultSelectableValues.java
index 5cdda0e..7d4110a 100644
--- a/hsarback/src/de/hsadmin/core/model/DefaultSelectableValues.java
+++ b/hsarback/src/de/hsadmin/core/model/DefaultSelectableValues.java
@@ -5,7 +5,10 @@
 
 public class DefaultSelectableValues {
 
-		public List<SelectableValue> get() {
-			return new ArrayList<SelectableValue>();
-		}
+	public KindOfSelectableValue getkind() {
+		return KindOfSelectableValue.UNSPECIFIED;
+	}
+	public List<SelectableValue> get() {
+		return new ArrayList<SelectableValue>();
+	}
 }
diff --git a/hsarback/src/de/hsadmin/core/model/KindOfSelectableValue.java b/hsarback/src/de/hsadmin/core/model/KindOfSelectableValue.java
new file mode 100644
index 0000000..2ed20b2
--- /dev/null
+++ b/hsarback/src/de/hsadmin/core/model/KindOfSelectableValue.java
@@ -0,0 +1,5 @@
+package de.hsadmin.core.model;
+
+public enum KindOfSelectableValue {
+	UNSPECIFIED , DOMAINOPTIONS, SINGLESTRING
+}
diff --git a/hsarback/src/de/hsadmin/mods/dom/DomainOptionValues.java b/hsarback/src/de/hsadmin/mods/dom/DomainOptionValues.java
index 0deef16..8854de5 100644
--- a/hsarback/src/de/hsadmin/mods/dom/DomainOptionValues.java
+++ b/hsarback/src/de/hsadmin/mods/dom/DomainOptionValues.java
@@ -5,11 +5,17 @@
 
 import de.hsadmin.core.model.BooleanListValue;
 import de.hsadmin.core.model.DefaultSelectableValues;
+import de.hsadmin.core.model.KindOfSelectableValue;
 import de.hsadmin.core.model.SelectableValue;
 
 public class DomainOptionValues extends DefaultSelectableValues {
 
 	@Override
+	public KindOfSelectableValue getkind() {
+		return KindOfSelectableValue.DOMAINOPTIONS;
+	}
+	
+	@Override
 	public List<SelectableValue> get() {
 		ArrayList<SelectableValue> list = new ArrayList<SelectableValue>();
 		list.add(new BooleanListValue("backupmxforexternalmx"));
diff --git a/hsarback/src/de/hsadmin/remote/ModulePropertiesRemote.java b/hsarback/src/de/hsadmin/remote/ModulePropertiesRemote.java
index dc304d9..ab206ac 100644
--- a/hsarback/src/de/hsadmin/remote/ModulePropertiesRemote.java
+++ b/hsarback/src/de/hsadmin/remote/ModulePropertiesRemote.java
@@ -11,10 +11,12 @@
 import de.hsadmin.core.model.AbstractEntity;
 import de.hsadmin.core.model.AnnFieldIO;
 import de.hsadmin.core.model.AuthenticationException;
+import de.hsadmin.core.model.DefaultSelectableValues;
 import de.hsadmin.core.model.HSAdminException;
 import de.hsadmin.core.model.ReadWriteAccess;
 import de.hsadmin.core.model.SelectableValue;
 import de.hsadmin.core.model.Transaction;
+import de.hsadmin.core.model.KindOfSelectableValue;
 
 public class ModulePropertiesRemote implements IRemote {
 
@@ -51,22 +53,38 @@
 								ReadWriteAccess rw = fieldIO.rw();
 								propertyProperties.put("rw", rw.name());
 								String[] referredProps = fieldIO.referredProps();
-								propertyProperties.put("referredProps", referredProps);						
-				//				Class<?> declaringClass = f.getDeclaringClass();
-				//				         declaringClass = f.getDeclaringClass();
+								propertyProperties.put("referredProps", referredProps);	
 								for(String s : referredProps) {					
 									String fullPropertyName = fieldName+"."+s;
 									propertiesList.add(createReferredPropertyInfo(fullPropertyName, f, s));
 								}
-								ArrayList<Map<String,Object>> selectableValueslist = new ArrayList<Map<String,Object>>();
-								List<SelectableValue> selectableValues = fieldIO.selectableValues().newInstance().get();
-								propertyProperties.put("selectableValues", selectableValueslist);	
-			  					for( SelectableValue s : selectableValues) {					
-									String SelectableValueName = s.getName();			
-									Object SelectableValues = s.getValues();
-									Map<String, Object> m = new HashMap<String, Object>();
-									m.put(SelectableValueName, SelectableValues); 
-									selectableValueslist.add(m);
+								DefaultSelectableValues selectableValuesInstance = fieldIO.selectableValues().newInstance() ;
+								KindOfSelectableValue kind = selectableValuesInstance.getkind(); 
+								HashMap<String,Object> kindMap = new HashMap<String,Object>();
+								kindMap.put("kind", kind.name());
+								switch (kind) {
+									case UNSPECIFIED :
+										break;
+									case SINGLESTRING :
+										propertyProperties.put("selectableValues", kindMap);
+								//		ArrayList<Map<String,String>> selectableValueslist = new ArrayList<Map<String,String>>();
+								//		kindMap.put("values", selectableValueslist);
+								//		List<SelectableValue> selectableValues = selectableValuesInstance.get();
+										// TODO: Hier fehlt noch was!
+										break;
+									case DOMAINOPTIONS :
+										propertyProperties.put("selectableValues", kindMap);
+										ArrayList<Map<String,Object>> selectableValueslist = new ArrayList<Map<String,Object>>();
+										kindMap.put("values", selectableValueslist);
+										List<SelectableValue> selectableValues = selectableValuesInstance.get();
+										for( SelectableValue s : selectableValues) {					
+											String SelectableValueName = s.getName();			
+											Object SelectableValues = s.getValues();
+											Map<String, Object> m = new HashMap<String, Object>();
+											m.put(SelectableValueName, SelectableValues); 
+											selectableValueslist.add(m);
+										}
+										break;
 								}
 								addCommonPropertyInfo(propertyProperties, f);
 								propertiesList.add(propertyProperties);

--
Gitblit v1.9.0-SNAPSHOT