Yellowfinには、そのまま利用できる数多くのパラメーター実装があります。これらは、列挙型InputTypeで定義されます。以下に、利用可能なすべてのタイプとそのオプションを、コードサンプルとともに示します。
タイプ | 説明 | オプション | コードサンプル |
TEXTBOX | テキスト入力ボックスです。 |
| ParameterImpl parameter = new ParameterImpl(); parameter.setProperty("DECIMALS"); parameter.setInputType(InputType.TEXTBOX); parameter.setName("Decimal Places"); parameter.setMinAllowed(0); parameter.addViewOption("numericOnly", true); parameter.addViewOption("numericType", "INTEGER"); |
SELECT | ドロップダウンリストです。値と説明は、こちらのパラメーターに追加された可能な値から取得されます。 |
| ParameterImpl p = new ParameterImpl(); p.setProperty("DATE_FORMAT"); p.setName("Format"); p.setInputType(InputType.SELECT); List<CustomValue<?>> optValues = new ArrayList<>(); optValues.add(new CustomValue(""," - - Select - - "); optValues.add(new CustomValue("YEAR","Year")); optValues.add(new CustomValue("YEAR_START","Year Start Date")); optValues.add(new CustomValue("YEAR_END","Year End Date")); p.setPossibleValues(optValues); |
RADIO | ラジオボタンのグループです。各選択肢にラジオボタンを持ちます。 |
| ParameterImpl parameter = new ParameterImpl(); parameter.setProperty("STARTING_POINT"); parameter.setInputType(InputType.RADIO); parameter.addPossibleValue("LEFT", "Left"); parameter.addPossibleValue("RIGHT", "Right"); parameter.addPossibleValue("MIDDLE", "Middle"); |
DATE, TIMESTAMP | 日付/タイムスタンプ入力要素です。これらはほぼ同様で、同一のビューオプションを持ちます。 setPropertyを使用するキーセットは、入力値を保存します。 形式:
動的日付: 動的日付の場合、単位はビューオプション「unitCodeProperty」で指定されたキーに対して保存されます。 動的日付値は、「SYSDATE+x」として保存されます。例えば、「property=STARTDATE」、「unitCodeProperty=STARTUNIT」の場合、 Today -1 Yearは、以下のように保存されます。 STARTDATE: SYSDATE-1 STARTUNIT: YEAR |
| ParameterImpl p = new ParameterImpl(); p.setProperty("STARTDATE"); p.addViewOption("useCurrentDate", "true"); p.addViewOption("unitCodeProperty", "STARTUNIT"); p.setInputType(InputType.DATE); |
TIME | 時間データ入力を検証するテキスト入力要素です。 有効な時間入力は、指定されたプロパティに対してhh:mm:ss(24時間)形式で保存されます。 このウィジェットにはスタイリングオプションがありません。 |
| ParameterImpl p = new ParameterImpl(); p.setProperty("RUN_TIME"); p.setInputType(InputType.TIME); |
CHECKBOX | ひとつ以上のYellowfinチェックボックスを表示します。 |
| ParameterImpl p = new ParameterImpl(); p.setInputType(InputType.CHECKBOX); p.setProperty("INCLUDED_FIELDS"); p.setParameterClassName("included-fields"); p.addViewOption("tooltip", true); p.addPossibleValue("field001", "PERSONID"); p.addPossibleValue("field002", "CAMPID"); p.addPossibleValue("field003", "INVOICEDAMOUNT"); |
BUTTON | 標準的なYellowfinのボタンを表示します。 |
data:<MIME Type>;base64, <base64 String>
| ParameterImpl p = new ParameterImpl(); p.setProperty("apply"); p.setInputType(InputType.BUTTON); p.addViewOption("text", "Apply"); p.addViewOption("flat", true); p.addViewOption("style", "blue"); p.addViewOption("width", "50px"); p.addViewOption("height", "40px"); |
STATIC | 静的テキストのブロックを表示します。 |
| ParameterImpl p = new ParameterImpl(); p.addViewOption("text", "This is some text"); p.setInputType(InputType.STATIC); |
COLOURPICKER | 標準的なYellowfinのカラーピッカーです。 | なし | ParameterImpl p = new ParameterImpl(); p.setInputType( InputType.COLOURPICKER); |
SLIDERANDTEXT | どちら方法でも入力が可能な、リンクされたテキストボックス付きのスライダー入力です。 |
| ParameterImpl p = new ParameterImpl(); p.setName("Group Size"); p.setProperty("size"); p.setInputType(InputType.SLIDERANDTEXT); p.addViewOption("textMaxValue", "20"); p.addViewOption("maxValue", "20"); p.setDefaultValue(5); |
TOGGLE | On/Offトグルスライダーを表示します。 |
| ParameterImpl p = new ParameterImpl(); p.setProperty("FIRST_ROW_HEADER"); p.setName("First row contains unique titles"); p.setDefaultValue(true); p.setInputType(InputType.TOGGLE); |
FIELDMATCHDROPDOWN | お互いに一致するFieldObject(詳細は、ヘルパーオブジェクト項目を参照)の2つの一覧を受け付けます。ひとつ以上の一致を含めることができます。結果の関係は、以下のような配列で返されます。 { 'from': fieldA.id, 'to': fieldB.id } |
| ParameterImpl p = new ParameterImpl(); p.setProperty("fieldMatchProperty"); p.setList(true); //List of matches ListOptions lo = new ListOptions(); lo.setAddButtonText("Match More"); p.setListOptions(lo); FieldObjectDataType textType = FieldObjectDataType.TEXT; FieldObjectDataType numericType = FieldObjectDataType.NUMERIC; // LIST A List<FieldObject> fieldListA = new LinkedList<>(); FieldObject field1 = new FieldObject("1", "", "Field 1", textType); FieldObject field2 = new FieldObject("2", "", "Field 2", numericType); fieldListA.add(field1); fieldListA.add(field2); // LIST B List<FieldObject> fieldListB = new LinkedList<>(); FieldObject field3 = new FieldObject("3", "", "Field 3", textType); FieldObject field4 = new FieldObject("4", "", "Field 4", numericType); FieldObject field5 = new FieldObject("5", "", "Field 5", textType); FieldObject field6 = new FieldObject("6", "", "Field 6", numericType); fieldListB.add(field3); fieldListB.add(field4); fieldListB.add(field5); fieldListB.add(field6); // Add the lists to the Match widget p.addViewOption("fieldListA", fieldListA); p.addViewOption("fieldListB", fieldListB); p.addViewOption("titleA", "Left Field"); p.addViewOption("titleB", "Right Field"); p.setInputType(InputType.FIELDMATCHDROPDOWN); |
FIELDMATCH | これは、FIELDMATCHDROPDOWNと同様の機能を提供します。ドラッグをすることでフィールドを一致させます。フィールドはデータ型により一致し、色でコーディングされています。一致しないフィールドはフラグ付けされます。 一方のフィールドは、「除外」ゾーンにドラッグすることで除外することができます。結果の関係は、FIELDMATCHDROPDOWNと同様の形式で返されます。
ひとつのカラム(列)からフィールドが除外された場合、そのロウ(行)に一致するオブジェクトは、対応する「from」や「to」属性を持たないことになります。例えば、以下の画像のADDRESSIDのオブジェクトは、下記のようになります。 { 'to': ADDRESSID.id }
|
| ParameterImpl p = new ParameterImpl(); p.setInputType(InputType.FIELDMATCH); p.setProperty("UNION_FIELD_MATCH"); p.addViewOption("includeUnmatched", true); //Match exact types p.addViewOption("roughMatch", false); List<FieldObject> foListA = new ArrayList<>(); List<FieldObject> foListB = new ArrayList<>(); FieldObjectDataType textDataType = FieldObjectDataType.TEXT; FieldObjectDataType numericDataType = FieldObjectDataType.NUMERIC; // LIST A FieldObject field1 = new FieldObject("1", "primary", "Field 1", textDataType); //Primary Key FieldObject field2 = new FieldObject("2", "", "Field 2", numericDataType);//This is a metric foListA.add(field1); foListA.add(field2); // LIST A FieldObject field3 = new FieldObject("3", "", "Field 3", textDataType); FieldObject field4 = new FieldObject("4", "", "Field 4", numericDataType);//This is a metric FieldObject field5 = new FieldObject("5", "", "Field 5", textDataType); FieldObject field6 = new FieldObject("6", "", "Field 6", numericDataType);//This is a metric foListB.add(field3); foListB.add(field4); foListB.add(field5); foListB.add(field6); p.addViewOption("fieldListA", foListA); p.addViewOption("fieldListB", foListB); //Input 1 p.addViewOption("titleA", "Input 1"); //Input 2 p.addViewOption("titleB", "Input 2");
上記のコードは、以下を生成します。 |
AUTOCOMPLETEBOX | 検索可能なドロップダウンリストを表示します。 検索可能なアイテムは、パラメーターの「possibleValues」として追加されたCustomValueオブジェクトである必要があります。 |
| ParameterImpl p = new ParameterImpl(); p.setProperty("TABLETEXTBOX"); p.setName("New Table Name"); p.setInputType(InputType.AUTOCOMPLETETEXTBOX); p.addViewOption("width", 200); CustomValue<String> initialValue = new CustomValue<String>("all_objects", "all_objects"); p.addViewOption("initialValue", initialValue); List<CustomValue<?>> possibleValues = new ArrayList<>(); possibleValues.add(new CustomValue<String>("all_columns", "all_columns")); possibleValues.add(new CustomValue<String>("all_parameters", "all_parameters")); possibleValues.add(new CustomValue<String>("all_sql_modules", "all_sql_modules")); possibleValues.add(new CustomValue<String>("all_tables", "all_tables")); p.setPossibleValues(possibleValues); p.addViewOption("width", 200); p.addViewOption("resultListStyle", "outputStepAutoCompleteList"); |
SHOWADVANCED | 他のユーザーインターフェイス要素を表示/非表示する展開可能なウィジェットです。これは、ParameterDisplayRulesとともに使用しなくてはいけません。 |
| Boolean value = true; Boolean negative = false; // SHOW_ADVANCED_SETTINGS == true ParameterDisplayRule advancedSettingsDisplayRule = new ParameterDisplayRule("AND", "SHOW_ADVANCED_SETTINGS", value, negative); ParameterImpl p = new ParameterImpl(); p.setProperty("ALL_ROWS"); p.setName("All Rows"); p.setDefaultValue(true); p.setInputType(InputType.TOGGLE); p.addDisplayRule(advancedSettingsDisplayRule); paramList.add(p); p = new ParameterImpl(); p.setProperty("SEPARATOR"); p.setName("Separator"); p.setInputType(InputType.TEXTBOX); p.addViewOption("width", "40px"); p.addDisplayRule(advancedSettingsDisplayRule); paramList.add(p); p = new ParameterImpl(); p.setProperty("SHOW_ADVANCED_SETTINGS"); p.setInputType(InputType.SHOWADVANCED); p.setDefaultValue(false); p.addViewOption("showText", "Advanced Settings ↓"); p.addViewOption("hideText", "Less ↑"); p.addViewOption("width", "150px"); paramList.add(p); |
PAIRCOLUMNS | 対になったデータを2つのカラム(列)に表示します。ロウ(行)を削除する制御があります。
パラメーターデータが変更される度に、カラム(列)は新しいデータを再表示します。データは、形式のオブジェクトを持つ配列である必要があります。 { column1Key: dataRow1Col1 column2Key: dataRow2Col2 }
|
| ParameterImpl p = new ParameterImpl(); p.setProperty("RULES_PARAM"); p.setName("Rules"); p.setInputType(InputType.PAIRCOLUMNS); p.addViewOption("column1Header", "Find"); p.addViewOption("column2Header", "Replace"); p.addViewOption("column1Key", "FIND_PARAMETER"); p.addViewOption("column2Key", "REPLACE_PARAMETER"); List<Map<String, String>> defaults = new ArrayList<>(); Map<String, String> row = new HashMap<>(); row.put("FIND_PARAMETER", "Farenheit"); row.put("REPLACE_PARAMETER", "Celsius"); defaults.add(row); row = new HashMap<>(); row.put("FIND_PARAMETER", "miles"); row.put("REPLACE_PARAMETER", "km"); defaults.add(row); p.setDefaultValue(defaults); |
DELIMITEREXAMPLE | 区切り文字を適用して一行のデータを分割する場合の出力例を表示します。 |
| ParameterImpl p = new ParameterImpl(); p.setProperty("DELIMITER"); p.addViewOption("text", "7 Rosella Avenue;Boronia;3155;Victoria"); p.setInputType(InputType.DELIMITEREXAMPLE); |
INPUTLIST |
| Map<String, String> viewOptions1 = new HashMap<>(); viewOptions1.put("property", "FIND"); Map<String, String> viewOptions2 = new HashMap<>(); viewOptions2.put("property", "REPLACE"); Map<String, Map<String, String>> inputOption1 = new HashMap<>(); inputOption1.put("controlType", "TEXTBOX"); inputOption1.put("viewOptions", viewOptions1); Map<String, Map<String, String>> inputOption2 = new HashMap<>(); inputOption2.put("controlType", "TEXTBOX"); inputOption2.put("viewOptions", viewOptions2); List<Map<String, Map<String, String>> inputOptions = new ArrayList<>(); ParameterImpl p = new ParameterImpl(); p.setInputType(InputType.INPUTLIST); p.setProperty("FIND_AND_REPLACE_INPUTS"); p.addViewOption("inputOptions", inputOptions); |
特別な実装
一般的に定義されるパラメーターの他に、いくつかの特別な実装があります。以下にそれを示します。
実装 | 説明 | メソッド | ビューオプション | コードサンプル |
FileUploaderParameter | ファイルアップロード時のユーザーインターフェイスを生成するために使用します。アップロードされたファイルの削除もします。 |
|
| FileUploadParameter p = new FileUploadParameter("UPLOAD_FILE_KEY", "*", "FILE", null); p.setParameterClassName("left-param"); p.setUploadImageBase64(getBase64OffImage(), "image/svg+xml"); p.setUploadImageHoverBase64(getBase64OnImage(), "image/svg+xml"); p.setUploadWidgetText("Drag File Here"); アップロードされたファイルは、以下を使用することで、データトランスフォーメーションステップからアクセスすることができます。
byte[] rawData = this.getFile("UPLOAD_FILE_KEY"); |
PasswordParameter | パスワード項目のユーザーインターフェイスを生成するために使用します。項目に入力された文字はマスクされ、フレームワークにより暗号化/復号化することができます。データトランスフォーメーションで使用する際、現在の値が以前にステップオプションとして保存された値と異なる場合、Yellowfinは自動的に値を暗号化します。パラメーターを使用するコンポーネントは、使用前にパスワードを復号化することが期待されています。 |
|
| パスワードパラメーターの定義: PasswordParameter apiKey = new PasswordParameter("API_KEY", "myApiKey"); apiKey.setName("API Key"); apiKey.addViewOption("width", "190px");
パスワードパラメーターの使用: List<Parameter> paramsList = getPanelCollection().getSectionMap().get("passwordSection").getParameters(); for (Parameter parameter : paramsList){ if ("API_KEY".equals(parameter.getProperty())){ PasswordParameter pwd = ((PasswordParameter) parameter; pwd.setValue(getStepOption("API_KEY")); try { apiKey = pwd.decrypt(); } catch (Exception e) { throwUnhandledETLException(e); } } } |