package com.breakersoft.plow.thrift.dao.pgsql; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import java.util.Map; import java.util.UUID; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import com.breakersoft.plow.Job; import com.breakersoft.plow.Layer; import com.breakersoft.plow.dao.AbstractDao; import com.breakersoft.plow.thrift.OutputT; import com.breakersoft.plow.thrift.dao.ThriftOutputDao; @Repository @Transactional(readOnly=true) public class ThriftOutputDaoImpl extends AbstractDao implements ThriftOutputDao { private static final ParameterizedRowMapper<OutputT> MAPPER = new ParameterizedRowMapper<OutputT>() { @Override public OutputT mapRow(ResultSet rs, int rowNum) throws SQLException { final OutputT output = new OutputT(); output.setOutputId(rs.getString("pk_output")); output.setPath(rs.getString("str_path")); output.setAttrs((Map<String, String>) rs.getObject("attrs")); return output; } }; private static final String GET = "SELECT " + "output.pk_output,"+ "output.pk_job,"+ "output.pk_layer," + "output.str_path,"+ "output.attrs " + "FROM " + "plow.output "; @Override public OutputT getOutput(UUID id) { return jdbc.queryForObject(GET + " WHERE pk_object=?", MAPPER, id); } @Override public List<OutputT> getLayerOutputs(UUID layerId) { return jdbc.query(GET + " WHERE output.pk_layer=?", MAPPER, layerId); } @Override public List<OutputT> getJobOutputs(UUID jobId) { return jdbc.query(GET + " WHERE output.pk_job=?", MAPPER, jobId); } @Override public List<OutputT> getOutputs(Layer layer) { return getLayerOutputs(layer.getLayerId()); } @Override public List<OutputT> getOutputs(Job job) { return getJobOutputs(job.getJobId()); } }