com.google.cloud.iot.examples.DeviceRegistryExampleOptions.java Source code

Java tutorial

Introduction

Here is the source code for com.google.cloud.iot.examples.DeviceRegistryExampleOptions.java

Source

/**
 * Copyright 2017, Google, Inc.
 *
 * <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of the License at
 *
 * <p>http://www.apache.org/licenses/LICENSE-2.0
 *
 * <p>Unless required by applicable law or agreed to in writing, software distributed under the
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.google.cloud.iot.examples;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;

/** Command line options for the Device Manager example. */
public class DeviceRegistryExampleOptions {
    String projectId;
    String pubsubTopic;
    String ecPublicKeyFile = "ec_public.pem";
    String rsaCertificateFile = "rsa_cert.pem";
    String cloudRegion = "us-central1";

    /** Construct an DeviceRegistryExampleOptions class from command line flags. */
    public static DeviceRegistryExampleOptions fromFlags(String[] args) {
        Options options = new Options();
        // Required arguments
        options.addOption(Option.builder().type(String.class).longOpt("project_id").hasArg()
                .desc("GCP cloud project name.").required().build());
        options.addOption(Option.builder().type(String.class).longOpt("pubsub_topic").hasArg()
                .desc("Pub/Sub topic to create registry with, i.e. 'projects/project-id/topics/topic-id'")
                .required().build());

        // Optional arguments.
        options.addOption(Option.builder().type(String.class).longOpt("ec_public_key_file").hasArg()
                .desc("Path to ES256 public key file.").build());
        options.addOption(Option.builder().type(String.class).longOpt("rsa_certificate_file").hasArg()
                .desc("Path to RS256 certificate file.").build());
        options.addOption(Option.builder().type(String.class).longOpt("cloud_region").hasArg()
                .desc("GCP cloud region.").build());

        CommandLineParser parser = new DefaultParser();
        CommandLine commandLine;
        try {
            commandLine = parser.parse(options, args);
            DeviceRegistryExampleOptions res = new DeviceRegistryExampleOptions();

            res.projectId = commandLine.getOptionValue("project_id");
            res.pubsubTopic = commandLine.getOptionValue("pubsub_topic");

            if (commandLine.hasOption("ec_public_key_file")) {
                res.ecPublicKeyFile = commandLine.getOptionValue("ec_public_key_file");
            }
            if (commandLine.hasOption("rsa_certificate_file")) {
                res.rsaCertificateFile = commandLine.getOptionValue("rsa_certificate_file");
            }
            if (commandLine.hasOption("cloud_region")) {
                res.cloudRegion = commandLine.getOptionValue("cloud_region");
            }
            return res;
        } catch (ParseException e) {
            System.err.println(e.getMessage());
            return null;
        }
    }
}