/* * Copyright (C) 2012-2015 DataStax Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.datastax.driver.mapping; import com.datastax.driver.core.ConsistencyLevel; import java.util.ArrayList; import java.util.List; class EntityMapper<T> { private final Class<T> entityClass; final String keyspace; final String table; final ConsistencyLevel writeConsistency; final ConsistencyLevel readConsistency; final List<AliasedMappedProperty<?>> partitionKeys = new ArrayList<AliasedMappedProperty<?>>(); final List<AliasedMappedProperty<?>> clusteringColumns = new ArrayList<AliasedMappedProperty<?>>(); final List<AliasedMappedProperty<?>> allColumns = new ArrayList<AliasedMappedProperty<?>>(); EntityMapper(Class<T> entityClass, String keyspace, String table, ConsistencyLevel writeConsistency, ConsistencyLevel readConsistency) { this.entityClass = entityClass; this.keyspace = keyspace; this.table = table; this.writeConsistency = writeConsistency; this.readConsistency = readConsistency; } int primaryKeySize() { return partitionKeys.size() + clusteringColumns.size(); } AliasedMappedProperty<?> getPrimaryKeyColumn(int i) { return i < partitionKeys.size() ? partitionKeys.get(i) : clusteringColumns.get(i - partitionKeys.size()); } void addColumns(List<AliasedMappedProperty<?>> pks, List<AliasedMappedProperty<?>> ccs, List<AliasedMappedProperty<?>> rgs) { partitionKeys.addAll(pks); clusteringColumns.addAll(ccs); allColumns.addAll(pks); allColumns.addAll(ccs); allColumns.addAll(rgs); } T newEntity() { return ReflectionUtils.newInstance(entityClass); } }