Project

General

Profile

« Previous | Next » 

Revision 36089

Affiliation id is no longer a sequence. Publication affiliations are now saved correctly

View differences:

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