RigaOrdineDAOImpl.java

1
package com.popx.persistenza;
2
3
import com.popx.modello.RigaOrdineBean;
4
5
import java.sql.Connection;
6
import java.sql.PreparedStatement;
7
import java.sql.ResultSet;
8
import java.sql.SQLException;
9
import java.util.ArrayList;
10
import java.util.List;
11
import javax.sql.DataSource;
12
import java.util.logging.Level;
13
import java.util.logging.Logger;
14
15
public class RigaOrdineDAOImpl implements RigaOrdineDAO {
16
17
    private DataSource ds;
18
    private static final Logger LOGGER = Logger.getLogger(RigaOrdineDAOImpl.class.getName());
19
20
    /*@ public model boolean available;
21
      @ public invariant ds != null && available;
22
      @ represents available <- ds != null;
23
      @*/
24
25
    public RigaOrdineDAOImpl() {
26
        this.ds = DataSourceSingleton.getInstance();
27
    }
28
29
    @Override
30
    /*@ public normal_behavior
31
      @   requires rigaOrdine != null
32
      @        && rigaOrdine.getOrdineId() > 0
33
      @        && rigaOrdine.getProdottoId() != null && !rigaOrdine.getProdottoId().isEmpty()
34
      @        && rigaOrdine.getQuantity() >= 0
35
      @        && rigaOrdine.getUnitaryCost() >= 0;
36
      @   assignable \everything;
37
      @   ensures available;
38
      @*/
39
    public void addRigaOrdine(RigaOrdineBean rigaOrdine) {
40
        String query = "INSERT INTO RigaOrdine (ordine_id, prodotto_id, quantity, unitary_cost) VALUES (?, ?, ?, ?)";
41
42
        try (Connection con = ds.getConnection();
43
             PreparedStatement ps = con.prepareStatement(query)) {
44
45 1 1. addRigaOrdine : removed call to java/sql/PreparedStatement::setInt → KILLED
            ps.setInt(1, rigaOrdine.getOrdineId());
46 1 1. addRigaOrdine : removed call to java/sql/PreparedStatement::setString → KILLED
            ps.setString(2, rigaOrdine.getProdottoId());
47 1 1. addRigaOrdine : removed call to java/sql/PreparedStatement::setInt → KILLED
            ps.setInt(3, rigaOrdine.getQuantity());
48 1 1. addRigaOrdine : removed call to java/sql/PreparedStatement::setFloat → KILLED
            ps.setFloat(4, rigaOrdine.getUnitaryCost());
49
50
            ps.executeUpdate();
51
52
        } catch (SQLException e) {
53
            LOGGER.log(Level.SEVERE, "SQL error in addRigaOrdine", e);
54
        }
55
    }
56
57
    @Override
58
    /*@ public normal_behavior
59
      @   requires ordineId > 0;
60
      @   assignable \everything;
61
      @   ensures \result != null
62
      @        && (\forall int i; 0 <= i && i < \result.size();
63
      @              \result.get(i) != null
64
      @           && \result.get(i).getOrdineId() == ordineId
65
      @           && \result.get(i).getQuantity() >= 0
66
      @           && \result.get(i).getUnitaryCost() >= 0
67
      @           && \result.get(i).getProdottoId() != null
68
      @           && !\result.get(i).getProdottoId().isEmpty());
69
      @*/
70
    public List<RigaOrdineBean> getRigheOrdineByOrdineId(int ordineId) {
71
        String query = "SELECT * FROM RigaOrdine WHERE ordine_id = ?";
72
        List<RigaOrdineBean> righeOrdine = new ArrayList<>();
73
74
        try (Connection con = ds.getConnection();
75
             PreparedStatement ps = con.prepareStatement(query)) {
76
77 1 1. getRigheOrdineByOrdineId : removed call to java/sql/PreparedStatement::setInt → KILLED
            ps.setInt(1, ordineId);
78
            ResultSet rs = ps.executeQuery();
79
80 1 1. getRigheOrdineByOrdineId : negated conditional → KILLED
            while (rs.next()) {
81
                RigaOrdineBean rigaOrdine = new RigaOrdineBean();
82 1 1. getRigheOrdineByOrdineId : removed call to com/popx/modello/RigaOrdineBean::setOrdineId → KILLED
                rigaOrdine.setOrdineId(rs.getInt("ordine_id"));
83 1 1. getRigheOrdineByOrdineId : removed call to com/popx/modello/RigaOrdineBean::setProdottoId → KILLED
                rigaOrdine.setProdottoId(rs.getString("prodotto_id"));
84 1 1. getRigheOrdineByOrdineId : removed call to com/popx/modello/RigaOrdineBean::setQuantity → KILLED
                rigaOrdine.setQuantity(rs.getInt("quantity"));
85 1 1. getRigheOrdineByOrdineId : removed call to com/popx/modello/RigaOrdineBean::setUnitaryCost → KILLED
                rigaOrdine.setUnitaryCost(rs.getFloat("unitary_cost"));
86
                righeOrdine.add(rigaOrdine);
87
            }
88
89
        } catch (SQLException e) {
90
            LOGGER.log(Level.SEVERE, "SQL error in getRigheOrdineByOrdineId", e);
91
        }
92
93 1 1. getRigheOrdineByOrdineId : replaced return value with Collections.emptyList for com/popx/persistenza/RigaOrdineDAOImpl::getRigheOrdineByOrdineId → KILLED
        return righeOrdine;
94
    }
95
96
    @Override
97
    /*@ public normal_behavior
98
      @   requires rigaOrdine != null
99
      @        && rigaOrdine.getOrdineId() > 0
100
      @        && rigaOrdine.getProdottoId() != null && !rigaOrdine.getProdottoId().isEmpty()
101
      @        && rigaOrdine.getQuantity() >= 0
102
      @        && rigaOrdine.getUnitaryCost() >= 0;
103
      @   assignable \everything;
104
      @   ensures available;
105
      @*/
106
    public void updateRigaOrdine(RigaOrdineBean rigaOrdine) {
107
        String query = "UPDATE RigaOrdine SET quantity = ?, unitary_cost = ? WHERE ordine_id = ? AND prodotto_id = ?";
108
109
        try (Connection con = ds.getConnection();
110
             PreparedStatement ps = con.prepareStatement(query)) {
111
112 1 1. updateRigaOrdine : removed call to java/sql/PreparedStatement::setInt → KILLED
            ps.setInt(1, rigaOrdine.getQuantity());
113 1 1. updateRigaOrdine : removed call to java/sql/PreparedStatement::setFloat → KILLED
            ps.setFloat(2, rigaOrdine.getUnitaryCost());
114 1 1. updateRigaOrdine : removed call to java/sql/PreparedStatement::setInt → KILLED
            ps.setInt(3, rigaOrdine.getOrdineId());
115 1 1. updateRigaOrdine : removed call to java/sql/PreparedStatement::setString → KILLED
            ps.setString(4, rigaOrdine.getProdottoId());
116
117
            ps.executeUpdate();
118
119
        } catch (SQLException e) {
120
            LOGGER.log(Level.SEVERE, "SQL error in updateRigaOrdine", e);
121
        }
122
    }
123
124
    @Override
125
    /*@ public normal_behavior
126
      @   requires ordineId > 0
127
      @        && prodottoId != null && !prodottoId.isEmpty();
128
      @   assignable \everything;
129
      @   ensures available;
130
      @*/
131
    public void deleteRigaOrdine(int ordineId, String prodottoId) {
132
        String query = "DELETE FROM RigaOrdine WHERE ordine_id = ? AND prodotto_id = ?";
133
134
        try (Connection con = ds.getConnection();
135
             PreparedStatement ps = con.prepareStatement(query)) {
136
137 1 1. deleteRigaOrdine : removed call to java/sql/PreparedStatement::setInt → KILLED
            ps.setInt(1, ordineId);
138 1 1. deleteRigaOrdine : removed call to java/sql/PreparedStatement::setString → KILLED
            ps.setString(2, prodottoId);
139
140
            ps.executeUpdate();
141
142
        } catch (SQLException e) {
143
            LOGGER.log(Level.SEVERE, "SQL error in deleteRigaOrdine", e);
144
        }
145
    }
146
}

Mutations

45

1.1
Location : addRigaOrdine
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to java/sql/PreparedStatement::setInt → KILLED

46

1.1
Location : addRigaOrdine
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to java/sql/PreparedStatement::setString → KILLED

47

1.1
Location : addRigaOrdine
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to java/sql/PreparedStatement::setInt → KILLED

48

1.1
Location : addRigaOrdine
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to java/sql/PreparedStatement::setFloat → KILLED

77

1.1
Location : getRigheOrdineByOrdineId
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to java/sql/PreparedStatement::setInt → KILLED

80

1.1
Location : getRigheOrdineByOrdineId
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
negated conditional → KILLED

82

1.1
Location : getRigheOrdineByOrdineId
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to com/popx/modello/RigaOrdineBean::setOrdineId → KILLED

83

1.1
Location : getRigheOrdineByOrdineId
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to com/popx/modello/RigaOrdineBean::setProdottoId → KILLED

84

1.1
Location : getRigheOrdineByOrdineId
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to com/popx/modello/RigaOrdineBean::setQuantity → KILLED

85

1.1
Location : getRigheOrdineByOrdineId
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to com/popx/modello/RigaOrdineBean::setUnitaryCost → KILLED

93

1.1
Location : getRigheOrdineByOrdineId
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
replaced return value with Collections.emptyList for com/popx/persistenza/RigaOrdineDAOImpl::getRigheOrdineByOrdineId → KILLED

112

1.1
Location : updateRigaOrdine
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to java/sql/PreparedStatement::setInt → KILLED

113

1.1
Location : updateRigaOrdine
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to java/sql/PreparedStatement::setFloat → KILLED

114

1.1
Location : updateRigaOrdine
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to java/sql/PreparedStatement::setInt → KILLED

115

1.1
Location : updateRigaOrdine
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to java/sql/PreparedStatement::setString → KILLED

137

1.1
Location : deleteRigaOrdine
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to java/sql/PreparedStatement::setInt → KILLED

138

1.1
Location : deleteRigaOrdine
Killed by : com.popx.integration.persistenza.RigaOrdineDAOImplTest.[engine:junit-jupiter]/[class:com.popx.integration.persistenza.RigaOrdineDAOImplTest]
removed call to java/sql/PreparedStatement::setString → KILLED

Active mutators

Tests examined


Report generated by PIT 1.15.2