package eu.scape_project.planning.efficiency;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.apache.commons.io.FileUtils;
import org.junit.Ignore;
import org.junit.Test;
import eu.scape_project.planning.model.Plan;
import eu.scape_project.planning.model.PlatoException;
import eu.scape_project.planning.xml.PlanParser;
public class PlanStatisticTest {
@Test
public void testSinglePlanFromFile() throws PlatoException, IOException {
PlanParser parser = new PlanParser();
InputStream in = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("plans/PlanParserTest/PlanParserTest-PLAN_VALIDATED-minimal.xml");
File userDir = FileUtils.getUserDirectory();
File outFile = new File(userDir, "statistics.csv");
Writer writer = new FileWriter(outFile);
PlanStatisticsGenerator statistics = new PlanStatisticsGenerator(writer, null);
List<Plan> plans = parser.importProjects(in);
for (Iterator<Plan> iter = plans.iterator(); iter.hasNext();) {
statistics.writeStatistics(iter.next());
}
statistics.endReport();
System.out.printf("Statistics written to : %s", outFile.getAbsolutePath());
}
@Test
public void testStageSinglePlanFromFile() throws PlatoException, IOException {
PlanParser parser = new PlanParser();
InputStream in = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("plans/Digital_Preservation_of_Video_Games_DOS.xml");
File userDir = FileUtils.getUserDirectory();
File outFile = new File(userDir, "stage-statistics.csv");
Writer writer = new FileWriter(outFile);
StateChangeLogGenerator statistics = new StateChangeLogGenerator(writer, null);
List<Plan> plans = parser.importProjects(in);
for (Iterator<Plan> iter = plans.iterator(); iter.hasNext();) {
statistics.writeStatistics(iter.next());
}
statistics.endReport();
System.out.printf("Statistics written to : %s", outFile.getAbsolutePath());
}
protected EntityManager newConnection() {
// <property name="hibernate.archive.autodetection" value="class, hbm"
// />
// <property name="hibernate.connection.driver_class"
// value="com.mysql.jdbc.Driver" />
// <property name="hibernate.connection.url"
// value="jdbc:mysql://localhost:3306/platodbtest?useUnicode=true&connectionCollation=utf8_general_ci&characterSetResults=utf8&characterEncoding=UTF-8"
// />
// <property name="hibernate.connection.username" value="platotest" />
// <property name="hibernate.connection.password" value="platotest" />
//
// <property name="hibernate.hbm2ddl.auto" value="create" />
// <property name="hibernate.dialect"
// value="org.hibernate.dialect.MySQL5InnoDBDialect" />
// <property name="hibernate.show_sql" value="false" />
// <property name="hibernate.format_sql" value="true" />
// check order with new connection, this time don't recreate schema
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("hibernate.hbm2ddl.auto", "update");
properties
.put(
"hibernate.connection.url",
"jdbc:mysql://localhost:3306/platodbtest?useUnicode=true&connectionCollation=utf8_general_ci&characterSetResults=utf8&characterEncoding=UTF-8");
properties.put("hibernate.connection.username", "plato");
properties.put("hibernate.connection.password", "xxxx");
EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("testing-platoDatabase", properties);
return emFactory.createEntityManager();
}
@Ignore
@Test
public void testGenerateStatisticFromDB() throws IOException {
File userDir = FileUtils.getUserDirectory();
File outFile = new File(userDir, "statistics.csv");
System.out.printf("Statistics are written to : %s ...", outFile.getAbsolutePath());
Writer writer = new FileWriter(outFile);
PlanStatisticsGenerator statistics = new PlanStatisticsGenerator(writer, newConnection());
statistics.writeCompleteStatistics();
System.out.printf("finished writing statistics to %s", outFile.getAbsolutePath());
}
}