def handle(self, *args, **options):
        print_json = bool(options.get('json_dump', False))
        filename = options.get('filename', '-')
        rt_list = args # list of range-type identifiers

        if not rt_list:
            # if no range-type name specified get all of them
            rt_list = getAllRangeTypeNames()

        else:
            # filter existing range-type names
            def __checkRangeType(rt):
                rv = isRangeTypeName(rt)
                if not rv:
                    self.print_err("Invalid range-type identifier '%s' !"%rt)
                return rv
            rt_list = [rt for rt in rt_list if __checkRangeType(rt)]

        # select the right output format
        if print_json:
            output = OutputJSON
        else:
            output = OutputBrief

        def _write_out(fout):
            """ Write the output."""
            fout.write(output.lead())
            for i, rt_name in enumerate(rt_list):
                if i > 0:
                    fout.write(output.separator())
                fout.write(output.object(rt_name))
            fout.write(output.trail())

        try:
            if filename == "-":
                _write_out(sys.stdout)
            else:
                with open(filename, "w") as fout:
                    _write_out(fout)

        except IOError as exc:
            raise CommandError("Failed to write to file '%s'!"
                                " REASON: %s" % (filename, str(exc)))
    def handle(self, *args, **options):

        # Collect parameters

        self.verbosity  = int(options.get('verbosity', 1))

        print_details   = bool(options.get('details',False))

        print_json      = bool(options.get('json_dump',False))

        filename        = options.get('filename','-')

        # dataset's (coverages') ids
        rt_list = args

        #----------------------------------------------------------------------
        # check the input rangetype names

        if not rt_list :

            # if no IDs specified get all identifiers

            rt_list = getAllRangeTypeNames()

        else :

            # filter existing range-type names

            def __checkRangeType( rt ) :
                rv = isRangeTypeName( rt )
                if not rv :
                    self.print_err( "Invalid range-type identifier '%s' !"%rt )
                return rv

            rt_list = filter( __checkRangeType , rt_list )

        #----------------------------------------------------------------------
        # output

        # select the right output driver 

        if print_json :         output = OutputJSON
        elif print_details :    output = OutputDetailed 
        else :                  output = OutputBrief 


        # write the output 

        def _write_out( fout ) : 
            fout.write( output.lead() ) 
            for i,rt_name in enumerate(rt_list) :
                if i > 0 : fout.write( output.separator() )
                fout.write( output.object( rt_name ) ) 
            fout.write( output.trail() ) 

        # output file 
        try :  

            if filename == "-" : 

                # write to stdout 
                _write_out( sys.stdout ) 

            else : 
                
                # write to a file 
                with open(filename,"w") as fout :
                    _write_out( fout )

        except IOError as e : 

            raise CommandError( "Failed to open the output file '%s' ! "
                    "REASON: %s" % ( filename , str(e) ) )