private void populateMappingComboAndFamilyStuff() { String tableName = ""; if (!Const.isEmpty(m_existingTableNamesCombo.getText().trim())) { tableName = m_existingTableNamesCombo.getText().trim(); if (tableName.indexOf('@') > 0) { tableName = tableName.substring(0, tableName.indexOf('@')); } } // defaults if we fail to connect, table doesn't exist etc.. m_familyCI.setComboValues(new String[] {""}); m_existingMappingNamesCombo.removeAll(); if (m_admin != null && !Const.isEmpty(tableName)) { try { // first get the existing mapping names (if any) List<String> mappingNames = m_admin.getMappingNames(tableName); for (String m : mappingNames) { m_existingMappingNamesCombo.add(m); } // now get family information for this table Configuration conf = m_admin.getConnection(); HBaseAdmin admin = new HBaseAdmin(conf); if (admin.tableExists(tableName)) { HTableDescriptor descriptor = admin.getTableDescriptor(Bytes.toBytes(tableName)); Collection<HColumnDescriptor> families = descriptor.getFamilies(); String[] familyNames = new String[families.size()]; int i = 0; for (HColumnDescriptor d : families) { familyNames[i++] = d.getNameAsString(); } m_familyCI.setComboValues(familyNames); } else { m_familyCI.setComboValues(new String[] {""}); } m_familiesInvalidated = false; return; } catch (Exception e) { // TODO popup error dialog e.printStackTrace(); } } }
public MappingEditor( Shell shell, Composite parent, ConfigurationProducer configProducer, FieldProducer fieldProducer, int tableViewStyle, boolean allowTableCreate, PropsUI props, TransMeta transMeta) { // super(parent, SWT.NO_BACKGROUND | SWT.NO_FOCUS | SWT.NO_MERGE_PAINTS); super(parent, SWT.NONE); m_shell = shell; m_parent = parent; m_transMeta = transMeta; boolean showConnectWidgets = false; m_configProducer = configProducer; if (m_configProducer != null) { m_currentConfiguration = m_configProducer.getCurrentConfiguration(); } else { showConnectWidgets = true; m_configProducer = this; } m_incomingFieldsProducer = fieldProducer; m_allowTableCreate = allowTableCreate; int middle = props.getMiddlePct(); int margin = Const.MARGIN; FormLayout controlLayout = new FormLayout(); /*controlLayout.marginLeft = 0; controlLayout.marginRight = 0; controlLayout.marginTop = 0; controlLayout.marginBottom = 0; */ controlLayout.marginWidth = 3; controlLayout.marginHeight = 3; setLayout(controlLayout); props.setLook(this); if (showConnectWidgets) { Label zooHostLab = new Label(this, SWT.RIGHT); zooHostLab.setText("Zookeeper host"); props.setLook(zooHostLab); FormData fd = new FormData(); fd.left = new FormAttachment(0, 0); fd.top = new FormAttachment(0, margin); fd.right = new FormAttachment(middle, -margin); zooHostLab.setLayoutData(fd); m_zookeeperHostText = new TextVar(transMeta, this, SWT.SINGLE | SWT.LEFT | SWT.BORDER); props.setLook(m_zookeeperHostText); fd = new FormData(); fd.left = new FormAttachment(middle, 0); fd.top = new FormAttachment(0, margin); fd.right = new FormAttachment(100, 0); m_zookeeperHostText.setLayoutData(fd); Label zooPortLab = new Label(this, SWT.RIGHT); zooPortLab.setText("Zookeeper port"); props.setLook(zooPortLab); fd = new FormData(); fd.left = new FormAttachment(0, 0); fd.top = new FormAttachment(m_zookeeperHostText, margin); fd.right = new FormAttachment(middle, -margin); zooPortLab.setLayoutData(fd); m_zookeeperPortText = new TextVar(transMeta, this, SWT.SINGLE | SWT.LEFT | SWT.BORDER); props.setLook(m_zookeeperPortText); fd = new FormData(); fd.left = new FormAttachment(middle, 0); fd.top = new FormAttachment(m_zookeeperHostText, margin); fd.right = new FormAttachment(100, 0); m_zookeeperPortText.setLayoutData(fd); m_currentConfiguration = m_configProducer.getCurrentConfiguration(); } // table names Label tableNameLab = new Label(this, SWT.RIGHT); tableNameLab.setText(Messages.getString("MappingDialog.TableName.Label")); props.setLook(tableNameLab); FormData fd = new FormData(); fd.left = new FormAttachment(0, 0); if (showConnectWidgets) { fd.top = new FormAttachment(m_zookeeperPortText, margin); } else { fd.top = new FormAttachment(0, margin); } fd.right = new FormAttachment(middle, -margin); tableNameLab.setLayoutData(fd); /* m_existingTableNamesBut = new Button(this, SWT.PUSH | SWT.CENTER); props.setLook(m_existingTableNamesBut); m_existingTableNamesBut.setText("Get existing table names"); fd = new FormData(); fd.right = new FormAttachment(100, 0); fd.top = new FormAttachment(0, 0); m_existingTableNamesBut.setLayoutData(fd); */ m_existingTableNamesCombo = new CCombo(this, SWT.BORDER); props.setLook(m_existingTableNamesCombo); fd = new FormData(); fd.left = new FormAttachment(middle, 0); if (showConnectWidgets) { fd.top = new FormAttachment(m_zookeeperPortText, margin); } else { fd.top = new FormAttachment(0, margin); } fd.right = new FormAttachment(100, 0); m_existingTableNamesCombo.setLayoutData(fd); // allow or disallow table creation by enabling/disabling the ability // to type into this combo m_existingTableNamesCombo.setEditable(m_allowTableCreate); // mapping names Label mappingNameLab = new Label(this, SWT.RIGHT); mappingNameLab.setText(Messages.getString("MappingDialog.MappingName.Label")); props.setLook(tableNameLab); fd = new FormData(); fd.left = new FormAttachment(0, 0); fd.top = new FormAttachment(m_existingTableNamesCombo, margin); fd.right = new FormAttachment(middle, -margin); mappingNameLab.setLayoutData(fd); /*m_existingMappingNamesBut = new Button(this, SWT.PUSH | SWT.CENTER); props.setLook(m_existingMappingNamesBut); m_existingMappingNamesBut.setText("Get mapping names"); fd = new FormData(); fd.right = new FormAttachment(100, 0); fd.top = new FormAttachment(m_existingTableNamesCombo, 0); m_existingMappingNamesBut.setLayoutData(fd); */ m_existingMappingNamesCombo = new CCombo(this, SWT.BORDER); props.setLook(m_existingMappingNamesCombo); fd = new FormData(); fd.left = new FormAttachment(middle, 0); fd.top = new FormAttachment(m_existingTableNamesCombo, margin); // fd.right = new FormAttachment(m_existingMappingNamesBut, -margin); fd.right = new FormAttachment(100, 0); m_existingMappingNamesCombo.setLayoutData(fd); m_existingTableNamesCombo.addSelectionListener( new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { m_familiesInvalidated = true; populateMappingComboAndFamilyStuff(); } public void widgetDefaultSelected(SelectionEvent e) { m_familiesInvalidated = true; populateMappingComboAndFamilyStuff(); } }); m_existingTableNamesCombo.addKeyListener( new KeyAdapter() { public void keyPressed(KeyEvent e) { m_familiesInvalidated = true; } }); m_existingTableNamesCombo.addFocusListener( new FocusListener() { public void focusGained(FocusEvent e) { populateTableCombo(false); } public void focusLost(FocusEvent e) { m_familiesInvalidated = true; populateMappingComboAndFamilyStuff(); } }); m_existingMappingNamesCombo.addSelectionListener( new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { loadTableViewFromMapping(); } public void widgetDefaultSelected(SelectionEvent e) { loadTableViewFromMapping(); } }); // fields ColumnInfo[] colinf = new ColumnInfo[] { new ColumnInfo( Messages.getString("HBaseInputDialog.Fields.FIELD_ALIAS"), ColumnInfo.COLUMN_TYPE_TEXT, false), new ColumnInfo( Messages.getString("HBaseInputDialog.Fields.FIELD_KEY"), ColumnInfo.COLUMN_TYPE_CCOMBO, true), new ColumnInfo( Messages.getString("HBaseInputDialog.Fields.FIELD_FAMILY"), ColumnInfo.COLUMN_TYPE_CCOMBO, true), new ColumnInfo( Messages.getString("HBaseInputDialog.Fields.FIELD_NAME"), ColumnInfo.COLUMN_TYPE_TEXT, false), new ColumnInfo( Messages.getString("HBaseInputDialog.Fields.FIELD_TYPE"), ColumnInfo.COLUMN_TYPE_CCOMBO, true), new ColumnInfo( Messages.getString("HBaseInputDialog.Fields.FIELD_INDEXED"), ColumnInfo.COLUMN_TYPE_TEXT, false), }; m_keyCI = colinf[1]; m_keyCI.setComboValues(new String[] {"N", "Y"}); m_familyCI = colinf[2]; m_familyCI.setComboValues(new String[] {""}); m_typeCI = colinf[4]; // default types for non-key fields m_typeCI.setComboValues( new String[] { "String", "Integer", "Long", "Float", "Double", "Date", "BigNumber", "Serializable", "Binary" }); m_keyCI.setComboValuesSelectionListener( new ComboValuesSelectionListener() { public String[] getComboValues(TableItem tableItem, int rowNr, int colNr) { tableItem.setText(5, ""); return m_keyCI.getComboValues(); } }); m_typeCI.setComboValuesSelectionListener( new ComboValuesSelectionListener() { public String[] getComboValues(TableItem tableItem, int rowNr, int colNr) { String[] comboValues = null; String keyOrNot = tableItem.getText(2); if (Const.isEmpty(keyOrNot) || keyOrNot.equalsIgnoreCase("N")) { comboValues = new String[] { "String", "Integer", "Long", "Float", "Double", "Boolean", "Date", "BigNumber", "Serializable", "Binary" }; } else { comboValues = new String[] { "String", "Integer", "UnsignedInteger", "Long", "UnsignedLong", "Date", "UnsignedDate", "Binary" }; } return comboValues; } }); m_saveBut = new Button(this, SWT.PUSH | SWT.CENTER); props.setLook(m_saveBut); m_saveBut.setText(Messages.getString("MappingDialog.SaveMapping")); fd = new FormData(); fd.left = new FormAttachment(0, margin); fd.bottom = new FormAttachment(100, -margin * 2); m_saveBut.setLayoutData(fd); m_saveBut.addSelectionListener( new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { saveMapping(); } }); m_deleteBut = new Button(this, SWT.PUSH | SWT.CENTER); props.setLook(m_deleteBut); m_deleteBut.setText(Messages.getString("MappingDialog.DeleteMapping")); fd = new FormData(); fd.left = new FormAttachment(m_saveBut, margin); fd.bottom = new FormAttachment(100, -margin * 2); m_deleteBut.setLayoutData(fd); m_deleteBut.addSelectionListener( new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { deleteMapping(); } }); if (m_allowTableCreate) { m_getFieldsBut = new Button(this, SWT.PUSH | SWT.CENTER); props.setLook(m_getFieldsBut); m_getFieldsBut.setText(Messages.getString("MappingDialog.GetIncomingFields")); fd = new FormData(); // fd.left = new FormAttachment(0, margin); fd.right = new FormAttachment(100, 0); fd.bottom = new FormAttachment(100, -margin * 2); m_getFieldsBut.setLayoutData(fd); m_getFieldsBut.addSelectionListener( new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { populateTableWithIncomingFields(); } }); } else { m_keyValueTupleBut = new Button(this, SWT.PUSH | SWT.CENTER); props.setLook(m_keyValueTupleBut); m_keyValueTupleBut.setText(Messages.getString("MappingDialog.KeyValueTemplate")); m_keyValueTupleBut.setToolTipText( Messages.getString("MappingDialog.KeyValueTemplate.TipText")); fd = new FormData(); // fd.left = new FormAttachment(0, margin); fd.right = new FormAttachment(100, 0); fd.bottom = new FormAttachment(100, -margin * 2); m_keyValueTupleBut.setLayoutData(fd); m_keyValueTupleBut.addSelectionListener( new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { populateTableWithTupleTemplate(); } }); /* colinf[0].setReadOnly(true); colinf[1].setReadOnly(true); colinf[2].setReadOnly(true); colinf[4].setReadOnly(true); */ } m_fieldsView = new TableView(transMeta, this, tableViewStyle, colinf, 1, null, props); fd = new FormData(); fd.top = new FormAttachment(m_existingMappingNamesCombo, margin * 2); fd.bottom = new FormAttachment(m_saveBut, -margin * 2); fd.left = new FormAttachment(0, 0); fd.right = new FormAttachment(100, 0); m_fieldsView.setLayoutData(fd); // -- // layout(); // pack(); }