Project

General

Profile

Download (1.87 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.remote.view.oaipmh;
2

    
3
import java.util.Map;
4

    
5
import org.hibernate.envers.RevisionType;
6

    
7
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
8
import eu.etaxonomy.cdm.model.view.AuditEventRecord;
9
import eu.etaxonomy.cdm.remote.dto.oaipmh.GetRecord;
10
import eu.etaxonomy.cdm.remote.dto.oaipmh.Header;
11
import eu.etaxonomy.cdm.remote.dto.oaipmh.Metadata;
12
import eu.etaxonomy.cdm.remote.dto.oaipmh.MetadataPrefix;
13
import eu.etaxonomy.cdm.remote.dto.oaipmh.OAIPMH;
14
import eu.etaxonomy.cdm.remote.dto.oaipmh.Record;
15
import eu.etaxonomy.cdm.remote.dto.oaipmh.Status;
16
import eu.etaxonomy.cdm.remote.dto.oaipmh.Verb;
17
import eu.etaxonomy.cdm.remote.view.OaiPmhResponseView;
18

    
19
public abstract class GetRecordView extends OaiPmhResponseView {
20

    
21
    protected void constructResponse(OAIPMH oaiPmh,Map<String,Object> model) {
22
    	oaiPmh.getRequest().setVerb(Verb.GET_RECORD);
23
    	oaiPmh.getRequest().setValue((String)model.get("request"));
24
    	oaiPmh.getRequest().setMetadataPrefix((MetadataPrefix)model.get("metadataPrefix"));
25

    
26
    	GetRecord getRecord = new GetRecord();
27
    	AuditEventRecord<IdentifiableEntity> auditEventRecord = (AuditEventRecord<IdentifiableEntity>)model.get("object");
28
        Header header = (Header)mapper.map((IdentifiableEntity)auditEventRecord.getAuditableObject(), Header.class);
29
        Record record = new Record();
30
        record.setHeader(header);
31
        if(!auditEventRecord.getRevisionType().equals(RevisionType.DEL)) {
32
            Metadata metadata = new Metadata();
33
	        constructMetadata(metadata,(IdentifiableEntity)auditEventRecord.getAuditableObject());
34
            record.setMetadata(metadata);
35
        } else {
36
        	header.setStatus(Status.DELETED);
37
        }
38
     
39
        getRecord.setRecord(record);
40
	    oaiPmh.setGetRecord(getRecord);
41
    }
42

    
43
    public abstract void constructMetadata(Metadata metadata,IdentifiableEntity identifiableEntity);
44
}
(2-2/7)