package org.pegadi.server.publication;
import org.pegadi.model.Disp;
import org.pegadi.server.DisposalServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DisposalServerImpl implements DisposalServer{
private JdbcTemplate template;
private DisposalRowMapper mapper;
private final Logger log = LoggerFactory.getLogger(getClass());
public DisposalServerImpl() {
mapper = new DisposalRowMapper();
}
public void setDataSource(DataSource dataSource) {
template = new JdbcTemplate(dataSource);
}
public Disp getDisposalByID(int ID) {
return template.queryForObject("SELECT * FROM disp WHERE id=?", mapper, ID);
}
public Disp getDisposalByPublicationID(int publicationID) {
try {
return template.queryForObject("SELECT * FROM disp WHERE publicationid=?", mapper, publicationID);
} catch (EmptyResultDataAccessException ee) {
return null;
}
}
public Disp createNewDisposal(int publicationID) {
template.update("INSERT INTO disp (publicationid) VALUES(?)", publicationID);
return getDisposalByPublicationID(publicationID);
}
private class DisposalRowMapper implements ParameterizedRowMapper<Disp> {
public Disp mapRow(ResultSet rs, int rowNum) throws SQLException {
Disp disp = new Disp();
disp.setId(rs.getInt("id"));
disp.setPublicationId(rs.getInt("publicationid"));
return disp;
}
}
}