1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 package org.openimaj.tools.imagecollection.collection.config;
31
32 import java.io.File;
33 import java.io.IOException;
34
35 import org.kohsuke.args4j.Option;
36 import org.openimaj.image.MBFImage;
37 import org.openimaj.tools.imagecollection.metamapper.ConsoleMetaMapper;
38 import org.openimaj.tools.imagecollection.metamapper.FileMetaMapper;
39 import org.openimaj.tools.imagecollection.metamapper.MetaMapper;
40 import org.openimaj.tools.imagecollection.processor.DirectoryImageProcessor;
41 import org.openimaj.tools.imagecollection.processor.ImageCollectionProcessor;
42
43 public enum MetaMapperMode {
44 CONSOLE{
45 @Override
46 public MetaMapper mapper(ImageCollectionProcessor<MBFImage> processor) {
47 return new ConsoleMetaMapper();
48 }
49
50 },
51 FILE{
52 @Option(name="--meta-output-name", aliases="-mn", required=false, usage="The name of the meta output file", metaVar="STRING")
53 private String outputName = "meta.txt";
54
55 @Option(name="--directory-mode-root", aliases="-mdr", required=false, usage="If the output mode is directory, put the meta file in the directory", metaVar="STRING")
56 private boolean directoryModeRoot = true;
57
58 @Option(name="--meta-output-root", aliases="-mor", required=false, usage="If not using the directory mode root, the root folder", metaVar="STRING")
59 private String actualRoot= "./metaout";
60 @Override
61 public MetaMapper mapper(ImageCollectionProcessor<MBFImage> processor) throws IOException {
62 String actualOutDirectory = actualRoot;
63 if(directoryModeRoot && processor instanceof DirectoryImageProcessor){
64 DirectoryImageProcessor<?> dproc = ((DirectoryImageProcessor<?>)processor);
65 actualOutDirectory = dproc.getDirectoryFile().getAbsolutePath();
66 }
67
68 File outFile = new File(actualOutDirectory,outputName);
69
70 return new FileMetaMapper(outFile);
71
72 }
73
74 };
75 public abstract MetaMapper mapper(ImageCollectionProcessor<MBFImage> processor) throws IOException;
76 }