Skip to content

Commit 5cb7b76

Browse files
committed
CDM-38 adding feature and ancillary impacts; feature not yet used
1 parent 70b5e75 commit 5cb7b76

20 files changed

+495
-37
lines changed

src/main/java/datastax/cdm/cql/CqlHelper.java

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import datastax.cdm.feature.FeatureFactory;
1414
import datastax.cdm.feature.Featureset;
1515
import datastax.cdm.cql.statement.*;
16+
import datastax.cdm.properties.ColumnsKeysTypes;
1617
import datastax.cdm.properties.KnownProperties;
1718
import datastax.cdm.properties.PropertyHelper;
1819
import org.apache.commons.lang.StringUtils;
@@ -55,7 +56,7 @@ public boolean initialize() {
5556
for (Featureset f : Featureset.values()) {
5657
if (f.toString().startsWith("TEST_")) continue; // Skip test features
5758
Feature feature = FeatureFactory.getFeature(f); // FeatureFactory throws an RTE if the feature is not implemented
58-
if (!feature.initialize(this.propertyHelper))
59+
if (!feature.initialize(this.propertyHelper, this))
5960
validInit = false;
6061
else
6162
featureMap.put(f, feature);
@@ -82,8 +83,8 @@ public boolean initialize() {
8283
logger.info("PARAM -- Write Consistency: {}", writeConsistencyLevel);
8384
logger.info("PARAM -- Write Batch Size: {}", getBatchSize());
8485
logger.info("PARAM -- Read Fetch Size: {}", getFetchSizeInRows());
85-
logger.info("PARAM -- Origin Keyspace Table: {}", getOriginKeyspaceTable());
86-
logger.info("PARAM -- Target Keyspace Table: {}", getTargetKeyspaceTable());
86+
logger.info("PARAM -- Origin Keyspace Table: {}", ColumnsKeysTypes.getOriginKeyspaceTable(propertyHelper));
87+
logger.info("PARAM -- Target Keyspace Table: {}", ColumnsKeysTypes.getTargetKeyspaceTable(propertyHelper));
8788
logger.info("PARAM -- TTLCols: {}", getTtlCols());
8889
logger.info("PARAM -- WriteTimestampCols: {}", getWriteTimeStampCols());
8990
logger.info("PARAM -- ORIGIN SELECT Query used: {}", originSelectByPartitionRangeStatement.getCQL());
@@ -179,16 +180,6 @@ public Integer getBatchSize() {
179180
}
180181

181182
// -------------- Schema ----------------------
182-
private String getOriginKeyspaceTable() {
183-
return propertyHelper.getString(KnownProperties.ORIGIN_KEYSPACE_TABLE);
184-
}
185-
186-
187-
private String getTargetKeyspaceTable() {
188-
return propertyHelper.getString(KnownProperties.TARGET_KEYSPACE_TABLE);
189-
}
190-
191-
192183
public boolean hasRandomPartitioner() {
193184
return propertyHelper.getBoolean(KnownProperties.ORIGIN_HAS_RANDOM_PARTITIONER);
194185
}

src/main/java/datastax/cdm/cql/statement/AbstractOriginSelectStatement.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import datastax.cdm.job.MigrateDataType;
77
import datastax.cdm.cql.CqlHelper;
88
import datastax.cdm.data.Record;
9+
import datastax.cdm.properties.ColumnsKeysTypes;
910
import datastax.cdm.properties.KnownProperties;
1011
import datastax.cdm.properties.PropertyHelper;
1112
import org.slf4j.Logger;
@@ -34,8 +35,8 @@ public AbstractOriginSelectStatement(PropertyHelper propertyHelper, CqlHelper cq
3435
super(propertyHelper, cqlHelper);
3536
this.session = cqlHelper.getOriginSession();
3637

37-
resultColumns.addAll(propertyHelper.getStringList(KnownProperties.ORIGIN_COLUMN_NAMES));
38-
resultTypes.addAll(propertyHelper.getMigrationTypeList(KnownProperties.ORIGIN_COLUMN_TYPES));
38+
resultColumns.addAll(ColumnsKeysTypes.getOriginColumnNames(propertyHelper));
39+
resultTypes.addAll(ColumnsKeysTypes.getOriginColumnTypes(propertyHelper));
3940

4041
minWriteTimeStampFilter = getMinWriteTimeStampFilter();
4142
maxWriteTimeStampFilter = getMaxWriteTimeStampFilter();
@@ -159,7 +160,7 @@ private String ttlAndWritetimeCols() {
159160
protected String buildStatement() {
160161
final StringBuilder sb = new StringBuilder("SELECT ");
161162
sb.append(PropertyHelper.asString(this.resultColumns, KnownProperties.PropertyType.STRING_LIST)).append(ttlAndWritetimeCols());
162-
sb.append(" FROM ").append(propertyHelper.getAsString(KnownProperties.ORIGIN_KEYSPACE_TABLE));
163+
sb.append(" FROM ").append(ColumnsKeysTypes.getOriginKeyspaceTable(propertyHelper));
163164
sb.append(" WHERE ").append(whereBinds());
164165
return sb.toString();
165166
}

src/main/java/datastax/cdm/cql/statement/BaseCdmStatement.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,34 @@
22

33
import com.datastax.oss.driver.api.core.CqlSession;
44
import com.datastax.oss.driver.api.core.cql.*;
5+
import com.datastax.oss.driver.api.core.type.UserDefinedType;
6+
import datastax.cdm.feature.FeatureFactory;
7+
import datastax.cdm.feature.Featureset;
8+
import datastax.cdm.feature.UDTMapper;
59
import datastax.cdm.job.MigrateDataType;
610
import datastax.cdm.cql.CqlHelper;
711
import datastax.cdm.properties.PropertyHelper;
812

913
import java.util.ArrayList;
14+
import java.util.HashMap;
1015
import java.util.List;
16+
import java.util.Map;
1117

1218
public class BaseCdmStatement {
1319

1420
protected PropertyHelper propertyHelper;
1521
protected CqlHelper cqlHelper;
1622
protected String statement = "";
1723
protected CqlSession session;
24+
protected boolean udtMappingEnabled;
1825

1926
protected List<String> resultColumns = new ArrayList<>();
2027
protected List<MigrateDataType> resultTypes = new ArrayList<>();
2128

2229
public BaseCdmStatement(PropertyHelper propertyHelper, CqlHelper cqlHelper) {
2330
this.propertyHelper = propertyHelper;
2431
this.cqlHelper = cqlHelper;
32+
this.udtMappingEnabled = FeatureFactory.isEnabled(cqlHelper.getFeature(Featureset.UDT_MAPPER));
2533
}
2634

2735
public PreparedStatement prepareStatement() {

src/main/java/datastax/cdm/cql/statement/TargetInsertStatement.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import com.datastax.oss.driver.api.core.cql.BoundStatement;
44
import com.datastax.oss.driver.api.core.cql.Row;
5+
import com.datastax.oss.driver.api.core.data.UdtValue;
56
import datastax.cdm.job.MigrateDataType;
67
import datastax.cdm.cql.CqlHelper;
78
import datastax.cdm.feature.ConstantColumns;
89
import datastax.cdm.feature.ExplodeMap;
910
import datastax.cdm.feature.FeatureFactory;
11+
import datastax.cdm.properties.ColumnsKeysTypes;
1012
import datastax.cdm.properties.KnownProperties;
1113
import datastax.cdm.properties.PropertyHelper;
1214
import org.slf4j.Logger;
@@ -91,7 +93,7 @@ protected String buildStatement() {
9193
valuesList += "," + constantColumnFeature.getAsString(ConstantColumns.Property.COLUMN_VALUES);
9294
}
9395

94-
targetUpdateCQL = "INSERT INTO " + propertyHelper.getAsString(KnownProperties.TARGET_KEYSPACE_TABLE) +
96+
targetUpdateCQL = "INSERT INTO " + ColumnsKeysTypes.getTargetKeyspaceTable(propertyHelper) +
9597
" (" + PropertyHelper.asString(bindColumnNames, KnownProperties.PropertyType.STRING_LIST) +
9698
(FeatureFactory.isEnabled(constantColumnFeature) ? "," + constantColumnFeature.getAsString(ConstantColumns.Property.COLUMN_NAMES) : "") +
9799
") VALUES (" + valuesList + ")";

src/main/java/datastax/cdm/cql/statement/TargetSelectByPKStatement.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ private BoundStatement bind(EnhancedPK pk) {
6363

6464
private String buildStatement() {
6565
return "SELECT " + PropertyHelper.asString(ColumnsKeysTypes.getTargetColumnNames(propertyHelper), KnownProperties.PropertyType.STRING_LIST)
66-
+ " FROM " + propertyHelper.getString(KnownProperties.TARGET_KEYSPACE_TABLE)
66+
+ " FROM " + ColumnsKeysTypes.getTargetKeyspaceTable(propertyHelper)
6767
+ " WHERE " + cqlHelper.getPKFactory().getWhereClause(PKFactory.Side.TARGET);
6868
}
6969
}

src/main/java/datastax/cdm/cql/statement/TargetUpdateStatement.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ protected BoundStatement bind(Row originRow, Row targetRow, Integer ttl, Long wr
7272
protected String buildStatement() {
7373
PKFactory pkFactory = cqlHelper.getPKFactory();
7474
StringBuilder targetUpdateCQL = new StringBuilder("UPDATE ");
75-
targetUpdateCQL.append(propertyHelper.getString(KnownProperties.TARGET_KEYSPACE_TABLE));
75+
targetUpdateCQL.append(ColumnsKeysTypes.getTargetKeyspaceTable(propertyHelper));
7676
targetUpdateCQL.append(usingTTLTimestamp());
7777
targetUpdateCQL.append(" SET ");
7878
int currentColumn = 0;

src/main/java/datastax/cdm/feature/ConstantColumns.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datastax.cdm.feature;
22

3+
import datastax.cdm.cql.CqlHelper;
34
import datastax.cdm.data.PKFactory;
45
import datastax.cdm.job.MigrateDataType;
56
import datastax.cdm.properties.KnownProperties;
@@ -24,7 +25,7 @@ public enum Property {
2425
private boolean valid = true;
2526

2627
@Override
27-
public boolean initialize(PropertyHelper propertyHelper) {
28+
public boolean initialize(PropertyHelper propertyHelper, CqlHelper cqlHelper) {
2829
List<String> columnNames = getConstantColumnNames(propertyHelper);
2930

3031
putStringList(Property.COLUMN_NAMES, columnNames);

src/main/java/datastax/cdm/feature/ExplodeMap.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datastax.cdm.feature;
22

3+
import datastax.cdm.cql.CqlHelper;
34
import datastax.cdm.data.PKFactory;
45
import datastax.cdm.job.MigrateDataType;
56
import datastax.cdm.properties.ColumnsKeysTypes;
@@ -28,7 +29,7 @@ public enum Property {
2829
private boolean valid = true;
2930

3031
@Override
31-
public boolean initialize(PropertyHelper helper) {
32+
public boolean initialize(PropertyHelper helper, CqlHelper cqlHelper) {
3233
String mapColumnName = getOriginColumnName(helper);
3334

3435
putString(Property.MAP_COLUMN_NAME, mapColumnName);

src/main/java/datastax/cdm/feature/Feature.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
package datastax.cdm.feature;
22

3+
import datastax.cdm.cql.CqlHelper;
34
import datastax.cdm.data.PKFactory;
45
import datastax.cdm.job.MigrateDataType;
56
import datastax.cdm.properties.PropertyHelper;
67
import java.util.List;
8+
import java.util.Map;
79

810
public interface Feature {
911

1012
/**
1113
* Initializes the feature based on properties
14+
*
1215
* @param propertyHelper propertyHelper containing initialized properties
16+
* @param cqlHelper initialized CqlHelper
1317
* @return true if the feature is initialized and valid, false otherwise
1418
*/
15-
public boolean initialize(PropertyHelper propertyHelper);
19+
public boolean initialize(PropertyHelper propertyHelper, CqlHelper cqlHelper);
1620

1721
/**
1822
* Modifies properties based on feature-specific logic

src/main/java/datastax/cdm/feature/FeatureFactory.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ public static Feature getFeature(Featureset feature) {
66
case ORIGIN_FILTER: return new OriginFilterCondition();
77
case CONSTANT_COLUMNS: return new ConstantColumns();
88
case EXPLODE_MAP: return new ExplodeMap();
9+
case UDT_MAPPER: return new UDTMapper();
910
default:
1011
throw new IllegalArgumentException("Unknown feature: " + feature);
1112
}

0 commit comments

Comments
 (0)