Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit

Permalink
#49 More hacking around
Browse files Browse the repository at this point in the history
  • Loading branch information
Rob Rudin committed Feb 21, 2017
1 parent c94da03 commit e6ede2b
Show file tree
Hide file tree
Showing 11 changed files with 167 additions and 33 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.mdown
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Releases past 2.7.0 now tracked in Github

## 2.6.1

* [#17](https://github.com/rjrudin/ml-javaclient-util/issues/17) Extension metadata can now be loaded from the classpath
* [#17](https://github.com/rjrudin/ml-javaclient-util/issues/17) Extension documentMetadata can now be loaded from the classpath

## 2.6

Expand Down
65 changes: 65 additions & 0 deletions src/main/java/com/marklogic/client/file/DefaultFileLoader.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package com.marklogic.client.file;

import com.marklogic.client.batch.BatchWriter;
import com.marklogic.client.helper.LoggingObject;
import org.springframework.util.ClassUtils;

import java.util.ArrayList;
import java.util.List;

public class DefaultFileLoader extends LoggingObject implements FileLoader {

private DocumentFileFinder documentFileFinder;
private BatchWriter batchWriter;
private List<DocumentFileProcessor> documentFileProcessors;

public DefaultFileLoader(BatchWriter batchWriter) {
this(batchWriter, new DefaultDocumentFileFinder());
}

/**
* @param batchWriter This is assumed to have already been initialized, as this class is not interested in managing
* the lifecycle of a BatchWriter
* @param documentFileFinder
*/
public DefaultFileLoader(BatchWriter batchWriter, DocumentFileFinder documentFileFinder) {
this.batchWriter = batchWriter;
this.documentFileFinder = documentFileFinder;
initializeDocumentFileProcessors();
}

protected void initializeDocumentFileProcessors() {
documentFileProcessors = new ArrayList<>();
}

@Override
public List<DocumentFile> loadFiles(String... paths) {
List<DocumentFile> documentFiles = documentFileFinder.findDocumentFiles(paths);
batchWriter.write(documentFiles);
return documentFiles;
}

public DocumentFileProcessor getDocumentFileProcessor(String classShortName) {
for (DocumentFileProcessor processor : documentFileProcessors) {
if (ClassUtils.getShortName(processor.getClass()).equals(classShortName)) {
return processor;
}
}
return null;
}

public void addDocumentFileProcessor(DocumentFileProcessor processor) {
if (documentFileProcessors == null) {
documentFileProcessors = new ArrayList<>();
}
documentFileProcessors.add(processor);
}

public List<DocumentFileProcessor> getDocumentFileProcessors() {
return documentFileProcessors;
}

public void setDocumentFileProcessors(List<DocumentFileProcessor> documentFileProcessors) {
this.documentFileProcessors = documentFileProcessors;
}
}
26 changes: 21 additions & 5 deletions src/main/java/com/marklogic/client/file/DocumentFile.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ public class DocumentFile implements DocumentWriteOperation {
private String uri;
private File file;
private Format format;
private DocumentMetadataHandle metadata;
private DocumentMetadataHandle documentMetadata;

public DocumentFile(String uri, File file) {
this.uri = uri;
this.file = file;
this.metadata = new DocumentMetadataHandle();
this.documentMetadata = new DocumentMetadataHandle();
}

public String getUri() {
Expand All @@ -47,7 +47,7 @@ public OperationType getOperationType() {

@Override
public DocumentMetadataWriteHandle getMetadata() {
return metadata;
return documentMetadata;
}

@Override
Expand All @@ -60,7 +60,23 @@ public void setFormat(Format format) {
this.format = format;
}

public void setMetadata(DocumentMetadataHandle metadata) {
this.metadata = metadata;
public DocumentMetadataHandle getDocumentMetadata() {
return documentMetadata;
}

public void setDocumentMetadata(DocumentMetadataHandle documentMetadata) {
this.documentMetadata = documentMetadata;
}

public void setUri(String uri) {
this.uri = uri;
}

public void setFile(File file) {
this.file = file;
}

public Format getFormat() {
return format;
}
}
12 changes: 12 additions & 0 deletions src/main/java/com/marklogic/client/file/DocumentFileProcessor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.marklogic.client.file;

/**
* Callback-style interface for processing - i.e. do whatever you want with - a DocumentFile instance before it's
* written to MarkLogic.
*/
public interface DocumentFileProcessor {

boolean supportsDocumentFile(DocumentFile documentFile);

void processDocumentFile(DocumentFile documentFile);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.marklogic.client.file;

public class FileExtensionDocumentFileProcessor implements DocumentFileProcessor {

@Override
public boolean supportsDocumentFile(DocumentFile documentFile) {
return true;
}

@Override
public void processDocumentFile(DocumentFile documentFile) {

}
}
5 changes: 3 additions & 2 deletions src/main/java/com/marklogic/client/file/FileLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
import java.util.List;

/**
* Created by rrudin on 2/19/2017.
* Interface for loading files from a set of paths, returning a list of the files that were loaded as DocumentFile
* objects.
*/
public class FileLoader {
public interface FileLoader {

List<DocumentFile> loadFiles(String... paths);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
import java.util.Set;

import com.marklogic.client.DatabaseClient;
import com.marklogic.client.batch.RestBatchWriter;
import com.marklogic.client.document.JSONDocumentManager;
import com.marklogic.client.document.TextDocumentManager;
import com.marklogic.client.document.XMLDocumentManager;
import com.marklogic.client.file.DefaultFileLoader;
import com.marklogic.client.helper.LoggingObject;
import com.marklogic.client.io.DocumentMetadataHandle;
import com.marklogic.client.io.FileHandle;
Expand All @@ -33,6 +35,9 @@ public DefaultSchemasLoader(DatabaseClient databaseClient) {

@Override
public List<DocumentFile> loadSchemas(String... paths) {
DefaultFileLoader fileLoader = new DefaultFileLoader(new RestBatchWriter(databaseClient));
fileLoader.addDocumentFileProcessor(new TdeDocumentFileProcessor());

List<DocumentFile> files = documentFileFinder.findDocumentFiles(paths);
return null;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.marklogic.client.schemasloader.impl;

import com.marklogic.client.file.DocumentFile;
import com.marklogic.client.file.DocumentFileProcessor;
import com.marklogic.client.io.Format;

public class TdeDocumentFileProcessor implements DocumentFileProcessor {

@Override
public boolean supportsDocumentFile(DocumentFile documentFile) {
String extension = documentFile.getFileExtension();
return "tdej".equals(extension) || "tdex".equals(extension);
}

@Override
public void processDocumentFile(DocumentFile documentFile) {
documentFile.getDocumentMetadata().withCollections("http://marklogic.com/xdmp/tde");

String extension = documentFile.getFileExtension();
if ("tdej".equals(extension)) {
documentFile.setFormat(Format.JSON);
} else if ("tdex".equals(extension)) {
documentFile.setFormat(Format.XML);
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.marklogic.client.schemasloader.impl;

import com.marklogic.client.file.DocumentFile;
import com.marklogic.client.file.DocumentFileProcessor;
import com.marklogic.client.io.Format;

public class XsdDocumentFileProcessor implements DocumentFileProcessor {

@Override
public boolean supportsDocumentFile(DocumentFile documentFile) {
return "xsd".equals(documentFile.getFileExtension());
}

@Override
public void processDocumentFile(DocumentFile documentFile) {
documentFile.setFormat(Format.XML);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<metadata>
<documentMetadata>
<title>Sample Service</title>
<description>Would be nice to support HTML in this.</description>
<method name="GET">
Expand All @@ -13,4 +13,4 @@
<param name="id" />
<param name="sourceId" />
</method>
</metadata>
</documentMetadata>

0 comments on commit e6ede2b

Please sign in to comment.