2
0
Fork 0

fix annotion parser bug and made some logger changes and added max page size support

This commit is contained in:
willemc 2010-05-06 18:34:30 +02:00
parent 90fef5b762
commit cd2e3eaf50
9 changed files with 134 additions and 38 deletions

View file

@ -179,12 +179,28 @@ public class VascAnnotationParser {
public String getVascDisplayName(Class<?> beanClass) { public String getVascDisplayName(Class<?> beanClass) {
//System.out.println("========== GetDisPlayName: "+beanClass); //System.out.println("========== GetDisPlayName: "+beanClass);
// first search in class for display name
for (Method method:beanClass.getMethods()) {
if (method.getName().startsWith("get")==false) { //a bit durty
continue;
}
Annotation anno = method.getAnnotation(VascDisplayName.class);
if (anno==null) {
continue;
}
return method.getName().substring(3,4).toLowerCase()+method.getName().substring(4); // field name without get
}
// then search in class for display name on templated fields.
for (Method method:beanClass.getMethods()) { for (Method method:beanClass.getMethods()) {
if (method.getName().startsWith("get")==false) { //a bit durty if (method.getName().startsWith("get")==false) { //a bit durty
continue; continue;
} }
VascFieldTemplate template = method.getAnnotation(VascFieldTemplate.class); VascFieldTemplate template = method.getAnnotation(VascFieldTemplate.class);
if (template!=null) { if (template==null) {
continue; // no template anno
}
//System.out.println("Search template for: "+method.getName()); //System.out.println("Search template for: "+method.getName());
String tempProp = method.getName().substring(3); String tempProp = method.getName().substring(3);
if ("".equals(template.template())==false) { if ("".equals(template.template())==false) {
@ -203,13 +219,7 @@ public class VascAnnotationParser {
return method.getName().substring(3,4).toLowerCase()+method.getName().substring(4); // field name without get return method.getName().substring(3,4).toLowerCase()+method.getName().substring(4); // field name without get
} }
} }
Annotation anno = method.getAnnotation(VascDisplayName.class);
if (anno==null) {
continue;
}
//System.out.println("Found normal");
return method.getName().substring(3,4).toLowerCase()+method.getName().substring(4); // field name without get
}
//System.out.println("Defraulting to key"); //System.out.println("Defraulting to key");
return getVascPrimaryKey(beanClass); // fall back on primary key return getVascPrimaryKey(beanClass); // fall back on primary key
} }
@ -245,23 +255,32 @@ public class VascAnnotationParser {
} }
public String getVascPrimaryKey(Class<?> beanClass) { public String getVascPrimaryKey(Class<?> beanClass) {
// first search Key anno
for (Method method:beanClass.getMethods()) { for (Method method:beanClass.getMethods()) {
if(method.getName().startsWith("get")==false) { //a bit durty if(method.getName().startsWith("get")==false) { //a bit durty
continue; continue;
} }
VascFieldTemplate template = method.getAnnotation(VascFieldTemplate.class);
if (template!=null) {
String value = getVascPrimaryKey(template.templateClass());
if (value!=null) {
return value;
}
}
Annotation anno = method.getAnnotation(VascPrimaryKey.class); Annotation anno = method.getAnnotation(VascPrimaryKey.class);
if (anno==null) { if (anno==null) {
continue; continue;
} }
return method.getName().substring(3,4).toLowerCase()+method.getName().substring(4); // field name without get return method.getName().substring(3,4).toLowerCase()+method.getName().substring(4); // field name without get
} }
for (Method method:beanClass.getMethods()) {
if(method.getName().startsWith("get")==false) { //a bit durty
continue;
}
VascFieldTemplate template = method.getAnnotation(VascFieldTemplate.class);
if (template==null) {
continue; // no template
}
String value = getVascPrimaryKey(template.templateClass()); // note templateing the templated class is possible
if (value!=null) {
return value;
}
}
return null; // maybe fallback on getId() ? return null; // maybe fallback on getId() ?
} }

View file

@ -41,6 +41,7 @@ abstract public class AbstractVascBackendState implements VascBackendState {
protected Map<String,Object> parameters = null; protected Map<String,Object> parameters = null;
private int pageIndex = 0; private int pageIndex = 0;
private int pageSize = 0; private int pageSize = 0;
private int pageSizeMax = 0;
private String sortField = null; private String sortField = null;
private String searchString = null; private String searchString = null;
private boolean ascending = true; private boolean ascending = true;
@ -131,4 +132,18 @@ abstract public class AbstractVascBackendState implements VascBackendState {
public void setSortField(String sortField) { public void setSortField(String sortField) {
this.sortField=sortField; this.sortField=sortField;
} }
/**
* @return the pageSizeMax
*/
public int getPageSizeMax() {
return pageSizeMax;
}
/**
* @param pageSizeMax the pageSizeMax to set
*/
public void setPageSizeMax(int pageSizeMax) {
this.pageSizeMax = pageSizeMax;
}
} }

View file

@ -49,6 +49,9 @@ public interface VascBackendState extends Serializable {
public void setPageSize(int size); public void setPageSize(int size);
public int getPageSize(); public int getPageSize();
public void setPageSizeMax(int size);
public int getPageSizeMax();
public void setPageIndex(int index); public void setPageIndex(int index);
public int getPageIndex(); public int getPageIndex();

View file

@ -504,6 +504,8 @@ public class JSFVascEntrySupportBean implements Serializable {
VascEntryState state = vascEntry.getVascFrontendData().getVascEntryState(); VascEntryState state = vascEntry.getVascFrontendData().getVascEntryState();
try { try {
setSelectedMultiRowAction("null"); // reset to selected ... value
for (Integer rowId:state.getMultiActionSelection().keySet()) { for (Integer rowId:state.getMultiActionSelection().keySet()) {
Boolean value = state.getMultiActionSelection().get(rowId); Boolean value = state.getMultiActionSelection().get(rowId);
logger.fine("multiRow selected: "+rowId+" value: "+value); logger.fine("multiRow selected: "+rowId+" value: "+value);
@ -511,9 +513,11 @@ public class JSFVascEntrySupportBean implements Serializable {
Object row = state.getEntryDataList().get(rowId); Object row = state.getEntryDataList().get(rowId);
logger.finer("row: "+row); logger.finer("row: "+row);
action.doRowAction(vascEntry, row); action.doRowAction(vascEntry, row);
if (action.getId().equals(DeleteRowAction.ACTION_ID)) {
return;
}
} }
} }
setSelectedMultiRowAction("null"); // reset to selected ... value
state.getMultiActionSelection().clear(); // after down deselect all options state.getMultiActionSelection().clear(); // after down deselect all options
} catch (Exception e) { } catch (Exception e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
@ -802,7 +806,9 @@ public class JSFVascEntrySupportBean implements Serializable {
logger.fine("cancelAction"); logger.fine("cancelAction");
JSFVascUIComponent comp = JSFVascUIComponent.findVascParent(event.getComponent()); JSFVascUIComponent comp = JSFVascUIComponent.findVascParent(event.getComponent());
VascEntry entry = comp.getVascEntry(); VascEntry entry = comp.getVascEntry();
this.getSelected().setRealValue(false); if (getSelected()!=null) {
getSelected().setRealValue(false);
}
entry.getVascFrontendData().getVascEntryState().setEntryDataObject(null); entry.getVascFrontendData().getVascEntryState().setEntryDataObject(null);
try { try {
entry.getVascFrontendData().getVascFrontend().renderView(); entry.getVascFrontendData().getVascFrontend().renderView();
@ -844,7 +850,26 @@ public class JSFVascEntrySupportBean implements Serializable {
logger.fine("deleteAction"); logger.fine("deleteAction");
JSFVascUIComponent comp = JSFVascUIComponent.findVascParent(event.getComponent()); JSFVascUIComponent comp = JSFVascUIComponent.findVascParent(event.getComponent());
VascEntry entry = comp.getVascEntry(); VascEntry entry = comp.getVascEntry();
VascEntryState state = entry.getVascFrontendData().getVascEntryState();
if (state.getMultiActionSelection().isEmpty()==false) {
List<Object> sels = new ArrayList<Object>(5);
for (Integer rowId:state.getMultiActionSelection().keySet()) {
Boolean value = state.getMultiActionSelection().get(rowId);
logger.fine("multiRow delete: "+rowId+" value: "+value);
if (value!=null && value==true) {
Object row = state.getEntryDataList().get(rowId);
sels.add(row);
}
}
for (Object row:sels) {
entry.getVascFrontendData().getVascEntryState().setEntryDataObject(row);
entry.getVascFrontendData().getVascFrontendHelper().deleteObject(entry); entry.getVascFrontendData().getVascFrontendHelper().deleteObject(entry);
}
state.getMultiActionSelection().clear(); // after down deselect all options
} else {
entry.getVascFrontendData().getVascFrontendHelper().deleteObject(entry);
}
try { try {
entry.getVascFrontendData().getVascFrontend().renderView(); entry.getVascFrontendData().getVascFrontend().renderView();
} catch (Exception e) { } catch (Exception e) {
@ -862,7 +887,7 @@ public class JSFVascEntrySupportBean implements Serializable {
// TODO: FIX this change listener is called before save action in row EDIT... // TODO: FIX this change listener is called before save action in row EDIT...
if (id==null) { if (id==null) {
logger.info("FIXME: unexcepted call to direct download"); logger.finer("FIXME: unexcepted call to direct download");
return; return;
} }
@ -920,7 +945,7 @@ public class JSFVascEntrySupportBean implements Serializable {
// TODO: FIX this change listener is called before save action in row EDIT... // TODO: FIX this change listener is called before save action in row EDIT...
if (id==null) { if (id==null) {
logger.info("FIXME: unexcepted call to direct page change"); logger.finer("FIXME: unexcepted call to direct page change");
return; return;
} }
@ -967,7 +992,7 @@ public class JSFVascEntrySupportBean implements Serializable {
* @param selected the selected to set * @param selected the selected to set
*/ */
public void setSelected(VascDataBackendBean selected) { public void setSelected(VascDataBackendBean selected) {
logger.info("Set selected records: "+selected+" on: "+this); logger.fine("Set selected records: "+selected+" on: "+this);
this.selected = selected; this.selected = selected;
} }

View file

@ -28,6 +28,7 @@ package com.idcanet.vasc.frontends.web.jsf;
import java.io.IOException; import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -291,9 +292,21 @@ public class JSFVascUIComponentRenderer extends Renderer {
model.setValue(option.getDefaultValue()); model.setValue(option.getDefaultValue());
UIInput jsfEdit = (UIInput)editor.createComponent(entry,option,model,grid); UIInput jsfEdit = (UIInput)editor.createComponent(entry,option,model,grid);
jsfEdit.addValueChangeListener(new ModelChangeListener(model)); jsfEdit.addValueChangeListener(new ModelChangeListener(model));
Class<?> clazz = option.getVascEntryFieldType().getAutoDetectClass();
editor.setDisabled(false); // TODO: HACK for JSFLIST for model remove me ! if (clazz!=null && model.getValue()!=null) {
if (clazz.equals(model.getValue().getClass())==false) {
// lets try setting correct default.
try {
Constructor<?> c = clazz.getConstructor(String.class);
Object value = c.newInstance(model.getValue());
jsfEdit.setValue(value);
} catch (Exception e) {
throw new VascException(e);
}
} else {
jsfEdit.setValue(model.getValue()); // set default value
}
}
// i==0 is for multi field editor support... which is stell very in progress aka not working // i==0 is for multi field editor support... which is stell very in progress aka not working
if (i==0) { if (i==0) {
entry.getVascFrontendData().addFieldVascUIComponents(option, editor,jsfEdit); entry.getVascFrontendData().addFieldVascUIComponents(option, editor,jsfEdit);

View file

@ -51,6 +51,9 @@ public class JSFVascValidatePhaseListener implements PhaseListener {
if (comp==null) { if (comp==null) {
return; // non-vasc ui-input return; // non-vasc ui-input
} }
if (comp.getSupportBean().getSelected()==null) {
return; // no editing
}
VascEntry entry = comp.getVascEntry(); VascEntry entry = comp.getVascEntry();
if (entry.getVascFrontendData().getVascEntryState().getEntryDataObject()==null) { if (entry.getVascFrontendData().getVascEntryState().getEntryDataObject()==null) {
return; // we are not in edit mode. return; // we are not in edit mode.

View file

@ -82,6 +82,7 @@ public class DefaultVascFactory {
vascFrontendData.setVascEntryState(new DefaultVascEntryState()); vascFrontendData.setVascEntryState(new DefaultVascEntryState());
vascFrontendData.getVascEntryState().setVascBackendState(new DefaultVascBackendState()); vascFrontendData.getVascEntryState().setVascBackendState(new DefaultVascBackendState());
vascFrontendData.getVascEntryState().getVascBackendState().setPageSize(100); // default page size is zero aka disabled vascFrontendData.getVascEntryState().getVascBackendState().setPageSize(100); // default page size is zero aka disabled
vascFrontendData.getVascEntryState().getVascBackendState().setPageSizeMax(1000); // max 1k records on screen.
vascFrontendData.setExceptionListener(new VascEntryEventListener() { vascFrontendData.setExceptionListener(new VascEntryEventListener() {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public void vascEvent(VascEntry entry, VascEventType type,Object data) { public void vascEvent(VascEntry entry, VascEventType type,Object data) {

View file

@ -353,6 +353,11 @@ public class DefaultVascFrontendHelper implements VascFrontendHelper {
public void refreshData(VascEntry entry) { public void refreshData(VascEntry entry) {
entry.getVascFrontendData().getVascEntryState().setEntryDataObject(null); entry.getVascFrontendData().getVascEntryState().setEntryDataObject(null);
try { try {
// check and correct max page size
if (entry.getVascFrontendData().getVascEntryState().getVascBackendState().getPageSize()>entry.getVascFrontendData().getVascEntryState().getVascBackendState().getPageSizeMax()) {
entry.getVascFrontendData().getVascEntryState().getVascBackendState().setPageSize(entry.getVascFrontendData().getVascEntryState().getVascBackendState().getPageSizeMax());
}
for (String key:entry.getEntryParameterKeys()) { for (String key:entry.getEntryParameterKeys()) {
Object value = entry.getEntryParameter(key); Object value = entry.getEntryParameter(key);
entry.getVascFrontendData().getVascEntryState().getVascBackendState().setDataParameter(key, value); entry.getVascFrontendData().getVascEntryState().getVascBackendState().setDataParameter(key, value);

View file

@ -95,13 +95,25 @@ public class DefaultVascSelectItemModel implements VascSelectItemModel {
result.add(item); result.add(item);
} }
// set para // set def para
VascBackendState state = new DefaultVascBackendState(); VascBackendState state = new DefaultVascBackendState();
for (String key2:ve.getEntryParameterKeys()) { for (String key2:ve.getEntryParameterKeys()) {
Object value = ve.getEntryParameter(key2); Object value = ve.getEntryParameter(key2);
//System.out.println("Copy paras name: "+key2+" value: "+value+" class: "+value.getClass().getName()); //System.out.println("Copy paras name: "+key2+" value: "+value+" class: "+value.getClass().getName());
state.setDataParameter(key2, value); state.setDataParameter(key2, value);
} }
// set list para
for (VascEntryField vef:ve.getListOptions()) {
Object def = vef.getDefaultValue();
if (def==null) {
continue;
}
String backendName = vef.getBackendName();
state.setDataParameter(backendName, def);
}
// set para from parent state entry
for (String paraName:entryParameterFieldIds.keySet()) { for (String paraName:entryParameterFieldIds.keySet()) {
VascEntry fieldEntry = entry; VascEntry fieldEntry = entry;