source: OAIProvider/trunk/src/main/java/eu/clarin/oai/provider/impl/VerbListMetadataFormats.java @ 1910

Last change on this file since 1910 was 1910, checked in by oschonef, 12 years ago
  • remove 'cmdi' from package names
  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1package eu.clarin.oai.provider.impl;
2
3import java.util.Set;
4
5import eu.clarin.oai.provider.MetadataFormat;
6import eu.clarin.oai.provider.OAIException;
7import eu.clarin.oai.provider.ext.Argument;
8import eu.clarin.oai.provider.ext.OAIErrorCode;
9import eu.clarin.oai.provider.ext.OAIOutputStream;
10import eu.clarin.oai.provider.ext.RepositoryAdapter;
11import eu.clarin.oai.provider.ext.Verb;
12import eu.clarin.oai.provider.ext.VerbContext;
13
14final class VerbListMetadataFormats extends Verb {
15    private static final Argument[] ARGUMENTS = {
16        new ArgumentIdentifier(false)
17    };
18
19    @Override
20    public String getName() {
21        return "ListMetadataFormats";
22    }
23
24    @Override
25    public Argument[] getArguments() {
26        return ARGUMENTS;
27    }
28
29    @Override
30    public void process(VerbContext ctx) throws OAIException {
31        logger.debug("process LIST-METADATA-FORMATS");
32
33        RepositoryAdapter repository = ctx.getRepository();
34
35        Set<MetadataFormat> formats = null;
36        if (ctx.hasArgument(DefaultArguments.ARG_IDENTIFIER)) {
37            Object localId = ctx.getArgument(DefaultArguments.ARG_IDENTIFIER);
38            RecordImpl record = new RecordImpl();
39            if (repository.getRecord(record, localId, false)) {
40                formats = repository.getMetadataFormats(record);
41            } else {
42                ctx.addError(OAIErrorCode.ID_DOES_NOT_EXIST,
43                        "Record does not exist");
44            }
45            record.reset();
46        } else {
47            formats = repository.getMetadataFormats();
48        }
49        logger.debug("formats: {}", formats);
50
51        if (!ctx.hasErrors()) {
52            // render response
53            OAIOutputStream out = ctx.getOutputStream();
54            out.writeStartElement("ListMetadataFormats");
55            for (MetadataFormat format : formats) {
56                out.writeStartElement("metadataFormat");
57
58                out.writeStartElement("metadataPrefix");
59                out.writeCharacters(format.getPrefix());
60                out.writeEndElement(); // metadataPrefix element
61
62                out.writeStartElement("schema");
63                out.writeCharacters(format.getSchemaLocation());
64                out.writeEndElement(); // schema element
65
66                out.writeStartElement("metadataNamespace");
67                out.writeCharacters(format.getNamespaceURI());
68                out.writeEndElement(); // metadataNamespace element
69
70                out.writeEndElement(); // metadataFormat element
71            }
72            out.writeEndElement(); // ListMetadataFormats element
73            out.close();
74        }
75    }
76
77} // class VerbListMetadataFormats
Note: See TracBrowser for help on using the repository browser.