Search in sources :

Example 1 with TextFileInputFieldInterface

use of org.pentaho.di.core.gui.TextFileInputFieldInterface in project pentaho-kettle by pentaho.

the class TextFileInputDialog method getFields.

private Vector<TextFileInputFieldInterface> getFields(TextFileInputMeta info, List<String> rows) {
    Vector<TextFileInputFieldInterface> fields = new Vector<TextFileInputFieldInterface>();
    int maxsize = 0;
    for (String row : rows) {
        int len = row.length();
        if (len > maxsize) {
            maxsize = len;
        }
    }
    int prevEnd = 0;
    int dummynr = 1;
    for (int i = 0; i < info.getInputFields().length; i++) {
        TextFileInputField f = info.getInputFields()[i];
        // See if positions are skipped, if this is the case, add dummy fields...
        if (f.getPosition() != prevEnd) {
            // gap
            TextFileInputField field = new TextFileInputField("Dummy" + dummynr, prevEnd, f.getPosition() - prevEnd);
            // don't include in result by default.
            field.setIgnored(true);
            fields.add(field);
            dummynr++;
        }
        TextFileInputField field = new TextFileInputField(f.getName(), f.getPosition(), f.getLength());
        field.setType(f.getType());
        field.setIgnored(false);
        field.setFormat(f.getFormat());
        field.setPrecision(f.getPrecision());
        field.setTrimType(f.getTrimType());
        field.setDecimalSymbol(f.getDecimalSymbol());
        field.setGroupSymbol(f.getGroupSymbol());
        field.setCurrencySymbol(f.getCurrencySymbol());
        field.setRepeated(f.isRepeated());
        field.setNullString(f.getNullString());
        fields.add(field);
        prevEnd = field.getPosition() + field.getLength();
    }
    if (info.getInputFields().length == 0) {
        TextFileInputField field = new TextFileInputField("Field1", 0, maxsize);
        fields.add(field);
    } else {
        // Take the last field and see if it reached until the maximum...
        TextFileInputField f = info.getInputFields()[info.getInputFields().length - 1];
        int pos = f.getPosition();
        int len = f.getLength();
        if (pos + len < maxsize) {
            // If not, add an extra trailing field!
            TextFileInputField field = new TextFileInputField("Dummy" + dummynr, pos + len, maxsize - pos - len);
            // don't include in result by default.
            field.setIgnored(true);
            fields.add(field);
        }
    }
    Collections.sort(fields);
    return fields;
}
Also used : TextFileInputFieldInterface(org.pentaho.di.core.gui.TextFileInputFieldInterface) TextFileInputField(org.pentaho.di.trans.steps.textfileinput.TextFileInputField) ValueMetaString(org.pentaho.di.core.row.value.ValueMetaString) Vector(java.util.Vector)

Example 2 with TextFileInputFieldInterface

use of org.pentaho.di.core.gui.TextFileInputFieldInterface in project pentaho-kettle by pentaho.

the class TextFileInputDialog method getFields.

private Vector<TextFileInputFieldInterface> getFields(TextFileInputMeta info, List<String> rows) {
    Vector<TextFileInputFieldInterface> fields = new Vector<>();
    int maxsize = 0;
    for (String row : rows) {
        int len = row.length();
        if (len > maxsize) {
            maxsize = len;
        }
    }
    int prevEnd = 0;
    int dummynr = 1;
    for (int i = 0; i < info.inputFields.length; i++) {
        BaseFileField f = info.inputFields[i];
        // See if positions are skipped, if this is the case, add dummy fields...
        if (f.getPosition() != prevEnd) {
            // gap
            BaseFileField field = new BaseFileField("Dummy" + dummynr, prevEnd, f.getPosition() - prevEnd);
            // don't include in result by default.
            field.setIgnored(true);
            fields.add(field);
            dummynr++;
        }
        BaseFileField field = new BaseFileField(f.getName(), f.getPosition(), f.getLength());
        field.setType(f.getType());
        field.setIgnored(false);
        field.setFormat(f.getFormat());
        field.setPrecision(f.getPrecision());
        field.setTrimType(f.getTrimType());
        field.setDecimalSymbol(f.getDecimalSymbol());
        field.setGroupSymbol(f.getGroupSymbol());
        field.setCurrencySymbol(f.getCurrencySymbol());
        field.setRepeated(f.isRepeated());
        field.setNullString(f.getNullString());
        fields.add(field);
        prevEnd = field.getPosition() + field.getLength();
    }
    if (info.inputFields.length == 0) {
        BaseFileField field = new BaseFileField("Field1", 0, maxsize);
        fields.add(field);
    } else {
        // Take the last field and see if it reached until the maximum...
        BaseFileField f = info.inputFields[info.inputFields.length - 1];
        int pos = f.getPosition();
        int len = f.getLength();
        if (pos + len < maxsize) {
            // If not, add an extra trailing field!
            BaseFileField field = new BaseFileField("Dummy" + dummynr, pos + len, maxsize - pos - len);
            // don't include in result by default.
            field.setIgnored(true);
            fields.add(field);
        }
    }
    Collections.sort(fields);
    return fields;
}
Also used : TextFileInputFieldInterface(org.pentaho.di.core.gui.TextFileInputFieldInterface) BaseFileField(org.pentaho.di.trans.steps.file.BaseFileField) ValueMetaString(org.pentaho.di.core.row.value.ValueMetaString) Vector(java.util.Vector)

Example 3 with TextFileInputFieldInterface

use of org.pentaho.di.core.gui.TextFileInputFieldInterface in project pentaho-kettle by pentaho.

the class TextFileInputDialog method getFixed.

private void getFixed() {
    TextFileInputMeta info = new TextFileInputMeta();
    getInfo(info, true);
    Shell sh = new Shell(shell, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.MAX | SWT.MIN);
    try {
        List<String> rows = getFirst(50, false);
        fields = getFields(info, rows);
        final TextFileImportWizardPage1 page1 = new TextFileImportWizardPage1("1", props, rows, fields);
        page1.createControl(sh);
        final TextFileImportWizardPage2 page2 = new TextFileImportWizardPage2("2", props, rows, fields);
        page2.createControl(sh);
        Wizard wizard = new Wizard() {

            public boolean performFinish() {
                wFields.clearAll(false);
                for (TextFileInputFieldInterface field1 : fields) {
                    BaseFileField field = (BaseFileField) field1;
                    if (!field.isIgnored() && field.getLength() > 0) {
                        TableItem item = new TableItem(wFields.table, SWT.NONE);
                        item.setText(1, field.getName());
                        item.setText(2, "" + field.getTypeDesc());
                        item.setText(3, "" + field.getFormat());
                        item.setText(4, "" + field.getPosition());
                        item.setText(5, field.getLength() < 0 ? "" : "" + field.getLength());
                        item.setText(6, field.getPrecision() < 0 ? "" : "" + field.getPrecision());
                        item.setText(7, "" + field.getCurrencySymbol());
                        item.setText(8, "" + field.getDecimalSymbol());
                        item.setText(9, "" + field.getGroupSymbol());
                        item.setText(10, "" + field.getNullString());
                        item.setText(11, "" + field.getIfNullValue());
                        item.setText(12, "" + field.getTrimTypeDesc());
                        item.setText(13, field.isRepeated() ? BaseMessages.getString(PKG, "System.Combo.Yes") : BaseMessages.getString(PKG, "System.Combo.No"));
                    }
                }
                int size = wFields.table.getItemCount();
                if (size == 0) {
                    new TableItem(wFields.table, SWT.NONE);
                }
                wFields.removeEmptyRows();
                wFields.setRowNums();
                wFields.optWidth(true);
                input.setChanged();
                return true;
            }
        };
        wizard.addPage(page1);
        wizard.addPage(page2);
        WizardDialog wd = new WizardDialog(shell, wizard);
        WizardDialog.setDefaultImage(GUIResource.getInstance().getImageWizard());
        wd.setMinimumPageSize(700, 375);
        wd.updateSize();
        wd.open();
    } catch (Exception e) {
        new ErrorDialog(shell, BaseMessages.getString(PKG, "TextFileInputDialog.ErrorShowingFixedWizard.DialogTitle"), BaseMessages.getString(PKG, "TextFileInputDialog.ErrorShowingFixedWizard.DialogMessage"), e);
    }
}
Also used : TableItem(org.eclipse.swt.widgets.TableItem) BaseFileField(org.pentaho.di.trans.steps.file.BaseFileField) ErrorDialog(org.pentaho.di.ui.core.dialog.ErrorDialog) ValueMetaString(org.pentaho.di.core.row.value.ValueMetaString) KettleException(org.pentaho.di.core.exception.KettleException) Shell(org.eclipse.swt.widgets.Shell) TextFileInputMeta(org.pentaho.di.trans.steps.fileinput.text.TextFileInputMeta) TextFileInputFieldInterface(org.pentaho.di.core.gui.TextFileInputFieldInterface) Wizard(org.eclipse.jface.wizard.Wizard) WizardDialog(org.eclipse.jface.wizard.WizardDialog)

Example 4 with TextFileInputFieldInterface

use of org.pentaho.di.core.gui.TextFileInputFieldInterface in project pentaho-kettle by pentaho.

the class TableDraw method setMarker.

private void setMarker(int x) {
    int idx = -1;
    int highest_smaller = -1;
    for (int i = 0; i < fields.size(); i++) {
        TextFileInputFieldInterface field = fields.get(i);
        int pos = field.getPosition();
        int len = field.getLength();
        if (pos == potential_click) {
            idx = i;
        }
        if (highest_smaller < 0 && pos + len >= x) {
            // The first time this occurs is OK.
            highest_smaller = i;
        }
    }
    // 
    if (idx < 0) {
        // Position is not yet in the list, the field is not deleted, but added
        if (highest_smaller >= 0) {
            // OK, let's add a new field, but split the length of the previous field
            // We want to keep this list sorted, so add at position lowest_larger.
            // We want to change the previous entry and add another after it.
            TextFileInputFieldInterface prevfield = fields.get(highest_smaller);
            int newlength = prevfield.getLength() - (x - prevfield.getPosition());
            TextFileInputFieldInterface field = prevfield.createNewInstance(getNewFieldname(), x, newlength);
            fields.add(highest_smaller + 1, field);
            // Don't forget to make the previous field shorter
            prevfield.setLength(x - prevfield.getPosition());
        }
    } else {
        if (highest_smaller >= 0) {
            // Now we need to remove the field with the same starting position
            // The previous field need to receive extra length
            TextFileInputFieldInterface prevfield = fields.get(highest_smaller);
            TextFileInputFieldInterface field = fields.get(idx);
            prevfield.setLength(prevfield.getLength() + field.getLength());
            // Remove the field
            fields.remove(idx);
        }
    }
    // Something has changed: change wizard page...
    wPage.setPageComplete(wPage.canFlipToNextPage());
}
Also used : TextFileInputFieldInterface(org.pentaho.di.core.gui.TextFileInputFieldInterface) Point(org.eclipse.swt.graphics.Point)

Example 5 with TextFileInputFieldInterface

use of org.pentaho.di.core.gui.TextFileInputFieldInterface in project pentaho-kettle by pentaho.

the class TableDraw method getFieldOnPosition.

private TextFileInputFieldInterface getFieldOnPosition(int x) {
    for (int i = 0; i < fields.size(); i++) {
        TextFileInputFieldInterface field = fields.get(i);
        int pos = field.getPosition();
        int len = field.getLength();
        if (pos <= x && pos + len > x) {
            return field;
        }
    }
    return null;
}
Also used : TextFileInputFieldInterface(org.pentaho.di.core.gui.TextFileInputFieldInterface) Point(org.eclipse.swt.graphics.Point)

Aggregations

TextFileInputFieldInterface (org.pentaho.di.core.gui.TextFileInputFieldInterface)6 ValueMetaString (org.pentaho.di.core.row.value.ValueMetaString)4 Vector (java.util.Vector)2 Wizard (org.eclipse.jface.wizard.Wizard)2 WizardDialog (org.eclipse.jface.wizard.WizardDialog)2 Point (org.eclipse.swt.graphics.Point)2 Shell (org.eclipse.swt.widgets.Shell)2 TableItem (org.eclipse.swt.widgets.TableItem)2 KettleException (org.pentaho.di.core.exception.KettleException)2 BaseFileField (org.pentaho.di.trans.steps.file.BaseFileField)2 TextFileInputField (org.pentaho.di.trans.steps.textfileinput.TextFileInputField)2 ErrorDialog (org.pentaho.di.ui.core.dialog.ErrorDialog)2 IOException (java.io.IOException)1 TextFileInputMeta (org.pentaho.di.trans.steps.fileinput.text.TextFileInputMeta)1 TextFileInputMeta (org.pentaho.di.trans.steps.textfileinput.TextFileInputMeta)1