Created
January 27, 2012 10:48
-
-
Save elefevre/1688248 to your computer and use it in GitHub Desktop.
A basic connector
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.polyspot.connector.filesystem; | |
import java.util.List; | |
import org.apache.commons.vfs2.FileObject; | |
import org.apache.commons.vfs2.FileSystemManager; | |
import com.google.common.collect.Lists; | |
import com.polyspot.connector.framework.Connector; | |
import com.polyspot.connector.framework.ConnectorConfig; | |
import com.polyspot.connector.framework.node.Node; | |
import com.polyspot.connector.framework.node.NodeFinder; | |
import com.polyspot.connector.framework.node.NodeKey; | |
import com.polyspot.connector.framework.node.transformer.NodeTransformer; | |
import com.polyspot.connector.framework.node.transformer.NodeTransformers; | |
import com.polyspot.connector.framework.orchestrator.Orchestrator; | |
import com.polyspot.connector.framework.orchestrator.Orchestrators; | |
import com.polyspot.connector.framework.pusher.DocumentOutput; | |
import com.polyspot.connector.framework.utils.DefaultToStringEqualsHashCode; | |
public class FileSystemConnector { | |
public static class FileSystemNode extends Node { | |
private final FileSystemManager manager; | |
public FileSystemNode(FileSystemNode parent, String name, FileSystemManager manager) { | |
super(parent, "vfs", name); | |
this.manager = manager; | |
} | |
@Override | |
public Iterable<Node> enumerate() throws Exception { | |
FileObject folder = manager.resolveFile(this.getKey().getName()); | |
List<Node> children = Lists.newArrayList(); | |
for (FileObject fileObject : folder.getChildren()) { | |
Node child = new FileSystemNode(node, fileObject.getName().getURI(), manager); | |
children.add(child); | |
} | |
return children; | |
} | |
} | |
private final DocumentOutput documentOutput; | |
private final FileSystemManager manager; | |
public FileSystemConnector(FileSystemManager manager, DocumentOutput documentOutput) { | |
this.manager = manager; | |
this.documentOutput = documentOutput; | |
} | |
public void synchronize(String root) { | |
Orchestrator orchestrator = Orchestrators.createSynchronousOrchestrator(documentOutput); | |
String rootKey = NodeKey.create("vfs", root).asString(); | |
Node rootNode = new FileSystemNode(null, rootKey.getName(), manager); | |
Connector connector = new Connector(new ConnectorConfig().withRootNode(rootNode), orchestrator); | |
connector.synchronize(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.polyspot.connector.filesystem; | |
import java.util.List; | |
import org.apache.commons.vfs2.FileObject; | |
import org.apache.commons.vfs2.FileSystemManager; | |
import com.google.common.collect.Lists; | |
import com.polyspot.connector.framework.Connector; | |
import com.polyspot.connector.framework.ConnectorConfig; | |
import com.polyspot.connector.framework.node.Node; | |
import com.polyspot.connector.framework.node.NodeFinder; | |
import com.polyspot.connector.framework.node.NodeKey; | |
import com.polyspot.connector.framework.node.transformer.NodeTransformer; | |
import com.polyspot.connector.framework.node.transformer.NodeTransformers; | |
import com.polyspot.connector.framework.orchestrator.Orchestrator; | |
import com.polyspot.connector.framework.orchestrator.Orchestrators; | |
import com.polyspot.connector.framework.pusher.DocumentOutput; | |
import com.polyspot.connector.framework.utils.DefaultToStringEqualsHashCode; | |
public class FileSystemConnector { | |
public static class FileSystemNodeFinder implements NodeFinder { | |
private final FileSystemManager manager; | |
public FileSystemNodeFinder(FileSystemManager manager) { | |
this.manager = manager; | |
} | |
@Override | |
public Iterable<Node> enumerate(Node node) throws Exception { | |
FileObject folder = manager.resolveFile(node.getKey().getName()); | |
List<Node> children = Lists.newArrayList(); | |
for (FileObject fileObject : folder.getChildren()) { | |
Node child = Node.create(node, "vfs", fileObject.getName().getURI()).withNodeFinder(this); | |
children.add(child); | |
} | |
return children; | |
} | |
} | |
private final DocumentOutput documentOutput; | |
private final FileSystemManager manager; | |
public FileSystemConnector(FileSystemManager manager, DocumentOutput documentOutput) { | |
this.manager = manager; | |
this.documentOutput = documentOutput; | |
} | |
public void synchronize(String root) { | |
Orchestrator orchestrator = Orchestrators.createSynchronousOrchestrator(documentOutput); | |
NodeTransformer rootBuilder = NodeTransformers.withFinder(new FileSystemNodeFinder(manager)); | |
String rootKey = NodeKey.create("vfs", root).asString(); | |
Connector connector = new Connector(new ConnectorConfig().withRootKey(rootKey), orchestrator, rootBuilder); | |
connector.synchronize(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment