/**
   * map an xml column to a column
   *
   * @param xmlColumn xml column
   * @param typesBelongingCompositeTypeForComparatorType
   * @return column
   */
  private ColumnModel mapXmlColumnToColumnModel(
      ColumnMetadata metaData,
      Column xmlColumn,
      ComparatorType comparatorType,
      GenericTypeEnum[] typesBelongingCompositeTypeForComparatorType,
      ComparatorType defaultColumnValueType) {
    ColumnModel columnModel = new ColumnModel();

    if (comparatorType == null) {
      columnModel.setName(new GenericType(xmlColumn.getName(), GenericTypeEnum.BYTES_TYPE));
    } else if (ComparatorType.COMPOSITETYPE.getTypeName().equals(comparatorType.getTypeName())) {
      /* composite type */
      try {
        columnModel.setName(
            new GenericType(
                StringUtils.split(xmlColumn.getName(), ":"),
                typesBelongingCompositeTypeForComparatorType));
      } catch (IllegalArgumentException e) {
        throw new ParseException(
            xmlColumn.getName()
                + " doesn't fit with the schema declaration of your composite type");
      }
    } else {
      /* simple type */
      columnModel.setName(
          new GenericType(
              xmlColumn.getName(), GenericTypeEnum.fromValue(comparatorType.getTypeName())));
    }

    if (defaultColumnValueType != null
        && ComparatorType.COUNTERTYPE.getClassName().equals(defaultColumnValueType.getClassName())
        && TypeExtractor.containFunctions(xmlColumn.getValue())) {
      throw new ParseException("Impossible to override Column value into a Counter column family");
    }

    GenericType columnValue = null;
    if (metaData != null) {
      GenericTypeEnum genTypeEnum = GenericTypeEnum.valueOf(metaData.getValidationClass().name());
      columnValue = new GenericType(xmlColumn.getValue(), genTypeEnum);
    } else {
      columnValue = TypeExtractor.extract(xmlColumn.getValue(), defaultColumnValueType);
    }
    columnModel.setValue(columnValue);

    String timestamp = xmlColumn.getTimestamp();
    if (timestamp != null) {
      columnModel.setTimestamp(Long.valueOf(timestamp));
    } else {
      columnModel.setTimestamp(null);
    }

    return columnModel;
  }
  private ColumnMetadataModel mapParsedColumMetadataToColumnMetadata(
      ParsedColumnMetadata parsedColumnMetadata,
      ComparatorType comparatorType,
      GenericTypeEnum[] typesBelongingCompositeTypeForComparatorType) {
    if (parsedColumnMetadata.getName() == null) {
      throw new ParseException("column metadata name can't be empty");
    }

    if (parsedColumnMetadata.getValidationClass() == null) {
      throw new ParseException("column metadata validation class can't be empty");
    }

    ColumnMetadataModel columnMetadata = new ColumnMetadataModel();
    columnMetadata.setColumnName(
        TypeExtractor.constructGenericType(
            parsedColumnMetadata.getName(),
            comparatorType,
            typesBelongingCompositeTypeForComparatorType));
    columnMetadata.setValidationClass(
        ComparatorType.getByClassName(parsedColumnMetadata.getValidationClass().name()));
    if (parsedColumnMetadata.getIndexType() != null) {
      columnMetadata.setColumnIndexType(
          ColumnIndexType.valueOf(parsedColumnMetadata.getIndexType().name()));
    }

    if (parsedColumnMetadata.getIndexName() != null) {
      columnMetadata.setIndexName(parsedColumnMetadata.getIndexName());
    }

    return columnMetadata;
  }
Example #3
0
 public static void addKeySpace(Cluster myCluster) {
   List<ColumnFamilyDefinition> cfDefs = new ArrayList<ColumnFamilyDefinition>();
   cfDefs.add(
       HFactory.createColumnFamilyDefinition(
           "deneme", "global", ComparatorType.getByClassName("DateType")));
   cfDefs.add(
       HFactory.createColumnFamilyDefinition(
           "deneme", "campaign1", ComparatorType.getByClassName("DateType")));
   cfDefs.add(
       HFactory.createColumnFamilyDefinition(
           "deneme", "campaign2", ComparatorType.getByClassName("DateType")));
   cfDefs.add(
       HFactory.createColumnFamilyDefinition(
           "deneme", "campaign3", ComparatorType.getByClassName("DateType")));
   KeyspaceDefinition ksdef =
       HFactory.createKeyspaceDefinition(
           "deneme", "org.apache.cassandra.locator.SimpleStrategy", 1, cfDefs);
   myCluster.addKeyspace(ksdef, true);
 }
  private ColumnMetadataModel mapXmlColumnMetadataToColumMetadataModel(
      ColumnMetadata xmlColumnMetadata) {
    ColumnMetadataModel columnMetadata = new ColumnMetadataModel();
    columnMetadata.setColumnName(xmlColumnMetadata.getName());
    columnMetadata.setValidationClass(
        ComparatorType.getByClassName(xmlColumnMetadata.getValidationClass().value()));
    if (xmlColumnMetadata.getIndexType() != null) {
      columnMetadata.setColumnIndexType(
          ColumnIndexType.valueOf(xmlColumnMetadata.getIndexType().value()));
    }

    columnMetadata.setIndexName(xmlColumnMetadata.getIndexName());

    return columnMetadata;
  }
  /**
   * map an xml super colmun to a super column
   *
   * @param xmlSuperColumn xml super column
   * @param subComparatorType
   * @param comparatorType
   * @return supercolumn
   */
  private SuperColumnModel mapXmlSuperColumnToSuperColumnModel(
      List<ColumnMetadata> columnMetaData,
      SuperColumn xmlSuperColumn,
      ComparatorType comparatorType,
      ComparatorType subComparatorType,
      ComparatorType defaultColumnValueType) {
    SuperColumnModel superColumnModel = new SuperColumnModel();

    superColumnModel.setName(
        new GenericType(
            xmlSuperColumn.getName(), GenericTypeEnum.fromValue(comparatorType.getTypeName())));

    superColumnModel.setColumns(
        mapXmlColumnsToColumnsModel(
            columnMetaData,
            xmlSuperColumn.getColumn(),
            subComparatorType,
            null,
            defaultColumnValueType));
    return superColumnModel;
  }
  private SuperColumnModel mapParsedSuperColumnToSuperColumnModel(
      List<ParsedColumnMetadata> metaData,
      ParsedSuperColumn parsedSuperColumn,
      ComparatorType comparatorType,
      ComparatorType subComparatorType,
      ComparatorType defaultColumnValueType) {
    SuperColumnModel superColumnModel = new SuperColumnModel();

    superColumnModel.setName(
        new GenericType(
            parsedSuperColumn.getName(), GenericTypeEnum.fromValue(comparatorType.getTypeName())));

    superColumnModel.setColumns(
        mapParsedColumnsToColumnsModel(
            metaData,
            parsedSuperColumn.getColumns(),
            subComparatorType,
            null,
            defaultColumnValueType));
    return superColumnModel;
  }
Example #7
0
  /**
   * Create a Column family in a Given Cluster instance
   *
   * @param name ColumnFamily Name
   * @param keySpace KeySpace name
   * @param cluster Cluster instance
   * @param comparatorType Comparator
   * @throws CassandraDataAccessException In case of an Error accessing database or data error
   */
  public static void createColumnFamily(
      String name, String keySpace, Cluster cluster, String comparatorType)
      throws CassandraDataAccessException {

    KeyspaceDefinition ksDef = cluster.describeKeyspace(keySpace);

    if (ksDef == null) {
      throw new CassandraDataAccessException(
          "Can't create Column family, keyspace " + keySpace + " does not exist");
    }

    ColumnFamilyDefinition cfDef =
        new ThriftCfDef(keySpace, /*"Queue"*/ name, ComparatorType.getByClassName(comparatorType));

    List<ColumnFamilyDefinition> cfDefsList = ksDef.getCfDefs();
    HashSet<String> cfNames = new HashSet<String>();
    for (ColumnFamilyDefinition columnFamilyDefinition : cfDefsList) {
      cfNames.add(columnFamilyDefinition.getName());
    }
    if (!cfNames.contains(name)) {
      cluster.addColumnFamily(cfDef, true);
    }
  }
  private ColumnModel mapParsedColumnToColumnModel(
      ParsedColumnMetadata metaData,
      ParsedColumn parsedColumn,
      ComparatorType comparatorType,
      GenericTypeEnum[] typesBelongingCompositeTypeForComparatorType,
      ComparatorType defaultColumnValueType) {
    ColumnModel columnModel = new ColumnModel();

    columnModel.setName(
        TypeExtractor.constructGenericType(
            parsedColumn.getName(), comparatorType, typesBelongingCompositeTypeForComparatorType));

    if (ComparatorType.COUNTERTYPE.getClassName().equals(defaultColumnValueType.getClassName())
        && TypeExtractor.containFunctions(parsedColumn.getValue())) {
      throw new ParseException("Impossible to override Column value into a Counter column family");
    }

    GenericType columnValue = null;
    if (parsedColumn.getValue() != null) {
      if (metaData != null && !TypeExtractor.containFunctions(parsedColumn.getValue())) {
        GenericTypeEnum genTypeEnum =
            GenericTypeEnum.fromValue(metaData.getValidationClass().name());
        columnValue = new GenericType(parsedColumn.getValue(), genTypeEnum);
      } else {
        columnValue = TypeExtractor.extract(parsedColumn.getValue(), defaultColumnValueType);
      }
    }
    columnModel.setValue(columnValue);
    String timestamp = parsedColumn.getTimestamp();
    if (timestamp != null) {
      columnModel.setTimestamp(Long.valueOf(timestamp));
    } else {
      columnModel.setTimestamp(null);
    }
    return columnModel;
  }
 public boolean isCounter() {
   return defaultColumnValueType != null
       && defaultColumnValueType.equals(ComparatorType.COUNTERTYPE);
 }
  private ColumnFamilyModel mapXmlColumnFamilyToColumnFamilyModel(
      org.cassandraunit.dataset.xml.ColumnFamily xmlColumnFamily) {

    ColumnFamilyModel columnFamily = new ColumnFamilyModel();

    /* structure information */
    columnFamily.setName(xmlColumnFamily.getName());
    if (xmlColumnFamily.getType() != null) {
      columnFamily.setType(ColumnType.valueOf(xmlColumnFamily.getType().toString()));
    }
    columnFamily.setComment(xmlColumnFamily.getComment());

    if (xmlColumnFamily.getCompactionStrategy() != null) {
      columnFamily.setCompactionStrategy(xmlColumnFamily.getCompactionStrategy());
    }

    if (xmlColumnFamily.getCompactionStrategyOptions() != null) {
      List<CompactionStrategyOptionModel> compactionStrategyOptionModels =
          new ArrayList<CompactionStrategyOptionModel>();
      for (CompactionStrategyOption compactionStrategyOption :
          xmlColumnFamily.getCompactionStrategyOptions().getCompactionStrategyOption()) {
        compactionStrategyOptionModels.add(
            new CompactionStrategyOptionModel(
                compactionStrategyOption.getName(), compactionStrategyOption.getValue()));
      }
      columnFamily.setCompactionStrategyOptions(compactionStrategyOptionModels);
    }

    if (xmlColumnFamily.getGcGraceSeconds() != null) {
      columnFamily.setGcGraceSeconds(xmlColumnFamily.getGcGraceSeconds());
    }

    if (xmlColumnFamily.getMaxCompactionThreshold() != null) {
      columnFamily.setMaxCompactionThreshold(xmlColumnFamily.getMaxCompactionThreshold());
    }

    if (xmlColumnFamily.getMinCompactionThreshold() != null) {
      columnFamily.setMinCompactionThreshold(xmlColumnFamily.getMinCompactionThreshold());
    }

    if (xmlColumnFamily.getReadRepairChance() != null) {
      columnFamily.setReadRepairChance(xmlColumnFamily.getReadRepairChance());
    }

    if (xmlColumnFamily.getReplicationOnWrite() != null) {
      columnFamily.setReplicationOnWrite(xmlColumnFamily.getReplicationOnWrite());
    }

    GenericTypeEnum[] typesBelongingCompositeTypeForKeyType = null;
    if (xmlColumnFamily.getKeyType() != null) {
      ComparatorType keyType = ComparatorTypeHelper.verifyAndExtract(xmlColumnFamily.getKeyType());
      columnFamily.setKeyType(keyType);
      if (ComparatorType.COMPOSITETYPE.getTypeName().equals(keyType.getTypeName())) {
        String keyTypeAlias =
            StringUtils.removeStart(
                xmlColumnFamily.getKeyType(), ComparatorType.COMPOSITETYPE.getTypeName());
        columnFamily.setKeyTypeAlias(keyTypeAlias);
        typesBelongingCompositeTypeForKeyType =
            ComparatorTypeHelper.extractGenericTypesFromTypeAlias(keyTypeAlias);
      }
    }

    GenericTypeEnum[] typesBelongingCompositeTypeForComparatorType = null;
    if (xmlColumnFamily.getComparatorType() != null) {
      ComparatorType comparatorType =
          ComparatorTypeHelper.verifyAndExtract(xmlColumnFamily.getComparatorType());
      columnFamily.setComparatorType(comparatorType);
      if (ComparatorType.COMPOSITETYPE.getTypeName().equals(comparatorType.getTypeName())) {
        String comparatorTypeAlias =
            StringUtils.removeStart(
                xmlColumnFamily.getComparatorType(), ComparatorType.COMPOSITETYPE.getTypeName());
        columnFamily.setComparatorTypeAlias(comparatorTypeAlias);
        typesBelongingCompositeTypeForComparatorType =
            ComparatorTypeHelper.extractGenericTypesFromTypeAlias(comparatorTypeAlias);
      }
    }

    if (xmlColumnFamily.getSubComparatorType() != null) {
      columnFamily.setSubComparatorType(
          ComparatorType.getByClassName(xmlColumnFamily.getSubComparatorType().value()));
    }

    if (xmlColumnFamily.getDefaultColumnValueType() != null) {
      columnFamily.setDefaultColumnValueType(
          ComparatorType.getByClassName(xmlColumnFamily.getDefaultColumnValueType().value()));
    }

    columnFamily.setColumnsMetadata(
        mapXmlColumsMetadataToColumnsMetadata(xmlColumnFamily.getColumnMetadata()));

    /* data information */
    columnFamily.setRows(
        mapXmlRowsToRowsModel(
            xmlColumnFamily,
            columnFamily.getKeyType(),
            typesBelongingCompositeTypeForKeyType,
            columnFamily.getComparatorType(),
            typesBelongingCompositeTypeForComparatorType,
            columnFamily.getSubComparatorType(),
            columnFamily.getDefaultColumnValueType()));

    return columnFamily;
  }
  private ColumnFamilyModel mapParsedColumnFamilyToColumnFamilyModel(
      ParsedColumnFamily parsedColumnFamily) {

    ColumnFamilyModel columnFamily = new ColumnFamilyModel();

    /* structure information */
    if (parsedColumnFamily == null || parsedColumnFamily.getName() == null) {
      throw new ParseException("Column Family Name is missing");
    }
    columnFamily.setName(parsedColumnFamily.getName());
    if (parsedColumnFamily.getType() != null) {
      columnFamily.setType(ColumnType.valueOf(parsedColumnFamily.getType().toString()));
    }

    columnFamily.setComment(parsedColumnFamily.getComment());

    if (parsedColumnFamily.getCompactionStrategy() != null) {
      columnFamily.setCompactionStrategy(parsedColumnFamily.getCompactionStrategy());
    }

    if (parsedColumnFamily.getCompactionStrategyOptions() != null
        && !parsedColumnFamily.getCompactionStrategyOptions().isEmpty()) {
      List<CompactionStrategyOptionModel> compactionStrategyOptionModels =
          new ArrayList<CompactionStrategyOptionModel>();
      for (ParsedCompactionStrategyOption parsedCompactionStrategyOption :
          parsedColumnFamily.getCompactionStrategyOptions()) {
        compactionStrategyOptionModels.add(
            new CompactionStrategyOptionModel(
                parsedCompactionStrategyOption.getName(),
                parsedCompactionStrategyOption.getValue()));
      }
      columnFamily.setCompactionStrategyOptions(compactionStrategyOptionModels);
    }

    if (parsedColumnFamily.getGcGraceSeconds() != null) {
      columnFamily.setGcGraceSeconds(parsedColumnFamily.getGcGraceSeconds());
    }

    if (parsedColumnFamily.getMaxCompactionThreshold() != null) {
      columnFamily.setMaxCompactionThreshold(parsedColumnFamily.getMaxCompactionThreshold());
    }

    if (parsedColumnFamily.getMinCompactionThreshold() != null) {
      columnFamily.setMinCompactionThreshold(parsedColumnFamily.getMinCompactionThreshold());
    }

    if (parsedColumnFamily.getReadRepairChance() != null) {
      columnFamily.setReadRepairChance(parsedColumnFamily.getReadRepairChance());
    }

    if (parsedColumnFamily.getReplicationOnWrite() != null) {
      columnFamily.setReplicationOnWrite(parsedColumnFamily.getReplicationOnWrite());
    }

    /* keyType */
    GenericTypeEnum[] typesBelongingCompositeTypeForKeyType = null;
    if (parsedColumnFamily.getKeyType() != null) {
      ComparatorType keyType =
          ComparatorTypeHelper.verifyAndExtract(parsedColumnFamily.getKeyType());
      columnFamily.setKeyType(keyType);
      if (ComparatorType.COMPOSITETYPE.getTypeName().equals(keyType.getTypeName())) {
        String keyTypeAlias =
            StringUtils.removeStart(
                parsedColumnFamily.getKeyType(), ComparatorType.COMPOSITETYPE.getTypeName());
        columnFamily.setKeyTypeAlias(keyTypeAlias);
        typesBelongingCompositeTypeForKeyType =
            ComparatorTypeHelper.extractGenericTypesFromTypeAlias(keyTypeAlias);
      }
    }

    /* comparatorType */
    GenericTypeEnum[] typesBelongingCompositeTypeForComparatorType = null;
    if (parsedColumnFamily.getComparatorType() != null) {
      ComparatorType comparatorType =
          ComparatorTypeHelper.verifyAndExtract(parsedColumnFamily.getComparatorType());
      columnFamily.setComparatorType(comparatorType);
      if (ComparatorType.COMPOSITETYPE.getTypeName().equals(comparatorType.getTypeName())) {
        String comparatorTypeAlias =
            StringUtils.removeStart(
                parsedColumnFamily.getComparatorType(), ComparatorType.COMPOSITETYPE.getTypeName());
        columnFamily.setComparatorTypeAlias(comparatorTypeAlias);
        typesBelongingCompositeTypeForComparatorType =
            ComparatorTypeHelper.extractGenericTypesFromTypeAlias(comparatorTypeAlias);
      }
    }

    /* subComparatorType */
    if (parsedColumnFamily.getSubComparatorType() != null) {
      columnFamily.setSubComparatorType(
          ComparatorType.getByClassName(parsedColumnFamily.getSubComparatorType().name()));
    }

    if (parsedColumnFamily.getDefaultColumnValueType() != null) {
      columnFamily.setDefaultColumnValueType(
          ComparatorType.getByClassName(parsedColumnFamily.getDefaultColumnValueType().name()));
    }

    columnFamily.setColumnsMetadata(
        mapParsedColumsMetadataToColumnsMetadata(
            parsedColumnFamily.getColumnsMetadata(),
            columnFamily.getComparatorType(),
            typesBelongingCompositeTypeForComparatorType));

    /* data information */
    columnFamily.setRows(
        mapParsedRowsToRowsModel(
            parsedColumnFamily,
            columnFamily.getKeyType(),
            typesBelongingCompositeTypeForKeyType,
            columnFamily.getComparatorType(),
            typesBelongingCompositeTypeForComparatorType,
            columnFamily.getSubComparatorType(),
            columnFamily.getDefaultColumnValueType()));

    return columnFamily;
  }