1 16 package org.outerj.daisy.frontend.admin; 17 18 import org.apache.cocoon.forms.binding.AbstractCustomBinding; 19 import org.apache.cocoon.forms.formmodel.Widget; 20 import org.apache.cocoon.forms.formmodel.Repeater; 21 import org.apache.commons.jxpath.JXPathContext; 22 import org.outerj.daisy.repository.schema.DocumentType; 23 import org.outerj.daisy.repository.schema.FieldTypeUse; 24 import org.outerj.daisy.repository.schema.RepositorySchema; 25 import org.outerj.daisy.repository.schema.FieldType; 26 import org.outerj.daisy.repository.Repository; 27 28 public class FieldTypeUsesBinding extends AbstractCustomBinding { 29 protected void doLoad(Widget widget, JXPathContext jxPathContext) throws Exception { 30 Repeater repeater = (Repeater)widget; 31 DocumentType documentType = (DocumentType)jxPathContext.getValue("."); 32 FieldTypeUse[] fieldTypeUses = documentType.getFieldTypeUses(); 33 for (int i = 0; i < fieldTypeUses.length; i++) { 34 Repeater.RepeaterRow row = repeater.addRow(); 35 row.getChild("id").setValue(new java.lang.Long (fieldTypeUses[i].getFieldType().getId())); 36 row.getChild("name").setValue(fieldTypeUses[i].getFieldType().getName()); 37 row.getChild("required").setValue(Boolean.valueOf(fieldTypeUses[i].isRequired())); 38 } 39 } 40 41 protected void doSave(Widget widget, JXPathContext jxPathContext) throws Exception { 42 Repeater repeater = (Repeater)widget; 43 DocumentType documentType = (DocumentType)jxPathContext.getValue("."); 44 documentType.clearFieldTypeUses(); 45 Repository repository = (Repository)widget.getForm().getAttribute("DaisyRepository"); 46 RepositorySchema repositorySchema = repository.getRepositorySchema(); 47 for (int i = 0; i < repeater.getSize(); i++) { 48 Long fieldTypeId = (Long )repeater.getRow(i).getChild("id").getValue(); 49 FieldType fieldType = repositorySchema.getFieldTypeById(fieldTypeId.longValue(), false); 50 documentType.addFieldType(fieldType, ((Boolean )repeater.getRow(i).getChild("required").getValue()).booleanValue()); 51 } 52 } 53 } 54 | Popular Tags |