RaakaAineDao - Lefteros/Tikape-smoothiearkisto GitHub Wiki
package smoothiet;
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;
public class RaakaAineDao implements Dao<RaakaAine, Integer> {
private Database database;
public RaakaAineDao(Database database) {
this.database = database;
}
@Override
public RaakaAine findOne(Integer key) throws Exception {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public List<RaakaAine> findAll() throws Exception {
List<RaakaAine> RaakaAines = new ArrayList<>();
try (Connection conn = database.getConnection();
ResultSet result = conn.prepareStatement("SELECT id, nimi FROM RaakaAine").executeQuery()) {
while (result.next()) {
RaakaAines.add(new RaakaAine(result.getInt("id"), result.getString("nimi")));
}
}
return RaakaAines;
}
public List<RaakaAine> findRaakaAineet(Integer id) throws Exception {
String query = "SELECT raakaAine.nimi, raakaAine.id FROM AnnosRaakaAine, raakaAine, annos"
+ " WHERE annos.id = AnnosRaakaAine.annos_id"
+ " AND raakaAine.id = AnnosRaakaAine.raaka_aine_id"
+ " AND annos.id = ?";
String query1 = "SELECT annosraakaAine.maara, annosraakaAine.ohje, annosraakaAine.jarjestys FROM AnnosRaakaAine, raakaAine, annos"
+ " WHERE annos.id = AnnosRaakaAine.annos_id"
+ " AND raakaAine.id = AnnosRaakaAine.raaka_aine_id"
+ " AND annos.id = ?";
List<RaakaAine> RaakaAines = new ArrayList<>();
try (Connection conn = database.getConnection()) {
PreparedStatement stmt = conn.prepareStatement(query);
stmt.setInt(1, id);
ResultSet result = stmt.executeQuery();
PreparedStatement stmt1 = conn.prepareStatement(query1);
stmt1.setInt(1, id);
ResultSet result1 = stmt1.executeQuery();
while (result.next() && result1.next()) {
RaakaAines.add(new RaakaAine(result.getInt("id"), result.getString("nimi"), result1.getString("ohje"), result1.getString("maara"), result1.getInt("jarjestys")));
}
}
return RaakaAines;
}
public int findMaara(Integer id) throws Exception {
String query = "SELECT COUNT (DISTINCT annos.id) as total FROM AnnosRaakaAine, raakaAine, annos"
+ " WHERE annos.id = AnnosRaakaAine.annos_id"
+ " AND raakaAine.id = AnnosRaakaAine.raaka_aine_id"
+ " AND raakaAine.id = ?";
int uusi = 0;
try (Connection conn = database.getConnection()) {
PreparedStatement stmt = conn.prepareStatement(query);
stmt.setInt(1, id);
ResultSet result = stmt.executeQuery();
uusi = result.getInt("total");
}
return uusi;
}
public String findAlaMuuta(Integer id) throws Exception {
String query = "SELECT annosRaakaAine.maara FROM annosRaakaAine, annos, raakaAine"
+ " WHERE annos.id = AnnosRaakaAine.annos_id"
+ " AND raakaAine.id = AnnosRaakaAine.raaka_aine_id"
+ " AND annos.id = ?";
String uusi = new String();
try (Connection conn = database.getConnection()) {
PreparedStatement stmt = conn.prepareStatement(query);
ResultSet result = stmt.executeQuery();
}
return uusi;
}
public List<RaakaAine> findAllNotAssigned() throws Exception {
List<RaakaAine> RaakaAines = new ArrayList<>();
try (Connection conn = database.getConnection();
ResultSet result = conn.prepareStatement("SELECT id, nimi FROM RaakaAine WHERE id NOT IN (SELECT RaakaAine_id FROM RaakaAineAssignment)").executeQuery()) {
while (result.next()) {
RaakaAines.add(new RaakaAine(result.getInt("id"), result.getString("nimi")));
}
}
return RaakaAines;
}
@Override
public RaakaAine saveOrUpdate(RaakaAine object) throws Exception {
if (findBynimi(object.getNimi()) != null) {
return null;
}
RaakaAine bynimi = findBynimi(object.getNimi());
if (bynimi != null) {
return bynimi;
}
try (Connection conn = database.getConnection()) {
PreparedStatement stmt = conn.prepareStatement("INSERT INTO RaakaAine (nimi) VALUES (?)");
stmt.setString(1, object.getNimi());
stmt.executeUpdate();
}
return findBynimi(object.getNimi());
}
private RaakaAine findBynimi(String nimi) throws Exception {
try (Connection conn = database.getConnection()) {
PreparedStatement stmt = conn.prepareStatement("SELECT id, nimi FROM RaakaAine WHERE nimi = ?");
stmt.setString(1, nimi);
ResultSet result = stmt.executeQuery();
if (!result.next()) {
return null;
}
return new RaakaAine(result.getInt("id"), result.getString("nimi"));
}
}
private Integer findByAnnosnimi(String nimi) throws Exception {
try (Connection conn = database.getConnection()) {
PreparedStatement stmt = conn.prepareStatement("SELECT id FROM annos WHERE nimi = ?");
stmt.setString(1, "pläjäys");
ResultSet result = stmt.executeQuery();
if (!result.next()) {
return null;
}
return result.getInt("id");
}
}
private Integer findByAinenimi(String nimi) throws Exception {
try (Connection conn = database.getConnection()) {
PreparedStatement stmt = conn.prepareStatement("SELECT id FROM raakaAine WHERE nimi = ?");
stmt.setString(1, "omena");
ResultSet result = stmt.executeQuery();
if (!result.next()) {
return null;
}
return result.getInt("id");
}
}
@Override
public void delete(Integer key) throws SQLException {
throw new UnsupportedOperationException("Not supported yet.");
}
public List<RaakaAine> findLkm() throws Exception {
String query = "SELECT COUNT (DISTINCT annos.id) as total FROM AnnosRaakaAine, raakaAine, annos"
+ " WHERE annos.id = AnnosRaakaAine.annos_id"
+ " AND raakaAine.id = AnnosRaakaAine.raaka_aine_id"
+ " AND raakaAine.id = ?";
String query1 = "SELECT raakaAine.nimi FROM raakaAine"
+ " WHERE raakaAine.id = ?";
List<RaakaAine> aineet = new ArrayList<>();
try (Connection conn = database.getConnection()) {
for (int i = 1; i < findAll().size() + 1; i++) {
PreparedStatement stmt = conn.prepareStatement(query);
stmt.setInt(1, i);
ResultSet result = stmt.executeQuery();
PreparedStatement stmt1 = conn.prepareStatement(query1);
stmt1.setInt(1, i);
ResultSet result1 = stmt1.executeQuery();
while (result.next() && result1.next()) {
aineet.add(new RaakaAine(i, result1.getString("nimi"), result.getInt("total")));
}
}
}
return aineet;
}
public void saveOrUpdate1(RaakaAine raakaAine) throws Exception {
Integer annosId = Integer.parseInt(raakaAine.getSmoothie());
Integer aineId = Integer.parseInt(raakaAine.getNimi());
try (Connection conn = database.getConnection()) {
PreparedStatement stmt = conn.prepareStatement("INSERT INTO annosRaakaAine (raaka_aine_id, annos_id, jarjestys, maara, ohje) VALUES (?, ?, ?, ?, ?)");
stmt.setInt(1, aineId);
stmt.setInt(2, annosId);
stmt.setInt(3, raakaAine.getJarjestys());
stmt.setString(4, raakaAine.getMaara());
stmt.setString(5, raakaAine.getOhje());
stmt.executeUpdate();
}
}
}