2015-01-07 6 views
6

का उपयोग कर मैं निम्नलिखित का उपयोग कर 2 परस्पर अनन्य विकल्प बना सकते हैं:परस्पर अनन्य विकल्प अपाचे कॉमन्स CLI

Option a = OptionBuilder.create("a"); 
Option b = OptionBuilder.create("b"); 

OptionGroup optgrp = new OptionGroup(); 
optgrp .setRequired(true); 
optgrp .addOption(a); 
optgrp .addOption(b); 

ऊपर या तो विकल्प के लिए एक या विकल्प ख प्रदान करने के लिए उपयोगकर्ता के लिए बाध्य करेगा।

लेकिन अगर मैं एक तीसरा विकल्प, ग है:

या तो:

Option c = OptionBuilder.create("c"); 

यह परस्पर अनन्य विकल्प ऐसी है कि बनाने के लिए संभव है

  1. विकल्प एक प्रदान किया जाना चाहिए या
  2. दोनों विकल्प बी और सी प्रदान किए जाने चाहिए

मैं OptionGroup का उपयोग करके इसे करने का कोई तरीका नहीं देख सका?

उत्तर

4

यह करने के लिए समाधान के लिए, मैं निम्नलिखित, आदर्श नहीं लागू किया है, लेकिन ..

public static void validate(final CommandLine cmdLine) { 
    final boolean aSupplied = cmdLine.hasOption(A); 

    final boolean bAndCSupplied = cmdLine.hasOption(B) && cmdLine.hasOption(C); 

    final boolean bOrCSupplied = !bAndCSupplied && (cmdLine.hasOption(B) || cmdLine.hasOption(C)); 

    if ((aSupplied && bAndCSupplied) || (!aSupplied && !bAndCSupplied) 
     || (aSupplied && bOrCSupplied)) { 
      throw new Exception(...); 
    } 
} 
+0

हाँ, मैं कॉमन्स-CLI में कार्यक्षमता है कि अब तक चला जाता है नहीं लगता है, लेकिन दूसरी ओर यह होगा कुछ मामलों के लिए बहुत जटिल कोड जोड़ें जो आपके द्वारा लाइब्रेरी के बाहर आसानी से निपटा जा सकता है। – centic

संबंधित मुद्दे