Populate a Lookup Table from a CSV File
import java.util.Properties;
import java.io.*;
import Thor.API.Operations.tcLookupOperationsIntf;
import Thor.API.tcResultSet;
import Thor.API.tcUtilityFactory;
import com.thortech.xl.util.config.ConfigurationClient;
/*
* Tool to import a Lookup Definition table from a file
*
* The import file is in CSV format, format "key,value"
* The Lookup Definition must already exist
*
* Algorithm:
*
* Open CSV File
* Get XL API
* Get Lookup Table
* Delete each entry of the lookup table
* For each line of the CSV File,
* Parse key-value
* Add the new key-value to the lookup table
*
* @author Vinh-An Trinh (vinhant@zerointech.com)
*/
public class ImportLookupValues
{
public static void help()
{
System.out.println("Imports a Lookup Definition Table from a CSV file.\n");
System.out.println("The Lookup Definition Table must already exists.\n");
System.out.println("Its content will be deleted prior to import\n");
System.out.println("Usage:\n" +
"username password lookup_definition_code csv_file");
}
/*
* arg[0] : username
* arg[1] : password (eg xelsysadm)
* arg[2] : Lookup Definition Code. Must exist.
* arg[3] : CSV file to import. Format : key, value
*/
public static void main(String args[])
{
if (args.length < 3)
{
help();
return;
}
try
{
BufferedReader in = new BufferedReader(new FileReader(args[3]));
// Get the Lookup operation API
Properties jndi = ConfigurationClient.getComplexSettingByPath(
"Discovery.CoreServer").getAllSettings();
tcUtilityFactory tcutilityfactory = new tcUtilityFactory(jndi,
args[0], args[1]);
tcLookupOperationsIntf lookupIntf = (tcLookupOperationsIntf)
tcutilityfactory.getUtility(
"Thor.API.Operations.tcLookupOperationsIntf");
tcResultSet result = lookupIntf.getLookupValues(args[2]);
// Delete all the current values of the lookup
int rowCount = result.getRowCount();
String value = "";
for (int i=0; i<rowCount; i++)
{
result.goToRow(i);
value = result.getStringValue(
"Lookup Definition.Lookup Code Information.Code Key");
System.out.println("deleting " + value);
lookupIntf.removeLookupValue(args[2], value);
}
// Insert new values
String line;
while (null != (line = in.readLine()))
{
if (line.startsWith("#"))
continue;
int idx = line.indexOf(',');
if (idx < 0)
{
System.out.println("Cannot parse key-value from line : " +
line);
continue;
}
String key = line.substring(0, idx);
String val = line.substring(idx+1);
if (val.charAt(0) == '"')
val = val.substring(1);
if (val.charAt(val.length()-1) == '"')
val = val.substring(0, val.length()-1);
String lang = "en";
String country = "US";
System.out.println(key + "," + val);
lookupIntf.addLookupValue(args[2], key, val, lang, country);
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
System.exit(0);
}
}