package org.nocket.gen.domain.element;
import gengui.domain.AbstractDomainReference;
import gengui.guiadapter.ConnectionReuse;
import gengui.util.ReflectionUtil;
import java.lang.reflect.Method;
import org.apache.commons.lang.StringUtils;
import org.nocket.gen.domain.ref.WrappedDomainReferenceI;
import org.nocket.gen.domain.visitor.DomainElementVisitorI;
public class MultivalueColumnElement<E extends AbstractDomainReference> extends SimplePropertyElement<E> {
private final String columnName;
private final String prompt;
public MultivalueColumnElement(WrappedDomainReferenceI<E> accessor, String name, String prompt) {
this(accessor, name, prompt, findMethod(accessor, name));
}
public MultivalueColumnElement(WrappedDomainReferenceI<E> accessor, String name, String prompt, Method method) {
super(accessor, method);
this.columnName = name;
this.prompt = prompt;
}
private static Method findMethod(WrappedDomainReferenceI<?> accessor, String name) {
String propertyName = StringUtils.capitalize(name);
Method method = accessor.getRef().findPropertyAccessor(propertyName, ReflectionUtil.GETTER_PREFIX);
return method;
}
public String getColumnName() {
return columnName;
}
@Override
public String getPrompt() {
return prompt;
}
public String getPropertiesWicketId() {
return super.getWicketId().replace(getPropertyName(), "columns." + getPropertyName());
}
@Deprecated
@Override
public void accept(DomainElementVisitorI<E> visitor) {
throw new UnsupportedOperationException();
}
@Override
public boolean repeated() {
return true;
}
@Override
public DomainElementI<E> replicate(ConnectionReuse reuse) {
return new MultivalueColumnElement<E>(this.getAccessor().replicate(reuse), columnName, prompt,
getMethod());
}
}