| 1 | = FDO RFC 44 - Add IF Expression Function = |
| 2 | |
| 3 | This page contains an change request (RFC) for the FDO Open Source project. |
| 4 | More FDO RFCs can be found on the [wiki:FDORfcs RFCs] page. |
| 5 | |
| 6 | |
| 7 | == Status == |
| 8 | |
| 9 | ||RFC Template Version||(1.0)|| |
| 10 | ||Submission Date|| Nov. 10, 2009 || |
| 11 | ||Last Modified|| Orest Halustchak [[Timestamp]]|| |
| 12 | ||Author||Orest Halustchak|| |
| 13 | ||RFC Status||Not Ready for Review|| |
| 14 | ||Implementation Status||draft|| |
| 15 | ||Proposed Milestone||3.5.0.0|| |
| 16 | ||Assigned PSC guide(s)||Orest Halustchak|| |
| 17 | ||'''Voting History'''|| || |
| 18 | ||+1|| || |
| 19 | ||+0|| || |
| 20 | ||-0|| || |
| 21 | ||-1|| || |
| 22 | |
| 23 | == Motivation == |
| 24 | |
| 25 | This enhancement is to allow an application using an FDO expression to generate different values from a boolean expression. Typically this is to generate a different string value from a boolean expression. The MapGuide stylization engine includes a similar function, but it is not available at the FDO level and will be useful for users at this level. |
| 26 | |
| 27 | == Overview == |
| 28 | |
| 29 | This RFC proposes a new FDO expression function called IF that takes a boolean expression and chooses between two data values for the output. This function will be based on the stylization function and will be a migration of that implementation. |
| 30 | |
| 31 | == Proposed Solution == |
| 32 | |
| 33 | Define a new FDO Expression function called IF. |
| 34 | |
| 35 | {{{ |
| 36 | /// |
| 37 | /// Result, ValueIfTrue, and ValueIfFalse are the same data type. They can be any FDO numeric, string, or date/time data type. |
| 38 | /// If Boolean Expression evaluates to true, then ValueIfTrue is returned. If Boolean Expression evaluates to false or is null, |
| 39 | /// then ValueIfFalse is returned. |
| 40 | |
| 41 | Result = IF(Boolean Expression, ValueIfTrue, ValueIfFalse) |
| 42 | |
| 43 | /// |
| 44 | /// E.g. IF(BoolProperty, ‘Oui’, ‘Non’) would generate ‘Oui’ if BoolProperty is true, otherwise ‘Non’. |
| 45 | /// E.g. IF(BoolProperty, 1, -1) would generate 1 or -1. |
| 46 | |
| 47 | }}} |
| 48 | |
| 49 | |
| 50 | == Provider Implementation == |
| 51 | |
| 52 | TBD. |
| 53 | |
| 54 | == Test Plan == |
| 55 | Expand unit tests to test the proposed enhancements defined above. |
| 56 | |
| 57 | == Funding/Resources == |
| 58 | |
| 59 | Autodesk to provide resources / funding. |
| 60 | |