107 lines
3.0 KiB
Java
107 lines
3.0 KiB
Java
import java.sql.SQLException;
|
|
import java.util.ArrayList;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* @author Lublena
|
|
*
|
|
*/
|
|
public class Main {
|
|
|
|
/**
|
|
* @param args
|
|
*/
|
|
public static void main(String[] args) {
|
|
if (args.length != 7)
|
|
{
|
|
System.err.println("Please specify table names and settings file!");
|
|
return;
|
|
}
|
|
|
|
String templateName = args[0];
|
|
String mappingName = args[1];
|
|
String compName = args[2];
|
|
int relSize = (new Integer(args[3])).intValue();
|
|
int arity = (new Integer(args[4])).intValue();
|
|
double density = (new Double(args[5])).doubleValue();
|
|
String fileName = args[6];
|
|
|
|
// TODO: check whether arguments are valid values
|
|
|
|
Settings settings = new Settings(fileName);
|
|
//System.out.print("Loading settings...");
|
|
if (settings.loadSettings() == false)
|
|
{
|
|
System.err.println("The specified file could not be loaded.");
|
|
return;
|
|
}
|
|
//System.out.println("done");
|
|
|
|
//System.out.print("Initializing database connection...");
|
|
// Init database connection
|
|
// DBConnector db = new DBConnector(settings.getDBSetting("dbname"),
|
|
// settings.getDBSetting("username"), settings.getDBSetting("password"),
|
|
// settings.getDBSetting("templaterel"), settings.getDBSetting("mappingrel"),
|
|
// settings.getDBSetting("comprel"),
|
|
// settings.getDBSetting("worldrel"));
|
|
|
|
DBConnector db = new DBConnector(settings.getDBSetting("dbname"),
|
|
settings.getDBSetting("username"), settings.getDBSetting("password"),
|
|
templateName, mappingName,
|
|
compName,
|
|
settings.getDBSetting("worldrel"));
|
|
if (db == null)
|
|
{
|
|
System.err.println("failed");
|
|
return;
|
|
}
|
|
|
|
//System.out.print("Retrieving relation size...");
|
|
|
|
// int relSize;
|
|
// if (settings.getDBSetting("size") != null)
|
|
// {
|
|
// // Size available in settings file
|
|
// relSize = (new Integer(settings.getDBSetting("size"))).intValue();
|
|
// }
|
|
// else
|
|
// {
|
|
// relSize = db.getTemplateRelSize();
|
|
// }
|
|
//
|
|
//System.out.println("done");
|
|
|
|
int maxHolesPerTuple = (new Integer(settings.getNoiseSetting("maxholespertuple"))).intValue();
|
|
double avgHolesPerTuple = 1 + (maxHolesPerTuple - 1)/ 2.0;
|
|
|
|
int tuplesWithHolesCount = (int) (relSize * density * arity / avgHolesPerTuple);
|
|
int maxHoleSize = (new Integer(settings.getNoiseSetting("maxholesize"))).intValue();
|
|
|
|
//System.out.print("Introducing holes...");
|
|
|
|
try
|
|
{
|
|
ArrayList holes = NoiseGenerator.generateNoise(db, settings.getVars(), relSize,
|
|
tuplesWithHolesCount, maxHolesPerTuple, maxHoleSize);
|
|
//ArrayList holes = NoiseGenerator.generateNoiseUniform(settings.getVars(), relSize,
|
|
// holeCount, maxHoleSize);
|
|
}
|
|
catch(SQLException e)
|
|
{
|
|
System.err.println("Error occurred while introducing noise:");
|
|
e.printStackTrace();
|
|
}
|
|
//System.out.println("done");
|
|
|
|
db.closeConnection();
|
|
//long end = System.currentTimeMillis();
|
|
//System.out.println("Total runningtime: " + (end - start) / 1000 + " seconds.");
|
|
|
|
// System.out.println("Generated " + db.worldCount + " worlds.");
|
|
}
|
|
|
|
}
|