src/main/java/org/embulk/output/SalesforceOutputPlugin.java in embulk-output-salesforce-0.1.0 vs src/main/java/org/embulk/output/SalesforceOutputPlugin.java in embulk-output-salesforce-0.1.1
- old
+ new
@@ -8,10 +8,11 @@
import com.sforce.soap.partner.SaveResult;
import com.sforce.soap.partner.UpsertResult;
import com.sforce.soap.partner.sobject.SObject;
import com.sforce.ws.ConnectionException;
import com.sforce.ws.ConnectorConfig;
+import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
@@ -53,11 +54,11 @@
@Config("password")
public String getPassword();
@Config("login_endpoint")
- @ConfigDefault("https://login.salesforce.com")
+ @ConfigDefault("\"https://login.salesforce.com\"")
public Optional<String> getLoginEndpoint();
@Config("sobject")
public String getSObject();
@@ -76,21 +77,30 @@
@Config("version")
@ConfigDefault("34.0")
public Optional<String> getVersion();
@Config("result_dir")
- @ConfigDefault("\"./target\"")
+ @ConfigDefault("null")
public Optional<String> getResultDir();
}
@Override
public ConfigDiff transaction(ConfigSource config,
Schema schema, int taskCount,
OutputPlugin.Control control)
{
PluginTask task = config.loadConfig(PluginTask.class);
logger = Exec.getLogger(getClass());
+
+ if (task.getResultDir().isPresent() && task.getResultDir().get() != null) {
+ File resultDir = new File(task.getResultDir().get());
+ if (!resultDir.exists() || !resultDir.isDirectory()) {
+ logger.error("{} is not exist or is not directory.", task.getResultDir().get());
+ throw new RuntimeException(task.getResultDir().get() + " is not exist or is not directory.");
+ }
+ }
+
final String username = task.getUsername();
final String password = task.getPassword();
final String loginEndpoint = task.getLoginEndpoint().get();
try {
if (client == null) {
@@ -143,11 +153,11 @@
}
public class SalesforcePageOutput
implements TransactionalPageOutput
{
- private final String datePostFix = new SimpleDateFormat("yyyyMMddhhmmssSSS").format(new Date());
+ private final String dateSuffix = new SimpleDateFormat("yyyyMMddhhmmssSSS").format(new Date());
private final PageReader pageReader;
private final PartnerConnection client;
private final int batchSize;
private List<SObject> records;
@@ -346,19 +356,25 @@
private void createResultsFiles(List<SObject> records, ResultWrapper resultWrapper) throws IOException{
ICsvListWriter successListWriter = null;
ICsvListWriter errorListWriter = null;
try {
- String successFileName = this.resultDir + "/success_" + datePostFix + ".csv";
+ String successFileName = this.resultDir + "/success_" + dateSuffix + ".csv";
+ Boolean isExistSuccessFile = new File(successFileName).exists();
successListWriter = new CsvListWriter(new FileWriter(successFileName, true),
CsvPreference.STANDARD_PREFERENCE);
- //successListWriter.write(createSuccessHeader());
+ if (!isExistSuccessFile) {
+ successListWriter.write(createSuccessHeader());
+ }
- String errorFileName = this.resultDir + "/error_" + datePostFix + ".csv";
+ String errorFileName = this.resultDir + "/error_" + dateSuffix + ".csv";
+ Boolean isExistErrorFile = new File(errorFileName).exists();
errorListWriter = new CsvListWriter(new FileWriter(errorFileName, true),
CsvPreference.STANDARD_PREFERENCE);
- //errorListWriter.write(createErrorHeader());
-
+ if (!isExistErrorFile) {
+ errorListWriter.write(createErrorHeader());
+ }
+
CellProcessor[] processors = new CellProcessor[pageReader.getSchema().getColumns().size() + 1];
ArrayList<ArrayList<String>> errorValues = new ArrayList<>();
for (Integer i = 0, imax = records.size(); i < imax; i++) {
SObject record = records.get(i);