03-26-2008 12:36 PM
package org.contezza.customConstraints;
import java.util.ArrayList;
import java.util.List;
import java.sql.*;
//import org.alfresco.i18n.I18NUtil;
import org.alfresco.repo.dictionary.constraint.ListOfValuesConstraint;
import org.alfresco.web.bean.generator.BaseComponentGenerator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.Serializable;
import javax.faces.model.SelectItem;
public class ListOfValuesQueryConstraint extends ListOfValuesConstraint implements Serializable {
private static Log logger = LogFactory.getLog(BaseComponentGenerator.class);
private static final long serialVersionUID=1;
private List<String> allowedLabels;
public void setAllowedValues(List allowedValues) {}
public void setCaseSensitive(boolean caseSensitive) {}
public void initialize() {
super.setCaseSensitive(false);
this.loadDB();
}
public List<String> getAllowedLabels() {
return this.allowedLabels;
}
public void setAllowedLabels(List<String> allowedLabels) {
this.allowedLabels=allowedLabels;
}
public List<SelectItem> getSelectItemList() {
List<SelectItem> result = new ArrayList<SelectItem>(this.getAllowedValues().size());
for(int i=0;i<this.getAllowedValues().size();i++) {
result.add(new SelectItem((Object)this.getAllowedValues().get(i),this.allowedLabels.get(i)));
}
return result;
}
protected void loadDB() {
String driverName = "org.gjt.mm.mysql.Driver";
String serverName = "localhost";
String mydatabase = "alfresco";
String username = "alfresco";
String password = "alfresco";
List<String> av = new ArrayList<String>();
List<String> al=new ArrayList<String>();
try {
Connection connection = null;
Class.forName(driverName);
String url = "jdbc:mysql://" + serverName + "/" + mydatabase;
connection = DriverManager.getConnection(url, username, password);
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("select code,label from codelabel");
while (rs.next()) {
av.add(rs.getString("code"));
al.add(rs.getString("label"));
}
}
catch (Exception e) {}
super.setAllowedValues(av);
this.setAllowedLabels(al);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<model name="test:test" xmlns="http://www.alfresco.org/model/dictionary/1.0">
<description></description>
<author>Contezza InformatieManagement</author>
<version>0.1</version>
<imports>
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm" />
</imports>
<namespaces>
<namespace uri="http://www.contezza.nl/model/test/1.0" prefix="test" />
</namespaces>
<constraints>
<constraint name="test:CodeLabel" type="org.contezza.customConstraints.ListOfValuesQueryConstraint">
<parameter name="allowedValues">
<list>
</list>
</parameter>
<parameter name="caseSensitive"><value>true</value></parameter>
</constraint>
</constraints>
<types>
<type name="test:codecontent">
<title>Contenu étendu</title>
<parent>cm:content</parent>
<properties>
<property name="test:codestr">
<title>Code str</title>
<type>d:text</type>
<constraints>
<constraint ref="test:CodeLabel" />
</constraints>
</property>
</properties>
</type>
</types>
</model>
03-27-2008 12:12 PM
03-27-2008 12:19 PM
04-10-2008 09:56 AM
04-15-2008 04:03 AM
public List getAllowedValues() {
this.loadDB();
super.getAllowedValues();
}
04-21-2008 02:23 PM
04-21-2008 02:37 PM
04-28-2008 05:42 AM
<property-sheet>
<show-property name="tc:codestr" component-generator="ListOfValuesQueryGenerator" />
</property-sheet>
public UIComponent generate(FacesContext context, String id) {
UIOutput component = (UIOutput)context.getApplication().createComponent(
ComponentConstants.JAVAX_FACES_OUTPUT);
component.setRendererType(ComponentConstants.JAVAX_FACES_TEXT);
FacesHelper.setupComponentId(context, component, id);
return component;
}
protected UIComponent createComponent(FacesContext context, UIPropertySheet propertySheet, PropertySheetItem item) {
UIComponent component = null;
if (propertySheet.inEditMode()) {
ListOfValuesQueryConstraint constraint=this.getListOfValuesQuery(context, propertySheet, item);
PropertyDefinition propDef = this.getPropertyDefinition(context, propertySheet.getNode(), item.getName());
if (constraint != null && item.isReadOnly() == false && propDef != null && propDef.isProtected() == false) {
component = context.getApplication().createComponent(UISelectOne.COMPONENT_TYPE);
FacesHelper.setupComponentId(context, component, item.getName());
UISelectItems itemsComponent = (UISelectItems)context.getApplication().createComponent("javax.faces.SelectItems");
itemsComponent.setValue(constraint.getSelectItemList());
component.getChildren().add(itemsComponent);
}
}
else {
component = generate(context, item.getName());
}
return component;
}
protected ListOfValuesQueryConstraint getListOfValuesQuery(FacesContext context, UIPropertySheet propertySheet, PropertySheetItem item) {
ListOfValuesQueryConstraint lovqConstraint = null;
PropertyDefinition propertyDef = getPropertyDefinition(context, propertySheet.getNode(), item.getName());
if (propertyDef != null) {
List<ConstraintDefinition> constraints = propertyDef.getConstraints();
for (ConstraintDefinition constraintDef : constraints) {
Constraint constraint = constraintDef.getConstraint();
if (constraint instanceof ListOfValuesQueryConstraint) {
lovqConstraint = (ListOfValuesQueryConstraint)constraint;
break;
}
}
}
return lovqConstraint;
}
protected void setupConverter(FacesContext context, UIPropertySheet propertySheet, PropertySheetItem property, PropertyDefinition propertyDef, UIComponent component) {
super.setupConverter(context, propertySheet, property, propertyDef, component);
if(!propertySheet.inEditMode() && propertyDef != null && component instanceof UIOutput) {
((UIOutput)component).setConverter(new ListOfValuesQueryConverter(this.getListOfValuesQuery(context, propertySheet, property)));
}
}
public class ListOfValuesQueryConverter implements Converter,StateHolder {
private ListOfValuesQueryConstraint constraint;
public ListOfValuesQueryConverter(ListOfValuesQueryConstraint constraint) {
this.constraint=constraint;
}
public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
return new Object();
}
public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
if(value instanceof String) {
List<String> l = this.constraint.getAllowedValues();
for(int i=0;i<l.size();i++) {
if(l.get(i).equals((String)value)) {
return this.constraint.getAllowedLabels().get(i);
}
}
}
else if(value instanceof List) {
String result="";
List<String> l = this.constraint.getAllowedValues();
for(String val : (List<String>)value) {
for(int i=0;i<l.size();i++) {
if(l.get(i).equals(val)) {
result+=this.constraint.getAllowedLabels().get(i)+" ";
break;
}
}
}
return result;
}
return new String();
}
public ListOfValuesQueryConverter() {}
public Object saveState(FacesContext context) { return (Object)this.constraint; }
public void restoreState(FacesContext context, Object state) { this.constraint=(ListOfValuesQueryConstraint)state; }
public boolean isTransient() { return false; }
public void setTransient(boolean newTransientValue) {}
}
08-02-2008 04:16 AM
08-18-2008 04:11 AM
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.