1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.opencastproject.oaipmh.persistence.impl;
22
23 import org.opencastproject.mediapackage.MediaPackageElementFlavor;
24 import org.opencastproject.mediapackage.MediaPackageElements;
25 import org.opencastproject.metadata.dublincore.DublinCoreCatalog;
26 import org.opencastproject.metadata.dublincore.DublinCoreXmlFormat;
27 import org.opencastproject.oaipmh.persistence.OaiPmhDatabaseException;
28 import org.opencastproject.oaipmh.persistence.OaiPmhElementEntity;
29 import org.opencastproject.oaipmh.persistence.SearchResultElementItem;
30
31
32 public class SearchResultElementItemImpl implements SearchResultElementItem {
33
34 private final String elementType;
35 private final String flavor;
36 private final String xml;
37
38 public SearchResultElementItemImpl(final OaiPmhElementEntity entity) {
39 this(entity.getElementType(), entity.getFlavor(), entity.getXml());
40 }
41
42 public SearchResultElementItemImpl(final String elementType, final String flavor, final String xml) {
43 this.elementType = elementType;
44 this.flavor = flavor;
45 this.xml = xml;
46 }
47
48 @Override
49 public String getType() {
50 return elementType.toLowerCase();
51 }
52
53 @Override
54 public String getFlavor() {
55 return flavor;
56 }
57
58 @Override
59 public String getXml() {
60 return xml;
61 }
62
63 @Override
64 public boolean isEpisodeDublinCore() {
65 return MediaPackageElementFlavor.parseFlavor(getFlavor()).matches(MediaPackageElements.EPISODE);
66 }
67
68 @Override
69 public boolean isSeriesDublinCore() {
70 return MediaPackageElementFlavor.parseFlavor(getFlavor()).matches(MediaPackageElements.SERIES);
71 }
72
73 @Override
74 public DublinCoreCatalog asDublinCore() throws OaiPmhDatabaseException {
75 if (isEpisodeDublinCore() || isSeriesDublinCore())
76 try {
77 return DublinCoreXmlFormat.read(getXml());
78 } catch (Exception ex) {
79 throw new OaiPmhDatabaseException("Can not parse dublincore catalog", ex);
80 }
81
82 throw new OaiPmhDatabaseException("This element isn't a dublincore catalog");
83 }
84 }