package com.marklogic.client.modulesloader.xcc;
import com.marklogic.client.io.Format;
import com.marklogic.client.modulesloader.impl.FormatGetter;
import com.marklogic.xcc.DocumentFormat;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* Default impl. Feel free to enhance this, subclass it, or roll your own.
*/
public class DefaultDocumentFormatGetter implements DocumentFormatGetter, FormatGetter {
public final static String[] DEFAULT_BINARY_EXTENSIONS = new String[]{".swf", ".jpeg", ".jpg", ".png", ".gif",
".svg", ".ttf", ".eot", ".woff", ".woff2", ".otf", ".cur", ".ico"};
public final static String[] DEFAULT_XML_EXTENSIONS = new String[]{"xml", "xsl", "xslt", "xsd", "tdex"};
public final static String[] DEFAULT_JSON_EXTENSIONS = new String[]{"json", "tdej"};
private List<String> binaryExtensions = new ArrayList<String>();
private List<String> xmlExtensions = new ArrayList<>();
private List<String> jsonExtensions = new ArrayList<>();
public DefaultDocumentFormatGetter() {
for (String ext : DEFAULT_BINARY_EXTENSIONS) {
binaryExtensions.add(ext);
}
for (String ext : DEFAULT_XML_EXTENSIONS) {
xmlExtensions.add(ext);
}
for (String ext : DEFAULT_JSON_EXTENSIONS) {
jsonExtensions.add(ext);
}
}
@Override
public Format getFormat(File file) {
String name = file.getName();
for (String ext : xmlExtensions) {
if (name.endsWith(ext)) {
return Format.XML;
}
}
for (String ext : jsonExtensions) {
if (name.endsWith(ext)) {
return Format.JSON;
}
}
boolean isBinary = false;
for (String ext : binaryExtensions) {
if (name.endsWith(ext)) {
isBinary = true;
break;
}
}
return isBinary ? Format.BINARY : Format.TEXT;
}
@Override
public DocumentFormat getDocumentFormat(File file) {
String name = file.getName();
for (String ext : xmlExtensions) {
if (name.endsWith(ext)) {
return DocumentFormat.XML;
}
}
for (String ext : jsonExtensions) {
if (name.endsWith(ext)) {
return DocumentFormat.JSON;
}
}
boolean isBinary = false;
for (String ext : binaryExtensions) {
if (name.endsWith(ext)) {
isBinary = true;
break;
}
}
return isBinary ? DocumentFormat.BINARY : DocumentFormat.TEXT;
}
public List<String> getBinaryExtensions() {
return binaryExtensions;
}
public void setBinaryExtensions(List<String> binaryExtensions) {
this.binaryExtensions = binaryExtensions;
}
public List<String> getXmlExtensions() {
return xmlExtensions;
}
public void setXmlExtensions(List<String> xmlExtensions) {
this.xmlExtensions = xmlExtensions;
}
public List<String> getJsonExtensions() {
return jsonExtensions;
}
public void setJsonExtensions(List<String> jsonExtensions) {
this.jsonExtensions = jsonExtensions;
}
}