package pl.edu.agh.dao; import java.util.List; import java.util.Random; import org.hibernate.Query; import org.springframework.stereotype.Component; import pl.edu.agh.model.Way; @Component public class TrafficGenerator extends AbstractDao { private Random rand = new Random(); public void generate(List<Way> ways) { Double currentSpeed = rand.nextDouble() * 90; for (Way way : ways) { Query query = getCurrentSession().createSQLQuery("select * from traffic_info where way_gid = :way_id"); query.setInteger("way_id", way.getGid()); Object result = query.uniqueResult(); if (result == null) { boolean change = rand.nextInt(10) > 6; if (change) currentSpeed = rand.nextDouble() * 90; String par = way.isOneWay() ? "null" : ":rev_speed"; Query insertingQuery = getCurrentSession() .createSQLQuery( "insert into traffic_info(way_gid, direct_way_speed, reverse_way_speed) values (:way_id, :speed, " + par + ")"); insertingQuery.setInteger("way_id", way.getGid()); insertingQuery.setDouble("speed", currentSpeed); if (!way.isOneWay()) { insertingQuery.setParameter("rev_speed", currentSpeed); } insertingQuery.executeUpdate(); } } } }