Another step of handling the annotation of selectableValues.

This commit is contained in:
Purodha 2013-02-20 10:37:36 +00:00
parent 5eb2e851a8
commit 24223ea0b7
3 changed files with 21 additions and 9 deletions

View File

@ -11,5 +11,6 @@ public @interface AnnFieldIO {
String validation() default "[A-Za-z0-9\\_\\-]*";
ReadWriteAccess rw() default ReadWriteAccess.WRITEONCE;
Class<?> referTo() default Void.class;
Class<? extends DefaultSelectableValues> selectableValues() default DefaultSelectableValues.class;
String[] referredProps() default { };
}

View File

@ -56,7 +56,7 @@ public class Domain extends AbstractEntity {
@Column(name = "domain_dns_master", columnDefinition = "character varying(64)")
private String dnsMaster;
@AnnFieldIO(validation="[a-zA-Z0-9\\-\\.]*", rw=ReadWriteAccess.READWRITE, referTo=DomainOption.class)
@AnnFieldIO(validation="[a-zA-Z0-9\\-\\.]*", rw=ReadWriteAccess.READWRITE, referTo=DomainOption.class, selectableValues=DomainOptionValues.class)
@ManyToMany(fetch=FetchType.EAGER, cascade=CascadeType.PERSIST)
@JoinTable(name="domain__domain_option",
joinColumns={@JoinColumn(name="domain_id", referencedColumnName="domain_id")},

View File

@ -13,6 +13,7 @@ import de.hsadmin.core.model.AnnFieldIO;
import de.hsadmin.core.model.AuthenticationException;
import de.hsadmin.core.model.HSAdminException;
import de.hsadmin.core.model.ReadWriteAccess;
import de.hsadmin.core.model.SelectableValue;
import de.hsadmin.core.model.Transaction;
public class ModulePropertiesRemote implements IRemote {
@ -42,7 +43,7 @@ public class ModulePropertiesRemote implements IRemote {
for (Field f: entityClass.getDeclaredFields()) {
HashMap<String, Object> propertyProperties = new HashMap<String, Object>();
AnnFieldIO fieldIO = f.getAnnotation(AnnFieldIO.class);
if (fieldIO != null){
if (fieldIO != null) {
String fieldName = f.getName();
propertyProperties.put("property", fieldName);
String regExp = fieldIO.validation();
@ -50,14 +51,24 @@ public class ModulePropertiesRemote implements IRemote {
ReadWriteAccess rw = fieldIO.rw();
propertyProperties.put("rw", rw.name());
String[] referredProps = fieldIO.referredProps();
propertyProperties.put("referredProps", referredProps);
// Class<?> declaringClass = f.getDeclaringClass();
propertyProperties.put("referredProps", referredProps);
// Class<?> declaringClass = f.getDeclaringClass();
// declaringClass = f.getDeclaringClass();
for(String s : referredProps){
String fullPropertyName = fieldName+"."+s;
for(String s : referredProps) {
String fullPropertyName = fieldName+"."+s;
propertiesList.add(createReferredPropertyInfo(fullPropertyName, f, s));
}
AddCommonPropertyInfo(propertyProperties, f);
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);
}
addCommonPropertyInfo(propertyProperties, f);
propertiesList.add(propertyProperties);
}
}
@ -105,11 +116,11 @@ public class ModulePropertiesRemote implements IRemote {
// trace = trace + " TF=" + field.getName();
remainingPart = remainingPart.substring(indexOfDot + 1);
}
AddCommonPropertyInfo(result, field);
addCommonPropertyInfo(result, field);
return result;
}
private void AddCommonPropertyInfo(Map<String, Object> propertyInfo, Field sourceField) {
private void addCommonPropertyInfo(Map<String, Object> propertyInfo, Field sourceField) {
propertyInfo.put("type", sourceField.getType().getName());
}