| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod HasEmptySet (LibDMF_SetTypes setTypes_i, output Strings feedbacks_o) remote as Boolean | 
| { | 
|   Description: 'Checks if the input set types have empty set relations' | 
|   TextBody: | 
|   [* | 
|     // Timothy Guan Jul-7-2015 (created) | 
|     // Assumption: Only a single channel is selected at any time | 
|      | 
|     value := true; | 
|      | 
|     // We need to store this to calculate some stuff | 
|     size := counter( setTypes_i, Elements.Set, set, true ); | 
|     isSetOwner := size > 0; | 
|      | 
|     if( isSetOwner ) | 
|     { | 
|       // Translation variables - We need only care about the first element | 
|       setTypeFirst := setTypes_i.Element( 0 ); | 
|       setTypeName := setTypeFirst.Name(); | 
|       channelName := setTypeFirst.SystemOnChannel().ChannelName(); | 
|      | 
|       // Retrieve system on channel instance - GetTranslation | 
|       ccr := setTypeFirst.GetCommunicationChannelRoot(); | 
|      | 
|       // 4 possible cases (11, 1N, N1, NN) | 
|       if( setTypes_i.Size() = 1 ) | 
|       { | 
|         if( size = 1 ) | 
|         { | 
|           // Need to set here, will return null if there is a set type that has no sets | 
|           setName := select( setTypeFirst, Set, set, true ).Name(); | 
|      | 
|           value := LibDMF_Util::CollectFeedback( ccr.GetTranslation( "DM_SetType_CanDelete_ViolateHasEmptySet_11", setTypeName, setName, channelName ), | 
|                                                  feedbacks_o ); | 
|         } | 
|         else | 
|         { | 
|           value := LibDMF_Util::CollectFeedback( ccr.GetTranslation( "DM_SetType_CanDelete_ViolateHasEmptySet_1N", setTypeName, channelName ), | 
|                                                  feedbacks_o ); | 
|         } | 
|       } | 
|       else | 
|       { | 
|         // N1 and NN cases share the same feedback message | 
|         value := LibDMF_Util::CollectFeedback( ccr.GetTranslation( "DM_SetType_CanDelete_ViolateHasEmptySet_NX", channelName ), | 
|                                                feedbacks_o ); | 
|       } | 
|     } | 
|      | 
|     return value; | 
|   *] | 
| } |