Revision 34139
Added by Michele Artini over 9 years ago
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
sql search