Search in sources :

Example 21 with EName

use of org.opencastproject.mediapackage.EName in project opencast by opencast.

the class DublinCoreCatalog method clone.

@Override
public Object clone() {
    DublinCoreCatalog clone = new DublinCoreCatalog();
    clone.setIdentifier(getIdentifier());
    clone.setFlavor(getFlavor());
    clone.setSize(getSize());
    clone.setChecksum(getChecksum());
    // safe, since XmlNamespaceContext is immutable
    clone.bindings = bindings;
    clone.rootTag = rootTag;
    for (Map.Entry<EName, List<CatalogEntry>> entry : data.entrySet()) {
        EName elmName = entry.getKey();
        EName elmNameCopy = new EName(elmName.getNamespaceURI(), elmName.getLocalName());
        List<CatalogEntry> elmsCopy = new ArrayList<CatalogEntry>();
        for (CatalogEntry catalogEntry : entry.getValue()) {
            elmsCopy.add(new CatalogEntry(catalogEntry.getEName(), catalogEntry.getValue(), catalogEntry.getAttributes()));
        }
        clone.data.put(elmNameCopy, elmsCopy);
    }
    return clone;
}
Also used : EName(org.opencastproject.mediapackage.EName) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) Map(java.util.Map)

Example 22 with EName

use of org.opencastproject.mediapackage.EName in project opencast by opencast.

the class DublinCoreUtil method calculateChecksum.

/**
 * Calculate an MD5 checksum for a DublinCore catalog.
 */
public static Checksum calculateChecksum(DublinCoreCatalog dc) {
    // Use 0 as a word separator. This is safe since none of the UTF-8 code points
    // except \u0000 contains a null byte when converting to a byte array.
    final byte[] sep = new byte[] { 0 };
    final MessageDigest md = // consider all DublinCore properties
    $(getPropertiesSorted(dc)).bind(new Fn<CatalogEntry, Stream<String>>() {

        @Override
        public Stream<String> apply(CatalogEntry entry) {
            // get attributes, sorted and serialized as [name, value, name, value, ...]
            final Stream<String> attributesSorted = $(entry.getAttributes().entrySet()).sort(new Comparator<Entry<EName, String>>() {

                @Override
                public int compare(Entry<EName, String> o1, Entry<EName, String> o2) {
                    return o1.getKey().compareTo(o2.getKey());
                }
            }).bind(new Fn<Entry<EName, String>, Stream<String>>() {

                @Override
                public Stream<String> apply(Entry<EName, String> attribute) {
                    return $(attribute.getKey().toString(), attribute.getValue());
                }
            });
            return $(entry.getEName().toString(), entry.getValue()).append(attributesSorted);
        }
    }).append(Opt.nul(dc.getRootTag()).map(toString)).foldl(mkMd5MessageDigest(), new Fn2<MessageDigest, String, MessageDigest>() {

        @Override
        public MessageDigest apply(MessageDigest digest, String s) {
            digest.update(s.getBytes(StandardCharsets.UTF_8));
            // add separator byte (see definition above)
            digest.update(sep);
            return digest;
        }
    });
    try {
        return Checksum.create("md5", Checksum.convertToHex(md.digest()));
    } catch (NoSuchAlgorithmException e) {
        return chuck(e);
    }
}
Also used : EName(org.opencastproject.mediapackage.EName) CatalogEntry(org.opencastproject.mediapackage.XMLCatalogImpl.CatalogEntry) Fn(com.entwinemedia.fn.Fn) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) Entry(java.util.Map.Entry) CatalogEntry(org.opencastproject.mediapackage.XMLCatalogImpl.CatalogEntry) Stream(com.entwinemedia.fn.Stream) InputStream(java.io.InputStream) MessageDigest(java.security.MessageDigest)

Example 23 with EName

use of org.opencastproject.mediapackage.EName in project opencast by opencast.

the class DublinCoreUtil method getPropertiesSorted.

/**
 * Return a sorted list of all catalog entries.
 */
public static List<CatalogEntry> getPropertiesSorted(DublinCoreCatalog dc) {
    final List<EName> properties = new ArrayList<>(dc.getProperties());
    Collections.sort(properties);
    final List<CatalogEntry> entries = new ArrayList<>();
    for (final EName property : properties) {
        Collections.addAll(entries, dc.getValues(property));
    }
    return new ImmutableListWrapper<>(entries);
}
Also used : EName(org.opencastproject.mediapackage.EName) ArrayList(java.util.ArrayList) CatalogEntry(org.opencastproject.mediapackage.XMLCatalogImpl.CatalogEntry) ImmutableListWrapper(com.entwinemedia.fn.data.ImmutableListWrapper)

Example 24 with EName

use of org.opencastproject.mediapackage.EName in project opencast by opencast.

the class DublinCoreTest method testNewInstance.

/**
 * Test method for saving the catalog.
 */
@Test
public void testNewInstance() {
    try {
        // Read the sample catalog
        FileInputStream in = new FileInputStream(catalogFile);
        DublinCoreCatalog dcSample = DublinCores.read(in);
        IOUtils.closeQuietly(in);
        // Create a new catalog and fill it with a few fields
        DublinCoreCatalog dcNew = DublinCores.mkOpencastEpisode().getCatalog();
        dcTempFile1 = testFolder.newFile();
        // Add the required fields
        dcNew.add(PROPERTY_IDENTIFIER, dcSample.getFirst(PROPERTY_IDENTIFIER));
        dcNew.add(PROPERTY_TITLE, dcSample.getFirst(PROPERTY_TITLE, DublinCore.LANGUAGE_UNDEFINED), DublinCore.LANGUAGE_UNDEFINED);
        // Add an additional field
        dcNew.add(PROPERTY_PUBLISHER, dcSample.getFirst(PROPERTY_PUBLISHER));
        // Add a null-value field
        try {
            dcNew.add(PROPERTY_CONTRIBUTOR, (String) null);
            fail();
        } catch (IllegalArgumentException ignore) {
        }
        // Add a field with an encoding scheme
        dcNew.add(PROPERTY_LICENSE, DublinCoreValue.mk("http://www.opencastproject.org/license", DublinCore.LANGUAGE_UNDEFINED, ENC_SCHEME_URI));
        // Don't forget to bind the namespace...
        dcNew.addBindings(XmlNamespaceContext.mk("octest", "http://www.opencastproject.org/octest"));
        dcNew.add(OC_PROPERTY_PROMOTED, DublinCoreValue.mk("true", DublinCore.LANGUAGE_UNDEFINED, new EName("http://www.opencastproject.org/octest", "Boolean")));
        try {
            dcNew.add(OC_PROPERTY_PROMOTED, DublinCoreValue.mk("true", DublinCore.LANGUAGE_UNDEFINED, EName.mk("http://www.opencastproject.org/enc-scheme", "Boolean")));
            fail();
        } catch (NamespaceBindingException e) {
        // Ok. This exception is expected to occur
        }
        // Store the catalog
        TransformerFactory transfac = TransformerFactory.newInstance();
        Transformer trans = transfac.newTransformer();
        trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        trans.setOutputProperty(OutputKeys.METHOD, "xml");
        FileWriter sw = new FileWriter(dcTempFile1);
        StreamResult result = new StreamResult(sw);
        DOMSource source = new DOMSource(dcNew.toXml());
        trans.transform(source, result);
        // Re-read the saved catalog and test for its content
        DublinCoreCatalog dcNewFromDisk = DublinCores.read(dcTempFile1.toURI().toURL().openStream());
        assertEquals(dcSample.getFirst(PROPERTY_IDENTIFIER), dcNewFromDisk.getFirst(PROPERTY_IDENTIFIER));
        assertEquals(dcSample.getFirst(PROPERTY_TITLE, "en"), dcNewFromDisk.getFirst(PROPERTY_TITLE, "en"));
        assertEquals(dcSample.getFirst(PROPERTY_PUBLISHER), dcNewFromDisk.getFirst(PROPERTY_PUBLISHER));
    } catch (IOException e) {
        fail("Error creating the catalog: " + e.getMessage());
    } catch (ParserConfigurationException e) {
        fail("Error creating a parser for the catalog: " + e.getMessage());
    } catch (TransformerException e) {
        fail("Error saving the catalog: " + e.getMessage());
    }
}
Also used : EName(org.opencastproject.mediapackage.EName) DOMSource(javax.xml.transform.dom.DOMSource) TransformerFactory(javax.xml.transform.TransformerFactory) Transformer(javax.xml.transform.Transformer) StreamResult(javax.xml.transform.stream.StreamResult) FileWriter(java.io.FileWriter) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) NamespaceBindingException(org.opencastproject.mediapackage.NamespaceBindingException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) TransformerException(javax.xml.transform.TransformerException) Test(org.junit.Test)

Example 25 with EName

use of org.opencastproject.mediapackage.EName in project opencast by opencast.

the class EmailDataTest method buildCatalogHash.

private HashMap<String, String> buildCatalogHash(DublinCoreCatalog dc) {
    HashMap<String, String> catalogHash = new HashMap<String, String>();
    for (EName ename : dc.getProperties()) {
        String name = ename.getLocalName();
        catalogHash.put(name, dc.getAsText(ename, DublinCore.LANGUAGE_ANY, EmailTemplateServiceImpl.DEFAULT_DELIMITER_FOR_MULTIPLE));
    }
    return catalogHash;
}
Also used : EName(org.opencastproject.mediapackage.EName) HashMap(java.util.HashMap)

Aggregations

EName (org.opencastproject.mediapackage.EName)28 DublinCoreCatalog (org.opencastproject.metadata.dublincore.DublinCoreCatalog)17 HashMap (java.util.HashMap)8 DublinCoreValue (org.opencastproject.metadata.dublincore.DublinCoreValue)8 IOException (java.io.IOException)7 ArrayList (java.util.ArrayList)7 Catalog (org.opencastproject.mediapackage.Catalog)7 InputStream (java.io.InputStream)6 MediaPackage (org.opencastproject.mediapackage.MediaPackage)6 MediaPackageElementFlavor (org.opencastproject.mediapackage.MediaPackageElementFlavor)6 Test (org.junit.Test)5 List (java.util.List)4 IngestException (org.opencastproject.ingest.api.IngestException)4 ByteArrayInputStream (java.io.ByteArrayInputStream)3 URI (java.net.URI)3 Date (java.util.Date)3 Entry (java.util.Map.Entry)3 AccessControlList (org.opencastproject.security.api.AccessControlList)3 UnauthorizedException (org.opencastproject.security.api.UnauthorizedException)3 SeriesException (org.opencastproject.series.api.SeriesException)3