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;
}
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;
}
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);
}
}
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());
}
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;
}
Aggregations