Project

General

Profile

1
package eu.dnetlib.openaire.user.registeredService;
2

    
3
import eu.dnetlib.openaire.user.pojos.RegisteredService;
4
import eu.dnetlib.openaire.user.store.DataSourceConnector;
5
import eu.dnetlib.openaire.user.store.Statement;
6
import org.springframework.beans.factory.annotation.Autowired;
7
import org.springframework.stereotype.Component;
8

    
9
import java.sql.Connection;
10
import java.sql.PreparedStatement;
11
import java.sql.ResultSet;
12
import java.sql.SQLException;
13
import java.util.ArrayList;
14
import java.util.List;
15

    
16
@Component(value = "registeredServiceSQL")
17
public class RegisteredServiceSQL implements RegisteredServiceDao {
18

    
19
    @Autowired
20
    DataSourceConnector dataSourceConnector;
21

    
22
    private final static String INSERT = "INSERT INTO registered_service (" +
23
            "aai_id, " +
24
            "owner, " +
25
            "name, " +
26
            "creation_date " +
27
            ") VALUES (?,?,?,?)";
28

    
29
    private final static String UPDATE = "UPDATE registered_service SET " +
30
            "id = ?, " +
31
            "aai_id = ?, " +
32
            "owner = ?, " +
33
            "name = ?, " +
34
            "creation_date = ?, " +
35
            "WHERE id = ?";
36

    
37
    private final static String DELETE = "DELETE FROM registered_service WHERE id = ?";
38

    
39
    private final static String SELECT = "SELECT * FROM registered_service WHERE owner = ?";
40

    
41
    @Override
42
    public int insertRegisteredService(final RegisteredService registeredService)
43
            throws SQLException {
44
        return executeUpdate(INSERT, new Statement.Initializer() {
45
            @Override
46
            public void prepare(PreparedStatement stmt)
47
                    throws SQLException {
48
                stmt.setString(1, registeredService.getAai_id());
49
                stmt.setString(2, registeredService.getOwner());
50
                stmt.setString(3, registeredService.getName());
51
                stmt.setTimestamp(4, registeredService.getDate());
52
            }
53
        });
54
    }
55

    
56
    @Override
57
    public boolean update(final RegisteredService registeredService) throws SQLException {
58
        return executeUpdate(UPDATE, new Statement.Initializer() {
59
            @Override
60
            public void prepare(PreparedStatement stmt)
61
                    throws SQLException {
62
                stmt.setString(2, registeredService.getAai_id());
63
                stmt.setString(3, registeredService.getOwner());
64
                stmt.setString(4, registeredService.getName());
65
                stmt.setTimestamp(5, registeredService.getDate());
66
                stmt.setString(1, registeredService.getId());
67
            }
68
        }) > 0;
69
    }
70

    
71
    public boolean delete(final String id)
72
            throws SQLException {
73
        return executeUpdate(DELETE, new Statement.Initializer() {
74
            @Override
75
            public void prepare(PreparedStatement stmt)
76
                    throws SQLException {
77
                stmt.setString(1, id);
78
            }
79
        }) > 0;
80
    }
81

    
82
    @Override
83
    public RegisteredService fetchRegisteredServiceById(final int id) throws SQLException {
84
        System.out.println("SELECT * FROM registered_service WHERE id = " +id);
85

    
86
        List<RegisteredService> registeredServices = executeQuery("SELECT * FROM registered_service WHERE id = ? ", new Statement.Initializer() {
87
            @Override
88
            public void prepare(PreparedStatement stmt) throws SQLException {
89
                stmt.setInt(1, id);
90
            }
91
        });
92
        System.out.println("HELLO");
93
        System.out.println("Regitered service " +registeredServices);
94

    
95
        if (registeredServices.isEmpty()) {
96
            return null;
97
        }
98

    
99

    
100
        return registeredServices.get(0);
101
    }
102

    
103
    @Override
104
    public List<RegisteredService> fetchAllRegisteredServicesByOwner(final String owner) throws SQLException {
105
        List<RegisteredService> registeredServices = executeQuery(SELECT, new Statement.Initializer() {
106
            @Override
107
            public void prepare(PreparedStatement stmt) throws SQLException {
108
                stmt.setString(1, owner);
109
            }
110
        });
111
        return registeredServices;
112
    }
113

    
114

    
115
    protected List<RegisteredService> executeQuery(String sql, Statement.Initializer init)
116
            throws SQLException {
117
        Connection connection = dataSourceConnector.getDatasource().getConnection();
118

    
119
        try {
120
            PreparedStatement stmt = connection.prepareStatement(sql);
121
            init.prepare(stmt);
122

    
123
            ResultSet set = stmt.executeQuery();
124

    
125
            try {
126
                List<RegisteredService> results = new ArrayList<>();
127

    
128
                while (set.next())
129
                    results.add(fromResultSet(set));
130

    
131
                return results;
132
            } finally {
133
                set.close();
134
            }
135
        } finally {
136
            connection.close();
137
        }
138
    }
139

    
140
    protected List<RegisteredService> executeQuery(String sql)
141
            throws SQLException {
142
        return executeQuery(sql, Statement.emptyInitializer());
143
    }
144

    
145
    protected RegisteredService fromResultSet(ResultSet set) throws SQLException {
146
        RegisteredService registeredService = new RegisteredService();
147

    
148
        registeredService.setId(set.getString("id"));
149
        registeredService.setAai_id(set.getString("aai_id"));
150
        registeredService.setOwner(set.getString("owner"));
151
        registeredService.setName(set.getString("name"));
152
        registeredService.setDate(set.getTimestamp("creation_date"));
153

    
154
        return registeredService;
155
    }
156

    
157
    protected int executeUpdate(String sql, Statement.Initializer init)
158
            throws SQLException {
159
        Connection connection = dataSourceConnector.getDatasource().getConnection();
160
        try {
161
            PreparedStatement stmt = connection.prepareStatement(sql);
162
            init.prepare(stmt);
163
            return stmt.executeUpdate();
164
        } finally {
165
            connection.close();
166
        }
167
    }
168

    
169
}
(3-3/3)