Project

General

Profile

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

    
3
import java.util.List;
4
import java.util.Map;
5

    
6
import org.hibernate.envers.RevisionType;
7
import org.joda.time.DateTime;
8

    
9
import eu.etaxonomy.cdm.api.service.pager.Pager;
10
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
11
import eu.etaxonomy.cdm.model.view.AuditEventRecord;
12
import eu.etaxonomy.cdm.remote.dto.oaipmh.Header;
13
import eu.etaxonomy.cdm.remote.dto.oaipmh.ListRecords;
14
import eu.etaxonomy.cdm.remote.dto.oaipmh.Metadata;
15
import eu.etaxonomy.cdm.remote.dto.oaipmh.MetadataPrefix;
16
import eu.etaxonomy.cdm.remote.dto.oaipmh.OAIPMH;
17
import eu.etaxonomy.cdm.remote.dto.oaipmh.Record;
18
import eu.etaxonomy.cdm.remote.dto.oaipmh.ResumptionToken;
19
import eu.etaxonomy.cdm.remote.dto.oaipmh.SetSpec;
20
import eu.etaxonomy.cdm.remote.dto.oaipmh.Status;
21
import eu.etaxonomy.cdm.remote.dto.oaipmh.Verb;
22
import eu.etaxonomy.cdm.remote.view.OaiPmhResponseView;
23

    
24
public abstract class ListRecordsView extends OaiPmhResponseView {
25

    
26
    protected void constructResponse(OAIPMH oaiPmh,Map<String,Object> model) {
27
    	oaiPmh.getRequest().setVerb(Verb.LIST_RECORDS);
28
    	oaiPmh.getRequest().setValue((String)model.get("request"));
29
    	oaiPmh.getRequest().setMetadataPrefix((MetadataPrefix)model.get("metadataPrefix"));
30

    
31
        if(model.containsKey("from")) {
32
            oaiPmh.getRequest().setFrom((DateTime)model.get("from"));
33
        }
34

    
35
        if(model.containsKey("until")) {
36
            oaiPmh.getRequest().setUntil((DateTime)model.get("until"));
37
        }
38

    
39
        if(model.containsKey("set")) {
40
            oaiPmh.getRequest().setSet((SetSpec)model.get("set"));
41
        }
42
        
43
        ListRecords listRecords = new ListRecords();
44
        
45

    
46
        if(model.containsKey("pager")){
47
			for(AuditEventRecord auditEventRecord : ((Pager<AuditEventRecord>)model.get("pager")).getRecords()) {
48
	        	Record record = new Record();
49
	        	Header header = (Header)mapper.map(auditEventRecord.getAuditableObject(), Header.class);
50
		        record.setHeader(header);
51
		        if(!auditEventRecord.getRevisionType().equals(RevisionType.DEL)) {
52
		            Metadata metadata = new Metadata();
53
			        constructMetadata(metadata,(IdentifiableEntity)auditEventRecord.getAuditableObject());
54
		            record.setMetadata(metadata);
55
		        } else {
56
		        	header.setStatus(Status.DELETED);
57
		        }
58
		        listRecords.getRecord().add(record);
59
	        }
60

    
61
			if(model.containsKey("resumptionToken")) {
62
				listRecords.setResumptionToken((ResumptionToken)model.get("resumptionToken"));
63
			}
64
			
65
        } else if(model.containsKey("entitylist")){
66
			for( IdentifiableEntity idetifiableEntity : ((List<IdentifiableEntity>)model.get("entitylist"))) {
67
	        	Record record = new Record();
68
	        	Metadata metadata = new Metadata();
69
		        constructMetadata(metadata, idetifiableEntity);
70
	            record.setMetadata(metadata);
71
		        listRecords.getRecord().add(record);
72
	        }
73
        }
74

    
75
        
76
        oaiPmh.setListRecords(listRecords);
77
    }
78

    
79
    public abstract void constructMetadata(Metadata metadata,IdentifiableEntity identifiableEntity);
80
}
(6-6/7)