embulk-input-marketo 0.5.7.alpha.5 → 0.5.7.alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/build.gradle +1 -1
- data/classpath/{embulk-input-marketo-0.5.7.alpha.5.jar → embulk-input-marketo-0.5.7.alpha.6.jar} +0 -0
- data/src/main/java/org/embulk/input/marketo/MarketoInputPluginDelegate.java +3 -1
- data/src/main/java/org/embulk/input/marketo/delegate/ActivityBulkExtractInputPlugin.java +1 -1
- data/src/main/java/org/embulk/input/marketo/delegate/LeadBulkExtractInputPlugin.java +1 -2
- data/src/main/java/org/embulk/input/marketo/delegate/MarketoBaseBulkExtractInputPlugin.java +64 -57
- data/src/main/java/org/embulk/input/marketo/rest/MarketoBaseRestClient.java +0 -3
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 3c729920ccd16968b191ec5c12cf8f982f925f80
         | 
| 4 | 
            +
              data.tar.gz: 1cf0acc73b4c5e90b8a11fd78770ee56791dc565
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 3f14afd21ae9c968c6c0e6f1ebaf324421ae4ff10c1ceb74020ea458e970f039c2b81e9cf026c40e73089986155ea116ee1d3d5cdb47b1455b529f7de5c51506
         | 
| 7 | 
            +
              data.tar.gz: f54d8dff5fc370b8b6f4b2f793c3f90f9e9f57a510383edc83b4c996dc255951d8d6ee882b65d9146e609180a861cea793a1c2c8167d2905f44c8c479c0458c1
         | 
    
        data/build.gradle
    CHANGED
    
    
    
        data/classpath/{embulk-input-marketo-0.5.7.alpha.5.jar → embulk-input-marketo-0.5.7.alpha.6.jar}
    RENAMED
    
    | Binary file | 
| @@ -42,8 +42,10 @@ public class MarketoInputPluginDelegate | |
| 42 42 | 
             
                    @ConfigDefault("120000")
         | 
| 43 43 | 
             
                    Integer getMaximumRetriesIntervalMilis();
         | 
| 44 44 |  | 
| 45 | 
            +
                    //We don't need to let the internal plugin know that it being dispatched and force it to set require field optional
         | 
| 46 | 
            +
                    //We will hide the real from_date, and set it when validating task
         | 
| 45 47 | 
             
                    @Config("hidden_from_date")
         | 
| 46 | 
            -
                    @ConfigDefault("\" | 
| 48 | 
            +
                    @ConfigDefault("\"1970-01-01\"")
         | 
| 47 49 | 
             
                    @Override
         | 
| 48 50 | 
             
                    Date getFromDate();
         | 
| 49 51 |  | 
| @@ -38,7 +38,7 @@ public class ActivityBulkExtractInputPlugin extends MarketoBaseBulkExtractInputP | |
| 38 38 | 
             
                    try (MarketoRestClient marketoRestClient = createMarketoRestClient(task)) {
         | 
| 39 39 | 
             
                        MarketoService marketoService = new MarketoServiceImpl(marketoRestClient);
         | 
| 40 40 | 
             
                        Date fromDate = task.getFromDate();
         | 
| 41 | 
            -
                        return new FileInputStream(marketoService.extractAllActivity(fromDate, task.getToDate(). | 
| 41 | 
            +
                        return new FileInputStream(marketoService.extractAllActivity(fromDate, task.getToDate().orNull(), task.getPollingIntervalSecond(), task.getBulkJobTimeoutSecond()));
         | 
| 42 42 | 
             
                    }
         | 
| 43 43 | 
             
                    catch (FileNotFoundException e) {
         | 
| 44 44 | 
             
                        LOGGER.error("Exception when trying to extract activity", e);
         | 
| @@ -1,6 +1,5 @@ | |
| 1 1 | 
             
            package org.embulk.input.marketo.delegate;
         | 
| 2 2 |  | 
| 3 | 
            -
            import com.fasterxml.jackson.databind.node.ObjectNode;
         | 
| 4 3 | 
             
            import org.embulk.base.restclient.ServiceResponseMapper;
         | 
| 5 4 | 
             
            import org.embulk.base.restclient.record.ValueLocator;
         | 
| 6 5 | 
             
            import org.embulk.input.marketo.MarketoService;
         | 
| @@ -43,7 +42,7 @@ public class LeadBulkExtractInputPlugin extends MarketoBaseBulkExtractInputPlugi | |
| 43 42 | 
             
                        MarketoService marketoService = new MarketoServiceImpl(marketoRestClient);
         | 
| 44 43 | 
             
                        List<String> fieldNames = task.getExtractedFields();
         | 
| 45 44 | 
             
                        Date fromDate = task.getFromDate();
         | 
| 46 | 
            -
                        File file = marketoService.extractLead(fromDate, task.getToDate(). | 
| 45 | 
            +
                        File file = marketoService.extractLead(fromDate, task.getToDate().orNull(), fieldNames, task.getPollingIntervalSecond(), task.getBulkJobTimeoutSecond());
         | 
| 47 46 | 
             
                        return new FileInputStream(file);
         | 
| 48 47 | 
             
                    }
         | 
| 49 48 | 
             
                    catch (FileNotFoundException e) {
         | 
| @@ -80,6 +80,10 @@ public abstract class MarketoBaseBulkExtractInputPlugin<T extends MarketoBaseBul | |
| 80 80 | 
             
                    @ConfigDefault("3600")
         | 
| 81 81 | 
             
                    Integer getBulkJobTimeoutSecond();
         | 
| 82 82 |  | 
| 83 | 
            +
                    @Config("incremental")
         | 
| 84 | 
            +
                    @ConfigDefault("true")
         | 
| 85 | 
            +
                    Boolean getIncremental();
         | 
| 86 | 
            +
             | 
| 83 87 | 
             
                    @Config("latest_uids")
         | 
| 84 88 | 
             
                    @ConfigDefault("[]")
         | 
| 85 89 | 
             
                    Set<String> getPreviousUids();
         | 
| @@ -134,7 +138,7 @@ public abstract class MarketoBaseBulkExtractInputPlugin<T extends MarketoBaseBul | |
| 134 138 | 
             
                    ConfigDiff configDiff = super.buildConfigDiff(task, schema, taskCount, taskReports);
         | 
| 135 139 | 
             
                    Long currentLatestFetchTime = 0L;
         | 
| 136 140 | 
             
                    Set latestUIds = null;
         | 
| 137 | 
            -
                    if (incrementalColumn != null) {
         | 
| 141 | 
            +
                    if (incrementalColumn != null && task.getIncremental()) {
         | 
| 138 142 | 
             
                        int imported = 0;
         | 
| 139 143 | 
             
                        DateFormat df = new SimpleDateFormat(MarketoUtils.MARKETO_DATE_SIMPLE_DATE_FORMAT);
         | 
| 140 144 | 
             
                        for (TaskReport taskReport : taskReports) {
         | 
| @@ -149,7 +153,7 @@ public abstract class MarketoBaseBulkExtractInputPlugin<T extends MarketoBaseBul | |
| 149 153 | 
             
                            imported = imported + taskReport.get(Integer.class, IMPORTED_RECORD_COUNT);
         | 
| 150 154 | 
             
                        }
         | 
| 151 155 | 
             
                        // in case of we didn't import anything but search range is entirely in the past. Then we should move the the range anyway.
         | 
| 152 | 
            -
                        configDiff.set(FROM_DATE, df.format(task.getToDate(). | 
| 156 | 
            +
                        configDiff.set(FROM_DATE, df.format(task.getToDate().orNull()));
         | 
| 153 157 | 
             
                        configDiff.set(LATEST_FETCH_TIME, currentLatestFetchTime);
         | 
| 154 158 | 
             
                        configDiff.set(LATEST_UID_LIST, latestUIds);
         | 
| 155 159 | 
             
                    }
         | 
| @@ -178,46 +182,46 @@ public abstract class MarketoBaseBulkExtractInputPlugin<T extends MarketoBaseBul | |
| 178 182 | 
             
                {
         | 
| 179 183 | 
             
                    final JsonParser jsonParser = new JsonParser();
         | 
| 180 184 | 
             
                    Schema schema = pageBuilder.getSchema();
         | 
| 181 | 
            -
                     | 
| 182 | 
            -
             | 
| 183 | 
            -
                         | 
| 184 | 
            -
                        public void booleanColumn(Column column)
         | 
| 185 | 
            +
                    for (int i = 1; i <= PREVIEW_RECORD_LIMIT; i++) {
         | 
| 186 | 
            +
                        final int rowNum = i;
         | 
| 187 | 
            +
                        schema.visitColumns(new ColumnVisitor()
         | 
| 185 188 | 
             
                        {
         | 
| 186 | 
            -
                             | 
| 187 | 
            -
             | 
| 189 | 
            +
                            @Override
         | 
| 190 | 
            +
                            public void booleanColumn(Column column)
         | 
| 191 | 
            +
                            {
         | 
| 192 | 
            +
                                pageBuilder.setBoolean(column, false);
         | 
| 193 | 
            +
                            }
         | 
| 188 194 |  | 
| 189 | 
            -
             | 
| 190 | 
            -
             | 
| 191 | 
            -
             | 
| 192 | 
            -
             | 
| 193 | 
            -
             | 
| 195 | 
            +
                            @Override
         | 
| 196 | 
            +
                            public void longColumn(Column column)
         | 
| 197 | 
            +
                            {
         | 
| 198 | 
            +
                                pageBuilder.setLong(column, 12345L);
         | 
| 199 | 
            +
                            }
         | 
| 194 200 |  | 
| 195 | 
            -
             | 
| 196 | 
            -
             | 
| 197 | 
            -
             | 
| 198 | 
            -
             | 
| 199 | 
            -
             | 
| 201 | 
            +
                            @Override
         | 
| 202 | 
            +
                            public void doubleColumn(Column column)
         | 
| 203 | 
            +
                            {
         | 
| 204 | 
            +
                                pageBuilder.setDouble(column, 12345.123);
         | 
| 205 | 
            +
                            }
         | 
| 200 206 |  | 
| 201 | 
            -
             | 
| 202 | 
            -
             | 
| 203 | 
            -
             | 
| 204 | 
            -
             | 
| 205 | 
            -
             | 
| 207 | 
            +
                            @Override
         | 
| 208 | 
            +
                            public void stringColumn(Column column)
         | 
| 209 | 
            +
                            {
         | 
| 210 | 
            +
                                pageBuilder.setString(column, column.getName() + "_" + rowNum);
         | 
| 211 | 
            +
                            }
         | 
| 206 212 |  | 
| 207 | 
            -
             | 
| 208 | 
            -
             | 
| 209 | 
            -
             | 
| 210 | 
            -
             | 
| 211 | 
            -
             | 
| 213 | 
            +
                            @Override
         | 
| 214 | 
            +
                            public void timestampColumn(Column column)
         | 
| 215 | 
            +
                            {
         | 
| 216 | 
            +
                                pageBuilder.setTimestamp(column, Timestamp.ofEpochMilli(System.currentTimeMillis()));
         | 
| 217 | 
            +
                            }
         | 
| 212 218 |  | 
| 213 | 
            -
             | 
| 214 | 
            -
             | 
| 215 | 
            -
             | 
| 216 | 
            -
             | 
| 217 | 
            -
             | 
| 218 | 
            -
             | 
| 219 | 
            -
                    for (int i = 0; i < PREVIEW_RECORD_LIMIT; i++) {
         | 
| 220 | 
            -
                        schema.visitColumns(visitor);
         | 
| 219 | 
            +
                            @Override
         | 
| 220 | 
            +
                            public void jsonColumn(Column column)
         | 
| 221 | 
            +
                            {
         | 
| 222 | 
            +
                                pageBuilder.setJson(column, jsonParser.parse("{\"mockKey\":\"mockValue\"}"));
         | 
| 223 | 
            +
                            }
         | 
| 224 | 
            +
                        });
         | 
| 221 225 | 
             
                        pageBuilder.addRecord();
         | 
| 222 226 | 
             
                    }
         | 
| 223 227 | 
             
                    return Exec.newTaskReport();
         | 
| @@ -250,33 +254,36 @@ public abstract class MarketoBaseBulkExtractInputPlugin<T extends MarketoBaseBul | |
| 250 254 | 
             
                                }
         | 
| 251 255 | 
             
                            }
         | 
| 252 256 | 
             
                            catch (CsvTokenizer.InvalidValueException ex) {
         | 
| 253 | 
            -
                                throw new DataException("Encounter exception when parse csv file. Please check  | 
| 257 | 
            +
                                throw new DataException("Encounter exception when parse csv file. Please check to see if you are using the correct" +
         | 
| 258 | 
            +
                                        "quote or escape character.", ex);
         | 
| 254 259 | 
             
                            }
         | 
| 255 260 | 
             
                            final Map<String, String> kvMap = MarketoUtils.zip(headers, values);
         | 
| 256 261 | 
             
                            ObjectNode objectNode = MarketoUtils.OBJECT_MAPPER.valueToTree(kvMap);
         | 
| 257 262 |  | 
| 258 | 
            -
                            if ( | 
| 259 | 
            -
                                 | 
| 260 | 
            -
             | 
| 261 | 
            -
                            if (uidColumn != null) {
         | 
| 262 | 
            -
                                String uid = kvMap.get(uidColumn);
         | 
| 263 | 
            -
                                if (latestUids.contains(uid)) {
         | 
| 264 | 
            -
                                    //Duplicate value
         | 
| 265 | 
            -
                                    continue;
         | 
| 263 | 
            +
                            if (task.getIncremental()) {
         | 
| 264 | 
            +
                                if (!kvMap.containsKey(incrementalColumn)) {
         | 
| 265 | 
            +
                                    throw new DataException("Extracted record doesn't have incremental column " + incrementalColumn);
         | 
| 266 266 | 
             
                                }
         | 
| 267 | 
            -
                            }
         | 
| 268 | 
            -
                            String incrementalTimeStamp = kvMap.get(incrementalColumn);
         | 
| 269 | 
            -
                            long timestamp = ISO_DATETIME_FORMAT.parseDateTime(incrementalTimeStamp).getMillis();
         | 
| 270 | 
            -
                            if (currentTimestamp < timestamp) {
         | 
| 271 | 
            -
                                currentTimestamp = timestamp;
         | 
| 272 | 
            -
                                //switch timestamp
         | 
| 273 | 
            -
                                latestUids.clear();
         | 
| 274 | 
            -
                            }
         | 
| 275 | 
            -
                            else if (currentTimestamp == timestamp) {
         | 
| 276 | 
            -
                                //timestamp is equal
         | 
| 277 267 | 
             
                                if (uidColumn != null) {
         | 
| 278 | 
            -
                                     | 
| 279 | 
            -
                                    latestUids. | 
| 268 | 
            +
                                    String uid = kvMap.get(uidColumn);
         | 
| 269 | 
            +
                                    if (latestUids.contains(uid)) {
         | 
| 270 | 
            +
                                        //Duplicate value
         | 
| 271 | 
            +
                                        continue;
         | 
| 272 | 
            +
                                    }
         | 
| 273 | 
            +
                                }
         | 
| 274 | 
            +
                                String incrementalTimeStamp = kvMap.get(incrementalColumn);
         | 
| 275 | 
            +
                                long timestamp = ISO_DATETIME_FORMAT.parseDateTime(incrementalTimeStamp).getMillis();
         | 
| 276 | 
            +
                                if (currentTimestamp < timestamp) {
         | 
| 277 | 
            +
                                    currentTimestamp = timestamp;
         | 
| 278 | 
            +
                                    //switch timestamp
         | 
| 279 | 
            +
                                    latestUids.clear();
         | 
| 280 | 
            +
                                }
         | 
| 281 | 
            +
                                else if (currentTimestamp == timestamp) {
         | 
| 282 | 
            +
                                    //timestamp is equal
         | 
| 283 | 
            +
                                    if (uidColumn != null) {
         | 
| 284 | 
            +
                                        JsonNode uidField = objectNode.get(uidColumn);
         | 
| 285 | 
            +
                                        latestUids.add(uidField.asText());
         | 
| 286 | 
            +
                                    }
         | 
| 280 287 | 
             
                                }
         | 
| 281 288 | 
             
                            }
         | 
| 282 289 | 
             
                            recordImporter.importRecord(new AllStringJacksonServiceRecord(objectNode), pageBuilder);
         | 
| @@ -2,10 +2,7 @@ package org.embulk.input.marketo.rest; | |
| 2 2 |  | 
| 3 3 | 
             
            import com.fasterxml.jackson.databind.ObjectMapper;
         | 
| 4 4 | 
             
            import com.google.common.annotations.VisibleForTesting;
         | 
| 5 | 
            -
            import com.google.common.base.Joiner;
         | 
| 6 5 | 
             
            import com.google.common.collect.ArrayListMultimap;
         | 
| 7 | 
            -
            import com.google.common.collect.ImmutableListMultimap;
         | 
| 8 | 
            -
            import com.google.common.collect.Maps;
         | 
| 9 6 | 
             
            import com.google.common.collect.Multimap;
         | 
| 10 7 | 
             
            import org.eclipse.jetty.client.HttpClient;
         | 
| 11 8 | 
             
            import org.eclipse.jetty.client.api.ContentProvider;
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: embulk-input-marketo
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.5.7.alpha. | 
| 4 | 
            +
              version: 0.5.7.alpha.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Tai Khuu
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017-09- | 
| 11 | 
            +
            date: 2017-09-29 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -92,11 +92,11 @@ files: | |
| 92 92 | 
             
            - src/test/java/org/embulk/input/marketo/rest/MarketoBaseRestClientTest.java
         | 
| 93 93 | 
             
            - classpath/jetty-http-9.2.14.v20151106.jar
         | 
| 94 94 | 
             
            - classpath/embulk-base-restclient-0.5.3.jar
         | 
| 95 | 
            -
            - classpath/embulk-input-marketo-0.5.7.alpha.5.jar
         | 
| 96 95 | 
             
            - classpath/jetty-client-9.2.14.v20151106.jar
         | 
| 97 96 | 
             
            - classpath/jetty-util-9.2.14.v20151106.jar
         | 
| 98 97 | 
             
            - classpath/embulk-util-retryhelper-jetty92-0.5.3.jar
         | 
| 99 98 | 
             
            - classpath/jetty-io-9.2.14.v20151106.jar
         | 
| 99 | 
            +
            - classpath/embulk-input-marketo-0.5.7.alpha.6.jar
         | 
| 100 100 | 
             
            homepage:
         | 
| 101 101 | 
             
            licenses:
         | 
| 102 102 | 
             
            - MIT
         |