Project

General

Profile

« Previous | Next » 

Revision 34139

sql search

View differences:

modules/dnet-information-service/trunk/src/main/java/eu/dnetlib/enabling/is/jdbc/DatabaseUtils.java
1
package eu.dnetlib.enabling.is.jdbc;
2

  
3
import java.util.List;
4

  
5
import org.springframework.beans.factory.annotation.Required;
6
import org.springframework.jdbc.core.JdbcTemplate;
7

  
8
public class DatabaseUtils {
9

  
10
	private JdbcTemplate jdbcTemplate;
11

  
12
	public List<String> search(final String sql) {
13
		return jdbcTemplate.query(sql, new JsonRowMapper());
14
	}
15

  
16
	public JdbcTemplate getJdbcTemplate() {
17
		return jdbcTemplate;
18
	}
19

  
20
	@Required
21
	public void setJdbcTemplate(final JdbcTemplate jdbcTemplate) {
22
		this.jdbcTemplate = jdbcTemplate;
23
	}
24
}
modules/dnet-information-service/trunk/src/main/java/eu/dnetlib/enabling/is/jdbc/JsonRowMapper.java
1
package eu.dnetlib.enabling.is.jdbc;
2

  
3
import java.io.IOException;
4
import java.io.StringWriter;
5
import java.sql.Array;
6
import java.sql.ResultSet;
7
import java.sql.ResultSetMetaData;
8
import java.sql.SQLException;
9

  
10
import org.springframework.jdbc.core.RowMapper;
11

  
12
import com.google.gson.stream.JsonWriter;
13

  
14
public class JsonRowMapper implements RowMapper<String> {
15

  
16
	@Override
17
	public String mapRow(final ResultSet rs, final int pos) throws SQLException {
18
		final ResultSetMetaData rsMetadata = rs.getMetaData();
19

  
20
		final StringWriter sw = new StringWriter();
21
		try {
22
			final JsonWriter writer = new JsonWriter(sw);
23
			writer.beginObject();
24
			for (int i = 1; i <= rsMetadata.getColumnCount(); i++) {
25
				writer.name(rsMetadata.getColumnLabel(i));
26
				writeValue(writer, rs.getObject(i));
27
			}
28
			writer.endObject();
29
			writer.close();
30
		} catch (IOException e) {
31
			throw new SQLException("Error during Json conversion", e);
32
		}
33
		return sw.toString();
34
	}
35

  
36
	private void writeValue(final JsonWriter writer, final Object object) throws IOException, SQLException {
37
		if (object == null) {
38
			return;
39
		} else if (object instanceof Boolean) {
40
			writer.value((Boolean) object);
41
		} else if (object instanceof Number) {
42
			writer.value((Number) object);
43
		} else if (object instanceof Array) {
44
			writer.beginArray();
45
			for (Object o : (Object[]) ((Array) object).getArray()) {
46
				writeValue(writer, o);
47
			}
48
			writer.endArray();
49
		} else {
50
			writer.value(object.toString());
51
		}
52
	}
53
}
modules/dnet-information-service/trunk/src/main/java/eu/dnetlib/enabling/is/rmi/InformationService.java
10 10
@WebService(targetNamespace = "http://services.dnetlib.eu/")
11 11
public interface InformationService extends BaseService {
12 12

  
13
	public List<String> search(@WebParam(name = "sql") String sql) throws InformationServiceException;
14

  
13 15
	public List<DnetService> listServices() throws InformationServiceException;
14 16

  
15 17
	public String registerService(@WebParam(name = "service") DnetService service) throws InformationServiceException;
modules/dnet-information-service/trunk/src/main/java/eu/dnetlib/enabling/is/InformationServiceImpl.java
14 14
import org.dom4j.io.SAXReader;
15 15

  
16 16
import eu.dnetlib.enabling.is.dao.DnetServiceDao;
17
import eu.dnetlib.enabling.is.jdbc.DatabaseUtils;
17 18
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
18 19
import eu.dnetlib.enabling.is.rmi.DnetService;
19 20
import eu.dnetlib.enabling.is.rmi.InformationService;
......
29 30
	private DnetServiceDao dnetServiceDao;
30 31

  
31 32
	@Resource
33
	private DatabaseUtils dbUtils;
34

  
35
	@Resource
32 36
	private UniqueServiceLocator serviceLocator;
33 37

  
34 38
	@PostConstruct
......
75 79

  
76 80
		return id;
77 81
	}
82

  
83
	@Override
84
	public List<String> search(final String sql) throws InformationServiceException {
85
		return dbUtils.search(sql);
86
	}
78 87
}
modules/dnet-information-service/trunk/src/main/resources/eu/dnetlib/enabling/is/applicationContext-is-database.xml
11 11
                            http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
12 12
                            http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd">
13 13

  
14

  
14
	<!-- Information Service Datasource -->
15 15
	<bean id="isDataSource"
16 16
		class="org.springframework.jdbc.datasource.DriverManagerDataSource"
17 17
		p:driverClassName="${dnet.is.database.driver}" p:url="${dnet.is.database.url}"
......
29 29
			</props>
30 30
		</property>
31 31
	</bean>
32
	
33
	<!--DatabaseUtils using jdbc -->
34
	<bean id="isJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
35
		p:dataSource-ref="isDataSource" />
32 36

  
37
	<bean id="isDatabaseUtils" class="eu.dnetlib.enabling.is.jdbc.DatabaseUtils"
38
		p:jdbcTemplate-ref="isJdbcTemplate" />
39

  
40
	<!-- Daos -->
33 41
	<bean id="dnetServiceDAO" class="eu.dnetlib.enabling.is.dao.DnetServiceDaoImpl"
34 42
		p:sessionFactory-ref="isSessionFactory" />
35 43

  

Also available in: Unified diff