Skip to main content
Search is in maintenance mode with no planned future development or bug fixes.
This sample demonstrates using the Loqate Local API to process multiple address records from an input file using the Search (Register) and Geocode processes.
package com.loqate.javademo;
import com.loqate.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;

/**
* LoqateJavaRegisterDemo
*
* This sample program calls the Loqate Local API to
* process an input text file including multiple address
* records and produces and output file with the results
* from the Register and Geocoding processes.
*
* @author loqate.com
*
*/
public class LoqateJavaRegisterDemo {

public static final String INPUT_FILENAME = "AddressDataRecords_input.txt";
public static final String OUTPUT_FILENAME = "AddressDataRecords_out.txt";

/**
* printRecord
* Prints record to output file
* @param res lqtProcessResult Loqate Process Result
* @param out PrintWriter prints to output file
*/
public static void printOutputRecord( lqtProcessResult res,
PrintWriter out ) {

// Output the result
out.println(" -------------------- ");

out.println("Result Count : " + res.getCount());

for (int i = 0; i < res.getCount(); i++) {
out.println("Accuracy Code : " + res.getAccuracyCode());
out.println("Organization : "
+ res.getField(i, "Organization"));
out.println("Address : "
+ res.getField(i, "Address"));
out.println("SubBuilding : "
+ res.getField(i, "SubBuilding"));
out.println("Premise : "
+ res.getField(i, "Premise"));
out.println("Building : "
+ res.getField(i, "Building"));
out.println("PostBox : "
+ res.getField(i, "PostBox"));
out.println("DependentThoroughfare : "
+ res.getField(i, "DependentThoroughfare"));
out.println("Thoroughfare : "
+ res.getField(i, "Thoroughfare"));
out.println("DoubleDependentLocality : "
+ res.getField(i, "DoubleDependentLocality"));
out.println("DependentLocality : "
+ res.getField(i, "DependentLocality"));
out.println("Locality : "
+ res.getField(i, "Locality"));
out.println("SubAdministrativeArea : "
+ res.getField(i, "SubAdministrativeArea"));
out.println("AdministrativeArea : "
+ res.getField(i, "AdministrativeArea"));
out.println("SuperAdministrativeArea : "
+ res.getField(i, "SuperAdministrativeArea"));
out.println("PostalCode : "
+ res.getField(i, "PostalCode"));
out.println("Telephone : "
+ res.getField(i, "Telephone"));
out.println("CountryName : "
+ res.getField(i, "CountryName"));
out.println("ISO3166-2 : "
+ res.getField(i, "ISO3166-2"));
out.println("Latitude : "
+ res.getField(i, "Latitude"));
out.println("Longitude : "
+ res.getField(i, "Longitude"));
out.println("GeoAccuracy : "
+ res.getField(i, "GeoAccuracy"));
out.println(" *** ");
}
}

public static void main(String [] args) {

try {
System.loadLibrary("lqtjava");
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library "
+ "failed to load.\n" + e );
}
// Set Loqate server object
lqtServer srv = lqtServer.create();

// Initialize the server
if (args.length > 0) {
srv.init(args[0]);
} else {
// Provide path to Loqate /data directory
srv.init("C:\\Program Files\\Loqate\\data");
}

// Create the process list
lqtProcessList lst = lqtProcessList.create();
lqtProcessOptions opts = lqtProcessOptions.create();

//lst.add("Verify", opts); // Sets Verify option

// Provides Register capability in Loqate 2012Q3.0 and later
lst.add("Search", opts);

// Sets Geocoding option
lst.add("Geocode", opts);

try {
// Open the Loqate session
int session = srv.open();

try {

// Read data from input file
BufferedReader inputReader = new BufferedReader(
new FileReader( INPUT_FILENAME ));

// Write records to output file
FileWriter outputFile =
new FileWriter( OUTPUT_FILENAME );
PrintWriter out = new PrintWriter(outputFile);

// Parse and load input data
String inputLine;
while((inputLine = inputReader.readLine()) != null){

String[] splitArray = inputLine.split("\t");

// Skip header line of input file
if (splitArray[0].equals("Address1")) {
continue;
}

// Create record
lqtInputRecord rec = lqtInputRecord.create();
lqtProcessResult res = lqtProcessResult.create();

// Set the Loqate values
rec.set("Address1", splitArray[0]);
rec.set("Address2", splitArray[1]);
rec.set("Locality", splitArray[2]);
rec.set("AdministrativeArea", splitArray[3]);
rec.set("PostalCode", splitArray[4]);
rec.set("Country", splitArray[5]);

// Process the record
srv.process(rec, lst, res);

// Print single record to output file
printOutputRecord(res, out);
lqtInputRecord.destroy(rec);

lqtProcessResult.destroy(res);
System.out.flush();

}
inputReader.close();
out.close();

} catch (IOException io) {
System.out.println("Exception caught "
+ "opening input file or "
+ "writing to output file.");
}

// Close the session
srv.close(session);

// Destroy the process list
lqtProcessList.destroy(lst);
lqtProcessOptions.destroy(opts);

// Tidy up
srv.shutdown();
lqtServer.destroy(srv);

} catch (Exception e) {
System.out.println("Exception caught opening "
+ "the Loqate session.");
}
}
}