1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.commons.imaging.formats.jpeg.xmp;
19
20 import java.io.File;
21 import java.io.IOException;
22 import java.util.List;
23
24 import org.apache.commons.imaging.AbstractImagingTest;
25 import org.apache.commons.imaging.ImagingException;
26 import org.apache.commons.imaging.bytesource.ByteSource;
27 import org.apache.commons.imaging.formats.jpeg.JpegImageParser;
28
29 public abstract class AbstractJpegXmpTest extends AbstractImagingTest {
30
31 private static final ImageFilter HAS_JPEG_XMP_IMAGE_FILTER = AbstractJpegXmpTest::hasJpegXmpData;
32
33 protected static List<File> getImagesWithXmpData() throws IOException, ImagingException {
34 return getTestImages(HAS_JPEG_XMP_IMAGE_FILTER);
35 }
36
37 // private static final ImageFilter JPEG_IMAGE_FILTER = new ImageFilter()
38 // {
39 // public boolean accept(File file) throws IOException, ImageReadException
40 // {
41 // return file.getName().toLowerCase().endsWith(".jpg");
42 // }
43 // };
44
45 protected static boolean hasJpegXmpData(final File file) {
46 if (!file.getName().toLowerCase().endsWith(".jpg")) {
47 return false;
48 // ImageFormat format = Imaging.guessFormat(file);
49 // if (format != ImageFormat.IMAGE_FORMAT_JPEG)
50 // return false;
51 }
52
53 // Debug.debug("possible file", file);
54
55 try {
56 final ByteSource byteSource = ByteSource.file(file);
57 return new JpegImageParser().hasXmpSegment(byteSource);
58 } catch (final Exception e) {
59 // Debug.debug("Error file", file.getAbsoluteFile());
60 // Debug.debug(e, 4);
61 return false;
62 }
63 }
64
65 protected List<File> getImagesWithXmpData(final int max) throws IOException, ImagingException {
66 return getTestImages(HAS_JPEG_XMP_IMAGE_FILTER, max);
67 }
68
69 protected File getImageWithXmpData() throws IOException, ImagingException {
70 return getTestImage(HAS_JPEG_XMP_IMAGE_FILTER);
71 }
72
73 // protected File getJpegImage() throws IOException, ImageReadException
74 // {
75 // return getTestImage(JPEG_IMAGE_FILTER);
76 // }
77 //
78 // protected List getJpegImages() throws IOException, ImageReadException
79 // {
80 // return getTestImages(JPEG_IMAGE_FILTER);
81 // }
82 //
83 // protected List getJpegImages(int max) throws IOException,
84 // ImageReadException
85 // {
86 // return getTestImages(JPEG_IMAGE_FILTER, max);
87 // }
88
89 }