Revision 36089
Added by Antonis Lempesis about 9 years ago
PublicationDAO.java | ||
---|---|---|
1 | 1 |
package eu.dnetlib.goldoa.service.dao; |
2 | 2 |
|
3 | 3 |
import eu.dnetlib.goldoa.domain.*; |
4 |
import eu.dnetlib.goldoa.service.PersonManagerImpl; |
|
4 | 5 |
import org.springframework.beans.factory.annotation.Autowired; |
5 | 6 |
import org.springframework.jdbc.core.BatchPreparedStatementSetter; |
6 | 7 |
import org.springframework.jdbc.core.JdbcTemplate; |
... | ... | |
29 | 30 |
"group by p.id, title, languages, subjects, doi, source, date, p.type, journal, publisher, repository, acceptancedate;"; |
30 | 31 |
|
31 | 32 |
private static final String INSERT_PUBLICATION_AFFILIATIONS = |
32 |
"with aff as (insert into affiliation (person, organization, startdate, enddate, department) values (?, ?, ?, ?, ?) returning id as affid) insert into publication_affiliation (publication, affiliation) select ?, affid from aff";
|
|
33 |
"with aff as (insert into affiliation (id, person, organization, startdate, enddate, department) values (?, ?, ?, ?, ?, ?) returning id as affid) insert into publication_affiliation (publication, affiliation) select ?, affid from aff";
|
|
33 | 34 |
|
34 | 35 |
private static final String UPDATE_PUBLICATION_AFFILIATIONS = |
35 | 36 |
"with aff as (select id from affiliation where person=? and organization=?) insert into publication_affiliation (publication, affiliation) select ?, aff.id from aff"; |
... | ... | |
124 | 125 |
for (Affiliation affiliation:publication.getAuthors()) { |
125 | 126 |
if (jdbcTemplate.update(UPDATE_PUBLICATION_AFFILIATIONS, new String[] {affiliation.getPerson().getId(), affiliation.getOrganization() != null? affiliation.getOrganization().getId(): null, publication.getId()}, new int[] {Types.VARCHAR, Types.VARCHAR, Types.VARCHAR}) == 0) { |
126 | 127 |
jdbcTemplate.update(INSERT_PUBLICATION_AFFILIATIONS, |
127 |
new Object[] {affiliation.getPerson().getId(), affiliation.getOrganization() != null?affiliation.getOrganization().getId():null, affiliation.getStart(), affiliation.getEnd(), affiliation.getDepartment(), publication.getId()}, |
|
128 |
new int[] {Types.VARCHAR, Types.VARCHAR, Types.TIMESTAMP, Types.TIMESTAMP, Types.VARCHAR, Types.VARCHAR}); |
|
128 |
new Object[] {PersonManagerImpl.generateId(affiliation), affiliation.getPerson().getId(), affiliation.getOrganization() != null?affiliation.getOrganization().getId():null, affiliation.getStart(), affiliation.getEnd(), affiliation.getDepartment(), publication.getId()},
|
|
129 |
new int[] {Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.TIMESTAMP, Types.TIMESTAMP, Types.VARCHAR, Types.VARCHAR});
|
|
129 | 130 |
} |
130 | 131 |
} |
131 | 132 |
} |
Also available in: Unified diff
Affiliation id is no longer a sequence. Publication affiliations are now saved correctly