private void createDimMappingEditor() { inpKey = new InputBox(this, "inpKey"); inpKey.setWidth(300); inpDescription = new InputBox(this, "inpDescription"); inpDescription.setMultiLine(true); inpDescription.setRows(3); inpDescription.setWidth(300); lbcDimension = new ListBox(this, "lbcDimension"); lbcDimension.setChangeNotification(true); lbcDimension.addElementSelectedListener( new ElementSelectedListener() { public void elementSelected(ElementSelectedEvent event) { onDimensionSelection((String) event.getElement()); } }); for (IDimension dim : dataPool.getDimensions()) { String title = dim.getTitle() != null ? dim.getKey() + "(" + dim.getTitle() + ")" : dim.getKey(); lbcDimension.addElement(title, dim.getKey()); } chkOnUnmapped = new RadioGroup(this, "chkOnUnmapped"); chkOnUnmapped.setChangeNotification(true); chkOnUnmapped.addElement("Create", "CREATE"); chkOnUnmapped.addElement("Skip", "SKIP"); chkOnUnmapped.addElement("Assign To", "ASSIGN"); chkOnUnmapped.addElement("Fail", "FAIL"); chkOptions = new CheckBoxGroup(this, "chkOptions"); chkOptions.addElement("Autocreate Mapping", "autocreate"); new Label(this, "elmSelector").setText(""); elmSelector = null; /* * Load Initial Values */ if (dimMapping.getKey() != null) { inpKey.setText(dimMapping.getKey()); inpKey.setEnabled(false); } inpDescription.setText(dimMapping.getDescription() != null ? dimMapping.getDescription() : ""); lbcDimension.setSelectedKey( dimMapping.getDimensionKey() != null ? dimMapping.getDimensionKey() : ""); chkOnUnmapped.setSelectedKey(dimMapping.getOnUnmapped().name()); if (dimMapping.isAutoCreateMapping()) { chkOptions.setSelectedKey("autocreate"); } if (elmSelector != null && dimMapping.getUnmappedPath() != null && dimMapping.getUnmappedPath().length() != 0) { IDimension dimension = elmSelector.getDimension(); try { IDimensionElement elm = dimension.parsePath(dimMapping.getUnmappedPath()); elmSelector.setDimensionElement(elm); } catch (Exception e) { errInfo.showError("Error restoring unmapped value - element removed?: " + e); } } inpTestString = new InputBox(this, "inpTestString"); inpTestString.setWidth(600); Button btTest = new Button(this, "btTest"); btTest.setTitle("Test"); btTest.addSelectionListener( new SelectionListener() { /* (non-Javadoc) * @see de.jwic.events.SelectionListener#objectSelected(de.jwic.events.SelectionEvent) */ public void objectSelected(SelectionEvent event) { applyTest(); } }); }
protected void onSaveAndClose() { String key = inpKey.getText().trim(); if (key.length() == 0) { errInfo.showError("You must specify a key."); return; } String dimKey = lbcDimension.getSelectedKey(); if (dimKey == null || dimKey.length() == 0) { errInfo.showError("You must select a dimension."); return; } DimMappingDef.Action onUnmapped = DimMappingDef.Action.valueOf(chkOnUnmapped.getSelectedKey()); String unmappedElement = elmSelector.getDimensionElement() != null ? elmSelector.getDimensionElement().getPath() : null; if (onUnmapped == DimMappingDef.Action.ASSIGN) { if (unmappedElement == null) { errInfo.showError("An Unmapped Element must be specified."); return; } else if (!elmSelector.getDimensionElement().isLeaf()) { errInfo.showError("An Unmapped Element must be specified that is NOT a leaf!"); return; } } // now check the dimension mapping table List<DimMappingElementDef> mappingList = mapEditor.getMappingList(); for (DimMappingElementDef me : mappingList) { if (me.getDimensionKey() == null || !me.getDimensionKey().equals(dimKey)) { errInfo.showError( "The mapping table contains elements for other dimensions then the selected one."); return; } me.setDimMapKey(key); } dimMapping.setKey(key); dimMapping.setDimensionKey(dimKey); dimMapping.setDescription(inpDescription.getText()); dimMapping.setOnUnmapped(onUnmapped); dimMapping.setUnmappedPath(unmappedElement); dimMapping.setAutoCreateMapping(chkOptions.isKeySelected("autocreate")); ServerContext context = ETLgineServer.getInstance().getServerContext(); String syncTableConnectionName = context.getProperty(dpManagerKey + ".datapool.syncTables.connection"); try { Connection connection = JDBCUtil.openConnection(context, syncTableConnectionName); try { connection.setAutoCommit(false); DimMappingDefDAO dao = new DimMappingDefDAO(connection); if (isNew) { dao.insert(dimMapping); } else { dao.update(dimMapping); } // insert dimMappings DimMappingElementDefDAO daoME = new DimMappingElementDefDAO(connection); daoME.deleteByDimMapKey(key); daoME.setOrderIndex(0); for (DimMappingElementDef me : mappingList) { daoME.insert(me); } connection.commit(); connection.setAutoCommit(true); close(); } finally { if (!connection.getAutoCommit()) { connection.rollback(); } connection.close(); } } catch (Exception e) { log.error("Error saving to sync table.", e); errInfo.showError(e); } }