public class TestInstance extends Tester {
@Test
public void run() throws Exception{
PostgreSqlConnection connection = new PostgreSqlConnection("src/connections.properties","connection4");
try{
//opening the database connection
connection.openConnection();
//create the relational tables
String[] columns_space_dim = {"id","environment_name","environment_geom","region_name","region_geom","area_name","area_geom"};
String tableName_space_dim = "trdw_space_dimension";
String[] columns_fact = {"id","geom","type","name","m_obj_id","speed","direction"};
String tableName_fact = "trdw_space_dimension";
RelationalTable fact = new RelationalTable(tableName_fact,columns_fact);
RelationalTable spaceDimension = new RelationalTable(tableName_space_dim,columns_space_dim);
//load the tables used to create dimensions and cubes
spaceDimension.loadObject(connection);
fact.loadObject(connection);
//TODO: load data inside table using FileReader and RelationalTable classes
RelationalTable episodeFacts = new RelationalTable("trdw_episode_facts");
spaceDimension.loadObject(connection);
episodeFacts.loadObject(connection);
//define the space dimension
Level environmentLvl = new MondrianLevel("Environment",spaceDimension,"environment_name");
LevelProperty envNameProp = new MondrianLevelProperty( "Environment Name",
LevelProperty.TYPE_STRING,
spaceDimension,
"environment_name");
environmentLvl.addProperty(envNameProp);
LevelProperty envGeomProp = new MondrianLevelProperty( "geom",
LevelProperty.TYPE_GEOMETRY,
spaceDimension,
"environment_geom");
environmentLvl.addProperty(envGeomProp);
Level regionLvl = new MondrianLevel("Region",spaceDimension,"region_name");
LevelProperty regNameProp = new MondrianLevelProperty( "Region Name",
LevelProperty.TYPE_STRING,
spaceDimension,
"region_name");
regionLvl.addProperty(regNameProp);
LevelProperty regGeomProp = new MondrianLevelProperty( "geom",
LevelProperty.TYPE_GEOMETRY,
spaceDimension,
"region_geom");
regionLvl.addProperty(regGeomProp);
Level areaLvl = new MondrianLevel("Area",spaceDimension,"area_name");
LevelProperty areaNameProp = new MondrianLevelProperty( "Area Name",
LevelProperty.TYPE_STRING,
spaceDimension,
"area_name");
areaLvl.addProperty(areaNameProp);
LevelProperty areaGeomProp = new MondrianLevelProperty( "geom",
LevelProperty.TYPE_GEOMETRY,
spaceDimension,
"area_geom");
areaLvl.addProperty(areaGeomProp);
Hierarchy spaceHier = new MondrianHierarchy("spaceHier",spaceDimension);
spaceHier.addLevel(environmentLvl);
spaceHier.addLevel(regionLvl);
spaceHier.addLevel(areaLvl);
Dimension spaceDim = new MondrianDimension("Space",spaceHier);
//define episode presence measure
String sql = "case when get_trj_space_area_intersections(trdw_episode_facts.geom) > 0 then ceil(1/get_trj_space_area_intersections(trdw_episode_facts.geom)) else 0 end";
Measure episodePresence = new MondrianVirtualMeasure( "Episode Presence",
episodeFacts,
Measure.DATATYPE_NUMERIC,
Measure.AGGR_SUM,
sql);
//define cube
Cube presenceCube = new MondrianCube("Presences",episodeFacts);
presenceCube.addDimension(spaceDim);
presenceCube.addMeasure(episodePresence);
//define data warehouse
DataWarehouse dw = new MondrianDataWarehouse("simone","test");
dw.addCube(presenceCube);
//logger.info(((MondrianDataWarehouse)dw).getSchema());
//define a query
//query the database using mondrian
spaceDimension.releaseObject();
episodeFacts.releaseObject();
//closing the database connection
connection.closeConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}