//-----------------------------------------------------------------------------
// file: Sample.java
// auth: Cheng Liu <cliu@max.md>
// copy: (c) Copyright 2015 MaxMD Corp.
// desc: Get data from Restful API and export CSV file
//-----------------------------------------------------------------------------

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author cliu
 */
public class Sample {

    public static void main(String args[]) {

        try {
            String baseUrl = "https://directapi.max.md:8445/Directory/rest/getDirectory";
            String hispOperatorUrl = "";
            String directAddressUrl = "";
            String stateListUrl = "";
            String startdateUrl = "";
            String enddateUrl = "";
            String statusUrl = "";
            String usernameUrl = "";
            String md5HashedPasswordUrl = "";

            String urlString = baseUrl + "/" + hispOperatorUrl + "/" + directAddressUrl + "/" + stateListUrl + "/" + startdateUrl + "/" + enddateUrl + "/" + statusUrl + "/" + usernameUrl + "/" + md5HashedPasswordUrl;
            URL url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setDoOutput(true);
            conn.connect();
            System.out.println(conn.getResponseCode());
            BufferedReader read = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String filename = "directory.csv";
            File file = new File(filename);
            if (!file.exists()) {
                file.createNewFile();
            }
            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            fw.append("hisp_operator");
            fw.append(',');
            fw.append("service_direct_address");
            fw.append(',');
            fw.append("service_description");
            fw.append(',');
            fw.append("provider_uid");
            fw.append(',');
            fw.append("provider_npi");
            fw.append(',');
            fw.append("provider_first_name");
            fw.append(',');
            fw.append("provider_middle_name");
            fw.append(',');
            fw.append("provider_last_name");
            fw.append(',');
            fw.append("provider_suffix");
            fw.append(',');
            fw.append("provider_healthcare_service_class");
            fw.append(',');
            fw.append("provider_specialty");
            fw.append(',');
            fw.append("provider_role");
            fw.append(',');
            fw.append("organization_uid");
            fw.append(',');
            fw.append("organization_npi");
            fw.append(',');
            fw.append("organization_name");
            fw.append(',');
            fw.append("organization_address_line_1");
            fw.append(',');
            fw.append("organization_address_line_2");
            fw.append(',');
            fw.append("organization_city");
            fw.append(',');
            fw.append("organization_state");
            fw.append(',');
            fw.append("organization_postal_code");
            fw.append(',');
            fw.append("organization_phone");
            fw.append(',');
            fw.append("organization_fax");
            fw.append(',');
            fw.append("organization_healthcare_service_class");
            fw.append(',');
            fw.append("organization_specialty");
            fw.append('\n');
            
            String query = null;
            while ((query = read.readLine()) != null) {
                fw.write(query);
                fw.append('\n');
                fw.flush();
            }
            fw.flush();
            fw.close();
        } catch (IOException ex) {
            Logger.getLogger("exception: " + ex);
        }
    }
}
