Esempio n. 1
0
  private void getInfo(UpdateMeta inf) {
    // Table ktable = wKey.table;
    int nrkeys = wKey.nrNonEmpty();
    int nrfields = wReturn.nrNonEmpty();

    inf.allocate(nrkeys, nrfields);

    inf.setCommitSize(Const.toInt(wCommit.getText(), 0));

    log.logDebug(
        toString(),
        Messages.getString("UpdateDialog.Log.FoundKeys", nrkeys + "")); // $NON-NLS-1$ //$NON-NLS-2$
    for (int i = 0; i < nrkeys; i++) {
      TableItem item = wKey.getNonEmpty(i);
      inf.getKeyLookup()[i] = item.getText(1);
      inf.getKeyCondition()[i] = item.getText(2);
      inf.getKeyStream()[i] = item.getText(3);
      inf.getKeyStream2()[i] = item.getText(4);
    }

    // Table ftable = wReturn.table;

    log.logDebug(
        toString(),
        Messages.getString(
            "UpdateDialog.Log.FoundFields", nrfields + "")); // $NON-NLS-1$ //$NON-NLS-2$
    for (int i = 0; i < nrfields; i++) {
      TableItem item = wReturn.getNonEmpty(i);
      inf.getUpdateLookup()[i] = item.getText(1);
      inf.getUpdateStream()[i] = item.getText(2);
    }

    inf.setSchemaName(wSchema.getText());
    inf.setTableName(wTable.getText());
    inf.setDatabaseMeta(transMeta.findDatabase(wConnection.getText()));

    inf.setErrorIgnored(wErrorIgnored.getSelection());
    inf.setIgnoreFlagField(wIgnoreFlagField.getText());

    stepname = wStepname.getText(); // return value
  }
Esempio n. 2
0
  /** Copy information from the meta-data input to the dialog fields. */
  public void getData() {
    int i;
    log.logDebug(toString(), Messages.getString("UpdateDialog.Log.GettingKeyInfo")); // $NON-NLS-1$

    wCommit.setText("" + input.getCommitSize()); // $NON-NLS-1$

    wErrorIgnored.setSelection(input.isErrorIgnored());
    if (input.getIgnoreFlagField() != null) wIgnoreFlagField.setText(input.getIgnoreFlagField());

    if (input.getKeyStream() != null)
      for (i = 0; i < input.getKeyStream().length; i++) {
        TableItem item = wKey.table.getItem(i);
        if (input.getKeyLookup()[i] != null) item.setText(1, input.getKeyLookup()[i]);
        if (input.getKeyCondition()[i] != null) item.setText(2, input.getKeyCondition()[i]);
        if (input.getKeyStream()[i] != null) item.setText(3, input.getKeyStream()[i]);
        if (input.getKeyStream2()[i] != null) item.setText(4, input.getKeyStream2()[i]);
      }

    if (input.getUpdateLookup() != null)
      for (i = 0; i < input.getUpdateLookup().length; i++) {
        TableItem item = wReturn.table.getItem(i);
        if (input.getUpdateLookup()[i] != null) item.setText(1, input.getUpdateLookup()[i]);
        if (input.getUpdateStream()[i] != null) item.setText(2, input.getUpdateStream()[i]);
      }

    if (input.getSchemaName() != null) wSchema.setText(input.getSchemaName());
    if (input.getTableName() != null) wTable.setText(input.getTableName());
    if (input.getDatabaseMeta() != null) wConnection.setText(input.getDatabaseMeta().getName());
    else if (transMeta.nrDatabases() == 1) {
      wConnection.setText(transMeta.getDatabase(0).getName());
    }

    wStepname.selectAll();
    wKey.setRowNums();
    wKey.optWidth(true);
    wReturn.setRowNums();
    wReturn.optWidth(true);

    setFlags();
  }
  /** Copy information from the input buffer to the dialog fields. */
  private void getData() {
    int i, c;

    for (i = 0; i < buffer.size(); i++) {
      Row row = (Row) buffer.get(i);

      for (c = 0; c < row.size(); c++) {
        Value v = row.getValue(c);
        String show;
        if (v.isNumeric()) show = v.toString(true);
        else show = v.toString(false);
        wFields.table.getItem(i).setText(c + 1, show);
      }
    }
    wFields.optWidth(true);
  }
Esempio n. 4
0
  public String open() {
    Shell parent = getParent();
    Display display = parent.getDisplay();

    shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.MAX | SWT.MIN);
    props.setLook(shell);
    setShellImage(shell, input);

    ModifyListener lsMod =
        new ModifyListener() {
          public void modifyText(ModifyEvent e) {
            input.setChanged();
          }
        };
    changed = input.hasChanged();

    FormLayout formLayout = new FormLayout();
    formLayout.marginWidth = Const.FORM_MARGIN;
    formLayout.marginHeight = Const.FORM_MARGIN;

    shell.setLayout(formLayout);
    shell.setText(Messages.getString("UpdateDialog.Shell.Title")); // $NON-NLS-1$

    int middle = props.getMiddlePct();
    int margin = Const.MARGIN;

    // Stepname line
    wlStepname = new Label(shell, SWT.RIGHT);
    wlStepname.setText(Messages.getString("UpdateDialog.Stepname.Label")); // $NON-NLS-1$
    props.setLook(wlStepname);
    fdlStepname = new FormData();
    fdlStepname.left = new FormAttachment(0, 0);
    fdlStepname.right = new FormAttachment(middle, -margin);
    fdlStepname.top = new FormAttachment(0, margin);
    wlStepname.setLayoutData(fdlStepname);
    wStepname = new Text(shell, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
    wStepname.setText(stepname);
    props.setLook(wStepname);
    wStepname.addModifyListener(lsMod);
    fdStepname = new FormData();
    fdStepname.left = new FormAttachment(middle, 0);
    fdStepname.top = new FormAttachment(0, margin);
    fdStepname.right = new FormAttachment(100, 0);
    wStepname.setLayoutData(fdStepname);

    // Connection line
    wConnection = addConnectionLine(shell, wStepname, middle, margin);
    if (input.getDatabaseMeta() == null && transMeta.nrDatabases() == 1) wConnection.select(0);
    wConnection.addModifyListener(lsMod);

    // Schema line...
    wlSchema = new Label(shell, SWT.RIGHT);
    wlSchema.setText(Messages.getString("UpdateDialog.TargetSchema.Label")); // $NON-NLS-1$
    props.setLook(wlSchema);
    fdlSchema = new FormData();
    fdlSchema.left = new FormAttachment(0, 0);
    fdlSchema.right = new FormAttachment(middle, -margin);
    fdlSchema.top = new FormAttachment(wConnection, margin * 2);
    wlSchema.setLayoutData(fdlSchema);

    wSchema = new Text(shell, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
    props.setLook(wSchema);
    wSchema.addModifyListener(lsMod);
    fdSchema = new FormData();
    fdSchema.left = new FormAttachment(middle, 0);
    fdSchema.top = new FormAttachment(wConnection, margin * 2);
    fdSchema.right = new FormAttachment(100, 0);
    wSchema.setLayoutData(fdSchema);

    // Table line...
    wlTable = new Label(shell, SWT.RIGHT);
    wlTable.setText(Messages.getString("UpdateDialog.TargetTable.Label")); // $NON-NLS-1$
    props.setLook(wlTable);
    fdlTable = new FormData();
    fdlTable.left = new FormAttachment(0, 0);
    fdlTable.right = new FormAttachment(middle, -margin);
    fdlTable.top = new FormAttachment(wSchema, margin);
    wlTable.setLayoutData(fdlTable);

    wbTable = new Button(shell, SWT.PUSH | SWT.CENTER);
    props.setLook(wbTable);
    wbTable.setText(Messages.getString("UpdateDialog.Browse.Button")); // $NON-NLS-1$
    fdbTable = new FormData();
    fdbTable.right = new FormAttachment(100, 0);
    fdbTable.top = new FormAttachment(wSchema, margin);
    wbTable.setLayoutData(fdbTable);

    wTable = new Text(shell, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
    props.setLook(wTable);
    wTable.addModifyListener(lsMod);
    fdTable = new FormData();
    fdTable.left = new FormAttachment(middle, 0);
    fdTable.top = new FormAttachment(wSchema, margin);
    fdTable.right = new FormAttachment(wbTable, -margin);
    wTable.setLayoutData(fdTable);

    // Commit line
    wlCommit = new Label(shell, SWT.RIGHT);
    wlCommit.setText(Messages.getString("UpdateDialog..Commit.Label")); // $NON-NLS-1$
    props.setLook(wlCommit);
    fdlCommit = new FormData();
    fdlCommit.left = new FormAttachment(0, 0);
    fdlCommit.top = new FormAttachment(wTable, margin);
    fdlCommit.right = new FormAttachment(middle, -margin);
    wlCommit.setLayoutData(fdlCommit);
    wCommit = new Text(shell, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
    props.setLook(wCommit);
    wCommit.addModifyListener(lsMod);
    fdCommit = new FormData();
    fdCommit.left = new FormAttachment(middle, 0);
    fdCommit.top = new FormAttachment(wTable, margin);
    fdCommit.right = new FormAttachment(100, 0);
    wCommit.setLayoutData(fdCommit);

    wlErrorIgnored = new Label(shell, SWT.RIGHT);
    wlErrorIgnored.setText(Messages.getString("UpdateDialog.ErrorIgnored.Label")); // $NON-NLS-1$
    props.setLook(wlErrorIgnored);
    fdlErrorIgnored = new FormData();
    fdlErrorIgnored.left = new FormAttachment(0, 0);
    fdlErrorIgnored.top = new FormAttachment(wCommit, margin);
    fdlErrorIgnored.right = new FormAttachment(middle, -margin);
    wlErrorIgnored.setLayoutData(fdlErrorIgnored);

    wErrorIgnored = new Button(shell, SWT.CHECK);
    props.setLook(wErrorIgnored);
    wErrorIgnored.setToolTipText(
        Messages.getString("UpdateDialog.ErrorIgnored.ToolTip")); // $NON-NLS-1$
    fdErrorIgnored = new FormData();
    fdErrorIgnored.left = new FormAttachment(middle, 0);
    fdErrorIgnored.top = new FormAttachment(wCommit, margin);
    wErrorIgnored.setLayoutData(fdErrorIgnored);
    wErrorIgnored.addSelectionListener(
        new SelectionAdapter() {
          public void widgetSelected(SelectionEvent e) {
            input.setChanged();
            setFlags();
          }
        });

    wlIgnoreFlagField = new Label(shell, SWT.LEFT);
    wlIgnoreFlagField.setText(Messages.getString("UpdateDialog.FlagField.Label")); // $NON-NLS-1$
    props.setLook(wlIgnoreFlagField);
    fdlIgnoreFlagField = new FormData();
    fdlIgnoreFlagField.left = new FormAttachment(wErrorIgnored, margin);
    fdlIgnoreFlagField.top = new FormAttachment(wCommit, margin);
    wlIgnoreFlagField.setLayoutData(fdlIgnoreFlagField);
    wIgnoreFlagField = new Text(shell, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
    props.setLook(wIgnoreFlagField);
    wIgnoreFlagField.addModifyListener(lsMod);
    fdIgnoreFlagField = new FormData();
    fdIgnoreFlagField.left = new FormAttachment(wlIgnoreFlagField, margin);
    fdIgnoreFlagField.top = new FormAttachment(wCommit, margin);
    fdIgnoreFlagField.right = new FormAttachment(100, 0);
    wIgnoreFlagField.setLayoutData(fdIgnoreFlagField);

    wlKey = new Label(shell, SWT.NONE);
    wlKey.setText(Messages.getString("UpdateDialog.Key.Label")); // $NON-NLS-1$
    props.setLook(wlKey);
    fdlKey = new FormData();
    fdlKey.left = new FormAttachment(0, 0);
    fdlKey.top = new FormAttachment(wIgnoreFlagField, margin);
    wlKey.setLayoutData(fdlKey);

    int nrKeyCols = 4;
    int nrKeyRows = (input.getKeyStream() != null ? input.getKeyStream().length : 1);

    ColumnInfo[] ciKey = new ColumnInfo[nrKeyCols];
    ciKey[0] =
        new ColumnInfo(
            Messages.getString("UpdateDialog.ColumnInfo.TableField"),
            ColumnInfo.COLUMN_TYPE_TEXT,
            false); //$NON-NLS-1$
    ciKey[1] =
        new ColumnInfo(
            Messages.getString("UpdateDialog.ColumnInfo.Comparator"),
            ColumnInfo.COLUMN_TYPE_CCOMBO,
            new String[] {
              "=", "<>", "<", "<=", ">", ">=", "LIKE", "BETWEEN", "IS NULL", "IS NOT NULL"
            }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
                // //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ //$NON-NLS-11$
    ciKey[2] =
        new ColumnInfo(
            Messages.getString("UpdateDialog.ColumnInfo.StreamField1"),
            ColumnInfo.COLUMN_TYPE_TEXT,
            false); //$NON-NLS-1$
    ciKey[3] =
        new ColumnInfo(
            Messages.getString("UpdateDialog.ColumnInfo.StreamField2"),
            ColumnInfo.COLUMN_TYPE_TEXT,
            false); //$NON-NLS-1$

    wKey =
        new TableView(
            shell,
            SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL,
            ciKey,
            nrKeyRows,
            lsMod,
            props);

    wGet = new Button(shell, SWT.PUSH);
    wGet.setText(Messages.getString("UpdateDialog.GetFields.Button")); // $NON-NLS-1$
    fdGet = new FormData();
    fdGet.right = new FormAttachment(100, 0);
    fdGet.top = new FormAttachment(wlKey, margin);
    wGet.setLayoutData(fdGet);

    fdKey = new FormData();
    fdKey.left = new FormAttachment(0, 0);
    fdKey.top = new FormAttachment(wlKey, margin);
    fdKey.right = new FormAttachment(wGet, -margin);
    fdKey.bottom = new FormAttachment(wlKey, 190);
    wKey.setLayoutData(fdKey);

    // THE BUTTONS
    wOK = new Button(shell, SWT.PUSH);
    wOK.setText(Messages.getString("System.Button.OK")); // $NON-NLS-1$
    wSQL = new Button(shell, SWT.PUSH);
    wSQL.setText(Messages.getString("UpdateDialog.SQL.Button")); // $NON-NLS-1$
    wCancel = new Button(shell, SWT.PUSH);
    wCancel.setText(Messages.getString("System.Button.Cancel")); // $NON-NLS-1$

    setButtonPositions(new Button[] {wOK, wSQL, wCancel}, margin, null);

    // THE UPDATE/INSERT TABLE
    wlReturn = new Label(shell, SWT.NONE);
    wlReturn.setText(Messages.getString("UpdateDialog.Return.Label")); // $NON-NLS-1$
    props.setLook(wlReturn);
    fdlReturn = new FormData();
    fdlReturn.left = new FormAttachment(0, 0);
    fdlReturn.top = new FormAttachment(wKey, margin);
    wlReturn.setLayoutData(fdlReturn);

    int UpInsCols = 2;
    int UpInsRows = (input.getUpdateLookup() != null ? input.getUpdateLookup().length : 1);

    ColumnInfo[] ciReturn = new ColumnInfo[UpInsCols];
    ciReturn[0] =
        new ColumnInfo(
            Messages.getString("UpdateDialog.ColumnInfo.TableField"),
            ColumnInfo.COLUMN_TYPE_TEXT,
            false); //$NON-NLS-1$
    ciReturn[1] =
        new ColumnInfo(
            Messages.getString("UpdateDialog.ColumnInfo.StreamField"),
            ColumnInfo.COLUMN_TYPE_TEXT,
            false); //$NON-NLS-1$

    wReturn =
        new TableView(
            shell,
            SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL,
            ciReturn,
            UpInsRows,
            lsMod,
            props);

    wGetLU = new Button(shell, SWT.PUSH);
    wGetLU.setText(Messages.getString("UpdateDialog.GetAndUpdateFields")); // $NON-NLS-1$
    fdGetLU = new FormData();
    fdGetLU.top = new FormAttachment(wlReturn, margin);
    fdGetLU.right = new FormAttachment(100, 0);
    wGetLU.setLayoutData(fdGetLU);

    fdReturn = new FormData();
    fdReturn.left = new FormAttachment(0, 0);
    fdReturn.top = new FormAttachment(wlReturn, margin);
    fdReturn.right = new FormAttachment(wGetLU, -margin);
    fdReturn.bottom = new FormAttachment(wOK, -2 * margin);
    wReturn.setLayoutData(fdReturn);

    // Add listeners
    lsOK =
        new Listener() {
          public void handleEvent(Event e) {
            ok();
          }
        };
    lsGet =
        new Listener() {
          public void handleEvent(Event e) {
            get();
          }
        };
    lsGetLU =
        new Listener() {
          public void handleEvent(Event e) {
            getUpdate();
          }
        };
    lsSQL =
        new Listener() {
          public void handleEvent(Event e) {
            create();
          }
        };
    lsCancel =
        new Listener() {
          public void handleEvent(Event e) {
            cancel();
          }
        };

    wOK.addListener(SWT.Selection, lsOK);
    wGet.addListener(SWT.Selection, lsGet);
    wGetLU.addListener(SWT.Selection, lsGetLU);
    wSQL.addListener(SWT.Selection, lsSQL);
    wCancel.addListener(SWT.Selection, lsCancel);

    lsDef =
        new SelectionAdapter() {
          public void widgetDefaultSelected(SelectionEvent e) {
            ok();
          }
        };

    wStepname.addSelectionListener(lsDef);
    wSchema.addSelectionListener(lsDef);
    wTable.addSelectionListener(lsDef);
    wCommit.addSelectionListener(lsDef);
    wIgnoreFlagField.addSelectionListener(lsDef);

    // Detect X or ALT-F4 or something that kills this window...
    shell.addShellListener(
        new ShellAdapter() {
          public void shellClosed(ShellEvent e) {
            cancel();
          }
        });

    wbTable.addSelectionListener(
        new SelectionAdapter() {
          public void widgetSelected(SelectionEvent e) {
            getTableName();
          }
        });

    // Set the shell size, based upon previous time...
    setSize();

    getData();
    input.setChanged(changed);

    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) display.sleep();
    }
    return stepname;
  }
  public Row open() {
    Shell parent = getParent();
    Display display = parent.getDisplay();

    shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.MAX);
    props.setLook(shell);

    FormLayout formLayout = new FormLayout();
    formLayout.marginWidth = Const.FORM_MARGIN;
    formLayout.marginHeight = Const.FORM_MARGIN;

    if (title == null) title = Messages.getString("SelectRowDialog.Title");

    shell.setLayout(formLayout);
    shell.setText(title);

    int margin = Const.MARGIN;

    if (buffer == null || buffer.size() == 0) return null;

    Row row = (Row) buffer.get(0);

    int FieldsRows = buffer.size();

    ColumnInfo[] colinf = new ColumnInfo[row.size()];
    for (int i = 0; i < row.size(); i++) {
      Value v = row.getValue(i);
      colinf[i] = new ColumnInfo(v.getName(), ColumnInfo.COLUMN_TYPE_TEXT, false);
      colinf[i].setToolTip(v.toStringMeta());
      colinf[i].setReadOnly(true);
    }

    wFields =
        new TableView(
            shell, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI, colinf, FieldsRows, null, props);

    wOK = new Button(shell, SWT.PUSH);
    wOK.setText(Messages.getString("System.Button.OK"));
    wCancel = new Button(shell, SWT.PUSH);
    wCancel.setText(Messages.getString("System.Button.Cancel"));

    BaseStepDialog.positionBottomButtons(shell, new Button[] {wOK, wCancel}, margin, null);

    fdFields = new FormData();
    fdFields.left = new FormAttachment(0, 0);
    fdFields.top = new FormAttachment(wlFields, margin);
    fdFields.right = new FormAttachment(100, 0);
    fdFields.bottom = new FormAttachment(wOK, -margin);
    wFields.setLayoutData(fdFields);

    // Add listeners
    lsOK =
        new Listener() {
          public void handleEvent(Event e) {
            ok();
          }
        };
    wOK.addListener(SWT.Selection, lsOK);

    lsCancel =
        new Listener() {
          public void handleEvent(Event e) {
            close();
          }
        };
    wCancel.addListener(SWT.Selection, lsCancel);

    // Detect X or ALT-F4 or something that kills this window...
    shell.addShellListener(
        new ShellAdapter() {
          public void shellClosed(ShellEvent e) {
            close();
          }
        });

    getData();

    BaseStepDialog.setSize(shell);

    shell.open();

    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) display.sleep();
    }
    return selection;
  }
 private void ok() {
   int idx[] = wFields.getSelectionIndices();
   if (idx.length == 0) return;
   selection = (Row) buffer.get(idx[0]);
   dispose();
 }