Coverage Report - org.kuali.student.lum.lu.ui.tools.client.configuration.ClusetView
 
Classes in this File Line Coverage Branch Coverage Complexity
ClusetView
0%
0/154
0%
0/34
1.571
ClusetView$1
0%
0/7
N/A
1.571
ClusetView$1$1
0%
0/8
0%
0/2
1.571
ClusetView$2
0%
0/4
N/A
1.571
ClusetView$3
0%
0/20
0%
0/12
1.571
ClusetView$4
0%
0/3
N/A
1.571
ClusetView$5
0%
0/6
0%
0/6
1.571
ClusetView$CluSetsManagementViews
0%
0/5
N/A
1.571
ClusetView$Picker
0%
0/13
N/A
1.571
 
 1  
 package org.kuali.student.lum.lu.ui.tools.client.configuration;
 2  
 
 3  
 import java.util.Date;
 4  
 import java.util.List;
 5  
 
 6  
 import org.kuali.student.common.assembly.data.LookupMetadata;
 7  
 import org.kuali.student.common.assembly.data.Metadata;
 8  
 import org.kuali.student.common.assembly.data.QueryPath;
 9  
 import org.kuali.student.common.ui.client.application.Application;
 10  
 import org.kuali.student.common.ui.client.application.KSAsyncCallback;
 11  
 import org.kuali.student.common.ui.client.configurable.mvc.FieldDescriptor;
 12  
 import org.kuali.student.common.ui.client.configurable.mvc.FieldDescriptorReadOnly;
 13  
 import org.kuali.student.common.ui.client.configurable.mvc.SectionTitle;
 14  
 import org.kuali.student.common.ui.client.configurable.mvc.binding.ModelWidgetBinding;
 15  
 import org.kuali.student.common.ui.client.configurable.mvc.binding.ModelWidgetBindingSupport;
 16  
 import org.kuali.student.common.ui.client.configurable.mvc.sections.Section;
 17  
 import org.kuali.student.common.ui.client.configurable.mvc.sections.VerticalSection;
 18  
 import org.kuali.student.common.ui.client.configurable.mvc.views.VerticalSectionView;
 19  
 import org.kuali.student.common.ui.client.mvc.Callback;
 20  
 import org.kuali.student.common.ui.client.mvc.Controller;
 21  
 import org.kuali.student.common.ui.client.mvc.DataModel;
 22  
 import org.kuali.student.common.ui.client.mvc.DataModelDefinition;
 23  
 import org.kuali.student.common.ui.client.mvc.history.HistoryManager;
 24  
 import org.kuali.student.common.ui.client.widgets.KSDatePicker;
 25  
 import org.kuali.student.common.ui.client.widgets.KSLabel;
 26  
 import org.kuali.student.common.ui.client.widgets.KSTextArea;
 27  
 import org.kuali.student.common.ui.client.widgets.field.layout.element.MessageKeyInfo;
 28  
 import org.kuali.student.common.ui.client.widgets.headers.KSDocumentHeader;
 29  
 import org.kuali.student.common.ui.client.widgets.search.KSPicker;
 30  
 import org.kuali.student.common.ui.client.widgets.search.SelectedResults;
 31  
 import org.kuali.student.common.ui.client.widgets.table.summary.SummaryTableFieldBlock;
 32  
 import org.kuali.student.common.ui.client.widgets.table.summary.SummaryTableFieldRow;
 33  
 import org.kuali.student.common.ui.client.widgets.table.summary.SummaryTableSection;
 34  
 import org.kuali.student.lum.common.client.lu.LUUIConstants;
 35  
 import org.kuali.student.lum.common.client.widgets.CluSetDetailsWidget;
 36  
 import org.kuali.student.lum.common.client.widgets.CluSetEditorWidget;
 37  
 import org.kuali.student.lum.common.client.widgets.CluSetManagementRpcService;
 38  
 import org.kuali.student.lum.common.client.widgets.CluSetManagementRpcServiceAsync;
 39  
 import org.kuali.student.lum.common.client.widgets.CluSetRetriever;
 40  
 import org.kuali.student.lum.common.client.widgets.CluSetRetrieverImpl;
 41  
 
 42  
 import com.google.gwt.core.client.GWT;
 43  
 import com.google.gwt.dom.client.Style;
 44  
 import com.google.gwt.event.dom.client.ClickEvent;
 45  
 import com.google.gwt.event.dom.client.ClickHandler;
 46  
 import com.google.gwt.i18n.client.DateTimeFormat;
 47  
 import com.google.gwt.user.client.Window;
 48  
 import com.google.gwt.user.client.rpc.AsyncCallback;
 49  
 import com.google.gwt.user.client.ui.Anchor;
 50  
 import com.google.gwt.user.client.ui.HasText;
 51  
 import com.google.gwt.user.client.ui.SimplePanel;
 52  
 import com.google.gwt.user.client.ui.Widget;
 53  
 
 54  0
 public class ClusetView extends VerticalSectionView {
 55  
 
 56  0
         protected CluSetManagementRpcServiceAsync cluSetManagementRpcServiceAsync = GWT.create(CluSetManagementRpcService.class);
 57  0
     protected CluSetRetriever cluSetRetriever = new CluSetRetrieverImpl();
 58  
     protected DataModelDefinition modelDefinition;
 59  
     protected DataModelDefinition searchDefinition;
 60  
     protected String selectedCluSetId;
 61  
     protected CluSetsManagementViews viewEnum;
 62  0
     protected SimplePanel cluSetDisplay = new SimplePanel();
 63  
     protected CluSetEditorWidget cluSetEditor;
 64  
     protected String cluSetType;
 65  
 
 66  0
     protected KSLabel titleLabel = new KSLabel();
 67  
 
 68  
     public void afterModelIsLoaded(DataModel cluSetModel) {
 69  0
         titleLabel.setText(cluSetModel.<String>get("name"));
 70  0
     }
 71  
 
 72  0
     public enum CluSetsManagementViews {
 73  0
         MAIN,
 74  0
         CREATE,
 75  0
         EDIT,
 76  0
         VIEW
 77  
     }
 78  
 
 79  
 
 80  
     public ClusetView() {
 81  0
                 super();
 82  0
         }
 83  
 
 84  
         public ClusetView(Enum<?> viewEnum, String name, String modelId,
 85  
                         boolean showTitle) {
 86  0
                 super(viewEnum, name, modelId, showTitle);
 87  0
         }
 88  
 
 89  
         public ClusetView(Enum<?> viewEnum, String name, String modelId,
 90  
                         Widget titleWidget) {
 91  0
                 super(viewEnum, name, modelId, titleWidget);
 92  0
         }
 93  
 
 94  
         public ClusetView(Enum<?> viewEnum, String name, String modelId) {
 95  0
                 super(viewEnum, name, modelId);
 96  0
         }
 97  
 
 98  
         public void init(CluSetsManagementViews clusetViewEnum, String name, String modelId, final Callback<Boolean> onReady) {
 99  0
             init(clusetViewEnum, name, modelId, false, onReady);
 100  0
     }
 101  
 
 102  
         public void init(final CluSetsManagementViews clusetViewEnum, String name,
 103  
                         String clusetMgtModel, boolean showTitle, final Callback<Boolean> onReady) {
 104  0
         super.init(clusetViewEnum, name, modelId, showTitle);
 105  0
         cluSetType = "kuali.cluSet.type.CreditCourse";
 106  0
         if (clusetViewEnum == CluSetsManagementViews.CREATE ||
 107  
                 clusetViewEnum == CluSetsManagementViews.EDIT) {
 108  0
             cluSetEditor = new CluSetEditorWidget(
 109  
                     new CluSetRetrieverImpl(),
 110  
                     clusetViewEnum, name, modelId, true, null,
 111  
                     cluSetType, false);
 112  
         }
 113  0
         viewEnum = clusetViewEnum;
 114  0
         cluSetManagementRpcServiceAsync.getMetadata("courseSet", null, new KSAsyncCallback<Metadata>() {
 115  
             @Override
 116  
             public void handleFailure(Throwable caught) {
 117  0
                 Window.alert("Failed to retrieve cluset definition");
 118  0
             }
 119  
 
 120  
             @Override
 121  
             public void onSuccess(Metadata result) {
 122  0
                 DataModelDefinition def = new DataModelDefinition(result);
 123  0
                 setModelDefinition(def);
 124  0
                 cluSetManagementRpcServiceAsync.getMetadata("search", null, new AsyncCallback<Metadata>() {
 125  
                     @Override
 126  
                     public void onFailure(Throwable caught) {
 127  0
                         Window.alert("Failed to retrieve searchDefinition");
 128  0
                     }
 129  
 
 130  
                     @Override
 131  
                     public void onSuccess(Metadata result) {
 132  0
                         setSearchDefinition(new DataModelDefinition(result));
 133  0
                         setupView(clusetViewEnum);
 134  0
                         if (onReady != null) {
 135  0
                             onReady.exec(new Boolean(true));
 136  
                         }
 137  0
                     }
 138  
                 });
 139  0
             }
 140  
         });
 141  0
         setStyles();
 142  0
         }
 143  
     
 144  
     private void setStyles() {
 145  0
         titleLabel.addStyleName("cluSetTitle");
 146  0
     }
 147  
 
 148  
     private void setModelDefinition(DataModelDefinition modelDefinition) {
 149  0
         this.modelDefinition = modelDefinition;
 150  0
     }
 151  
 
 152  
     private void setSearchDefinition(DataModelDefinition searchDefinition) {
 153  0
         this.searchDefinition = searchDefinition;
 154  0
     }
 155  
 
 156  
     @Override
 157  
     public void beforeShow(Callback<Boolean> onReadyCallback) {
 158  0
         super.beforeShow(onReadyCallback);
 159  0
         if (viewEnum == CluSetsManagementViews.VIEW) {
 160  0
             refreshCluSetDisplay();
 161  
         }
 162  0
     }
 163  
 
 164  
     private void refreshCluSetDisplay() {
 165  0
         if (this.selectedCluSetId != null) {
 166  0
             CluSetDetailsWidget clusetDetailsWidget =
 167  
                     new CluSetDetailsWidget(selectedCluSetId, cluSetRetriever);
 168  0
             cluSetDisplay.clear();
 169  0
             cluSetDisplay.setWidget(clusetDetailsWidget);
 170  
         }
 171  0
     }
 172  
 
 173  
     private void setupView(CluSetsManagementViews clusetViewEnum) {
 174  0
         if (clusetViewEnum == CluSetsManagementViews.CREATE ||
 175  
                 clusetViewEnum == CluSetsManagementViews.EDIT) {
 176  0
             setupCreateEditClusetView();
 177  0
         } else if (clusetViewEnum == CluSetsManagementViews.MAIN) {
 178  0
             setupMainView();
 179  0
         } else if (clusetViewEnum == CluSetsManagementViews.VIEW) {
 180  0
             setupViewClusetView();
 181  
         }
 182  0
     }
 183  
 
 184  
     @Override
 185  
     public void onHistoryEvent(String historyStack) {
 186  0
         super.onHistoryEvent(historyStack);
 187  0
         CluSetsManagementController cluSetsManagementController =
 188  
                 (CluSetsManagementController) getController();
 189  0
         selectedCluSetId = HistoryManager.getTokenMap(historyStack).get("docId");
 190  0
         cluSetsManagementController.getMainView().setSelectedCluSetId(selectedCluSetId);
 191  0
         cluSetsManagementController.showView(CluSetsManagementViews.VIEW);
 192  0
     }
 193  
 
 194  
     private void setupViewClusetView() {
 195  0
         Anchor editCluSet = new Anchor("Edit Course Set");
 196  0
         editCluSet.addClickHandler(new ClickHandler() {
 197  
             @Override
 198  
             public void onClick(ClickEvent event) {
 199  0
                 Controller parentController = getController();
 200  0
                 parentController.showView(CluSetsManagementViews.EDIT);
 201  0
             }
 202  
         });
 203  0
         addWidget(titleLabel);
 204  0
         this.addWidget(editCluSet);
 205  0
         Section generalClusInfoSection = new VerticalSection();
 206  0
         KSLabel cluSetTitle = new KSLabel();
 207  0
         cluSetTitle.getElement().getStyle().setProperty("fontWeight", "bold");
 208  0
         cluSetTitle.getElement().getStyle().setProperty("fontSize", "16px");
 209  0
         cluSetTitle.getElement().getStyle().setProperty("borderBotton", "1px solid #D8D8D8");
 210  
 
 211  0
         addField(generalClusInfoSection,
 212  
                 ToolsConstants.CLU_SET_NAME_FIELD,
 213  
                 null,
 214  
                 cluSetTitle,
 215  
                 null);
 216  
 //        addField(generalClusInfoSection, 
 217  
 //                ToolsConstants.CLU_SET_DESCRIPTION_FIELD, 
 218  
 //                generateMessageInfo(ToolsConstants.DESCRIPTION),
 219  
 //                new KSLabel(),
 220  
 //                null);
 221  
 //        addField(generalClusInfoSection, 
 222  
 //                ToolsConstants.CLU_SET_EXP_DATE_FIELD, 
 223  
 //                generateMessageInfo(ToolsConstants.EXPIRATION_DATE),
 224  
 //                new KSLabel(),
 225  
 //                null);
 226  0
         this.addSection(setupGeneralClusInfoSection());
 227  
 //        this.addSection(generalClusInfoSection);
 228  0
         this.addWidget(new KSLabel("Items in this Course Set"));
 229  0
         this.addWidget(cluSetDisplay);
 230  0
         this.setStyleName("standard-content-padding");
 231  0
     }
 232  
 
 233  
     private SummaryTableSection setupGeneralClusInfoSection() {
 234  0
         SummaryTableSection result = new SummaryTableSection(getController());
 235  0
         result.setEditable(false);
 236  
 
 237  0
         SummaryTableFieldBlock block = new SummaryTableFieldBlock();
 238  
 //        block.addEditingHandler(new EditHandler(CourseSections.COURSE_INFO));
 239  
 //        block.setTitle(getLabel(LUConstants.INFORMATION_LABEL_KEY));
 240  0
         block.addSummaryTableFieldRow(getFieldRow(ToolsConstants.CLU_SET_DESCRIPTION_FIELD, generateMessageInfo(ToolsConstants.DESCRIPTION)));
 241  0
         SummaryTableFieldRow expDateRow = getFieldRow(ToolsConstants.CLU_SET_EXP_DATE_FIELD,
 242  
                 generateMessageInfo(ToolsConstants.EXPIRATION_DATE), null, null, null,
 243  0
                 new ModelWidgetBindingSupport<HasText>() {
 244  
                     public String dateToString(Date date) {
 245  0
                         String result = null;
 246  0
                         DateTimeFormat format = DateTimeFormat.getFormat("MM/dd/yyyy");
 247  0
                         result = format.format(date);
 248  
 
 249  0
                         return result;
 250  
                     }
 251  
 
 252  
                     @Override
 253  
                     public void setModelValue(HasText widget, DataModel model, String path) {
 254  
                         // not implementing here since this value should not be edited through this widget
 255  0
                     }
 256  
 
 257  
                     @Override
 258  
                     public void setWidgetValue(HasText widget, DataModel model, String path) {
 259  
                         try {
 260  0
                             QueryPath qPath = QueryPath.parse(path);
 261  
 
 262  0
                             Object value = null;
 263  0
                             if (model != null) {
 264  0
                                 value = model.get(qPath);
 265  
                             }
 266  
 
 267  0
                             if (value != null && widget != null) {
 268  0
                                 if (value instanceof Date) {
 269  0
                                     widget.setText(dateToString((Date) value));
 270  
                                 } else {
 271  0
                                     widget.setText(value.toString());
 272  
                                 }
 273  0
                             } else if (value == null && widget != null) {
 274  0
                                 widget.setText("");
 275  
                             }
 276  0
                         } catch (Exception e) {
 277  0
                             GWT.log("Error setting widget value for: " + path, e);
 278  0
                         }
 279  0
                     }
 280  
 
 281  
                 }
 282  
                 , false);
 283  0
         block.addSummaryTableFieldRow(expDateRow);
 284  
 
 285  0
         result.addSummaryTableFieldBlock(block);
 286  0
         return result;
 287  
     }
 288  
 
 289  
     protected SummaryTableFieldRow getFieldRow(String fieldKey, MessageKeyInfo messageKey) {
 290  0
         return getFieldRow(fieldKey, messageKey, null, null, null, null, false);
 291  
     }
 292  
 
 293  
     protected SummaryTableFieldRow getFieldRow(String fieldKey, MessageKeyInfo messageKey, boolean optional) {
 294  0
         return getFieldRow(fieldKey, messageKey, null, null, null, null, optional);
 295  
     }
 296  
 
 297  
     protected SummaryTableFieldRow getFieldRow(String fieldKey, MessageKeyInfo messageKey, Widget widget, Widget widget2, String parentPath, ModelWidgetBinding<?> binding, boolean optional) {
 298  0
         QueryPath path = QueryPath.concat(parentPath, fieldKey);
 299  0
         Metadata meta = modelDefinition.getMetadata(path);
 300  
 
 301  0
         FieldDescriptorReadOnly fd = new FieldDescriptorReadOnly(path.toString(), messageKey, meta);
 302  0
         if (widget != null) {
 303  0
             fd.setFieldWidget(widget);
 304  
         }
 305  0
         if (binding != null) {
 306  0
             fd.setWidgetBinding(binding);
 307  
         }
 308  0
         fd.setOptional(optional);
 309  
 
 310  0
         FieldDescriptorReadOnly fd2 = new FieldDescriptorReadOnly(path.toString(), messageKey, meta);
 311  0
         if (widget2 != null) {
 312  0
             fd2.setFieldWidget(widget2);
 313  
         }
 314  0
         if (binding != null) {
 315  0
             fd2.setWidgetBinding(binding);
 316  
         }
 317  0
         fd2.setOptional(optional);
 318  
 
 319  0
         SummaryTableFieldRow fieldRow = new SummaryTableFieldRow(fd, fd2);
 320  
 
 321  0
         return fieldRow;
 322  
     }
 323  
 
 324  
     private void setupMainView() {
 325  0
         this.addStyleName("blockLayout");
 326  0
         KSDocumentHeader header = new KSDocumentHeader();
 327  0
         header.setTitle("Course Set Management");
 328  0
         this.addWidget(header);
 329  
 
 330  0
         Anchor createCluSet = new Anchor("<h2 class=\"contentBlock-title\">Create Course Set</h2>", true);
 331  0
         createCluSet.addClickHandler(new ClickHandler() {
 332  
             @Override
 333  
             public void onClick(ClickEvent event) {
 334  0
                 getController().showView(CluSetsManagementViews.CREATE);
 335  0
             }
 336  
         });
 337  0
         this.addWidget(createCluSet);
 338  0
         this.addWidget(new KSLabel("Build a new Course set from courses, Course Sets, " +
 339  
                 "or specific criteria."));
 340  
 
 341  0
         Picker cluSetPicker = configureSearch(ToolsConstants.SEARCH_COURSE_SET);
 342  0
         cluSetPicker.addBasicSelectionCompletedCallback(new Callback<SelectedResults>() {
 343  
             @Override
 344  
             public void exec(SelectedResults result) {
 345  0
                 if (result != null && result.getReturnKey() != null && result.getReturnKey().trim().length() > 0) {
 346  0
                     selectedCluSetId = result.getReturnKey();
 347  0
                     Controller parentController = getController();
 348  0
                     parentController.showView(CluSetsManagementViews.VIEW);
 349  
                 }
 350  0
             }
 351  
         });
 352  0
         SectionTitle modifyCluSetTitle = SectionTitle.generateH2Title("View or Modify Course Sets");
 353  0
         modifyCluSetTitle.addStyleName("contentBlock-title");
 354  0
         modifyCluSetTitle.getElement().getStyle().setPaddingTop(40, Style.Unit.PX);
 355  0
         this.addWidget(modifyCluSetTitle);
 356  0
         this.addWidget(cluSetPicker);
 357  0
     }
 358  
 
 359  
     public String getSelectedCluSetId() {
 360  0
         return selectedCluSetId;
 361  
     }
 362  
 
 363  
     public void setSelectedCluSetId(String selectedCluSetId) {
 364  0
         this.selectedCluSetId = selectedCluSetId;
 365  0
     }
 366  
 
 367  
     protected void setupCreateEditClusetView() {
 368  0
         String contextName = (cluSetType != null && cluSetType.equals("kuali.cluSet.type.Program")) ?
 369  
                 "Program" : "Course";
 370  0
         VerticalSection defineCluSet = initSection(getH3Title(ToolsConstants.DEFINE_CLUSET + contextName), true);
 371  
 
 372  0
         addFields(defineCluSet,contextName);
 373  
 
 374  0
         KSLabel spacer = new KSLabel();
 375  0
         spacer.setHeight("20px");
 376  0
         this.addSection(cluSetEditor);
 377  0
         this.addWidget(spacer);
 378  0
         this.addSection(defineCluSet);
 379  0
         this.setStyleName("standard-content-padding");
 380  0
     }
 381  
 
 382  
     protected void addFields(VerticalSection defineCluSet, String contextName) {
 383  0
         addField(defineCluSet, ToolsConstants.CLU_SET_ORGANIZATION_FIELD, generateMessageInfo(ToolsConstants.ORGANIZATION), null, null);
 384  0
         addField(defineCluSet, ToolsConstants.CLU_SET_NAME_FIELD, generateMessageInfo(ToolsConstants.TITLE + contextName), null, null);
 385  0
         addField(defineCluSet, ToolsConstants.CLU_SET_DESCRIPTION_FIELD, generateMessageInfo(ToolsConstants.DESCRIPTION), new KSTextArea(), null);
 386  0
         addField(defineCluSet, ToolsConstants.CLU_SET_EFF_DATE_FIELD, generateMessageInfo(ToolsConstants.EFFECTIVE_DATE), new KSDatePicker(), null);
 387  0
         addField(defineCluSet, ToolsConstants.CLU_SET_EXP_DATE_FIELD, generateMessageInfo(ToolsConstants.EXPIRATION_DATE), new KSDatePicker(), null);
 388  0
         }
 389  
 
 390  
         protected static VerticalSection initSection(SectionTitle title, boolean withDivider) {
 391  0
         VerticalSection section = new VerticalSection(title);
 392  0
         section.addStyleName(LUUIConstants.STYLE_SECTION);
 393  0
         if (withDivider)
 394  0
             section.addStyleName(LUUIConstants.STYLE_SECTION_DIVIDER);
 395  0
         return section;
 396  
     }
 397  
 
 398  
     private String getLabel(String labelKey) {
 399  0
         return Application.getApplicationContext().getUILabel("clusetmanagement", "clusetmanagement", "draft", labelKey);
 400  
     }
 401  
 
 402  
     protected SectionTitle getH3Title(String labelKey) {
 403  0
         return SectionTitle.generateH3Title(getLabel(labelKey));
 404  
     }
 405  
 
 406  
     protected MessageKeyInfo generateMessageInfo(String labelKey) {
 407  0
         return new MessageKeyInfo("clusetmanagement", "clusetmanagement", "draft", labelKey);
 408  
     }
 409  
 
 410  
     private FieldDescriptor getFieldDescriptor(
 411  
             String fieldKey,
 412  
             MessageKeyInfo messageKey,
 413  
             Widget widget,
 414  
             String parentPath) {
 415  0
         QueryPath path = QueryPath.concat(parentPath, fieldKey);
 416  0
         Metadata meta = modelDefinition.getMetadata(path);
 417  
         FieldDescriptor fd;
 418  0
         if (widget != null) {
 419  0
             fd = new FieldDescriptor(path.toString(), messageKey, meta, widget);
 420  
         } else {
 421  0
             fd = new FieldDescriptor(path.toString(), messageKey, meta);
 422  
         }
 423  0
         return fd;
 424  
     }
 425  
 
 426  
     protected FieldDescriptor addField(Section section,
 427  
                                      String fieldKey,
 428  
                                      MessageKeyInfo messageKey,
 429  
                                      Widget widget,
 430  
                                      String parentPath) {
 431  0
         FieldDescriptor fd = getFieldDescriptor(fieldKey, messageKey, widget, parentPath);
 432  0
         section.addField(fd);
 433  0
         return fd;
 434  
     }
 435  
 
 436  
     private Picker configureSearch(String fieldKey) {
 437  0
         QueryPath path = QueryPath.concat(null, fieldKey);
 438  0
         Metadata metaData = searchDefinition.getMetadata(path);
 439  0
         Picker picker = new Picker(metaData.getInitialLookup(), metaData.getAdditionalLookups());
 440  0
         return picker;
 441  
     }
 442  
 
 443  
     public static class Picker extends KSPicker {
 444  
 
 445  
         private String name;
 446  
         private LookupMetadata initLookupMetadata;
 447  
         private List<LookupMetadata> additionalLookupMetadata;
 448  
 
 449  
         public Picker(LookupMetadata inLookupMetadata, List<LookupMetadata> additionalLookupMetadata) {
 450  0
             super(inLookupMetadata, additionalLookupMetadata);
 451  0
             this.initLookupMetadata = inLookupMetadata;
 452  0
             this.additionalLookupMetadata = additionalLookupMetadata;
 453  0
         }
 454  
 
 455  
         public String getName() {
 456  0
             return name;
 457  
         }
 458  
 
 459  
         public void setName(String name) {
 460  0
             this.name = name;
 461  0
         }
 462  
 
 463  
         public LookupMetadata getInitLookupMetadata() {
 464  0
             return initLookupMetadata;
 465  
         }
 466  
 
 467  
         public void setInitLookupMetadata(LookupMetadata initLookupMetadata) {
 468  0
             this.initLookupMetadata = initLookupMetadata;
 469  0
         }
 470  
 
 471  
         public List<LookupMetadata> getAdditionalLookupMetadata() {
 472  0
             return additionalLookupMetadata;
 473  
         }
 474  
 
 475  
         public void setAdditionalLookupMetadata(List<LookupMetadata> additionalLookupMetadata) {
 476  0
             this.additionalLookupMetadata = additionalLookupMetadata;
 477  0
         }
 478  
 
 479  
     }
 480  
 
 481  
     @Override
 482  
     public void setController(Controller controller) {
 483  0
         super.setController(controller);
 484  0
         if (cluSetEditor != null) {
 485  0
             cluSetEditor.setController(controller);
 486  
         }
 487  0
     }
 488  
 
 489  
 }