Android Open Source - storm-gen Converter Model






From Project

Back to project page storm-gen.

License

The source code is released under:

Apache License

If you think the Android project storm-gen listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*******************************************************************************
 * Copyright 2012 Google, Inc.// www. j  a v  a 2  s  .c o m
 *
 * 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.turbomanage.storm.apt.converter;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.LinkedHashMap;
import java.util.Map;

import com.turbomanage.storm.api.Converter;
import com.turbomanage.storm.apt.ClassModel;
import com.turbomanage.storm.apt.ProcessorLogger;
import com.turbomanage.storm.csv.CsvUtils;
import com.turbomanage.storm.types.TypeConverter;
import com.turbomanage.storm.types.TypeConverter.BindType;
import com.turbomanage.storm.types.TypeConverter.SqlType;

public class ConverterModel extends ClassModel {

  private static final String TYPE_DELIMITER = ";";
  private String[] convertibleTypes;
  private BindType bindType;
  private SqlType sqlType;
  private boolean builtIn;

  /**
   * Construct from attributes provided by the annotation processor
   * or index reader.
   *
   * @param converterClass
   * @param types
   * @param bindType
   * @param sqlType
   */
  public ConverterModel(String converterClass,
      String[] types, BindType bindType, SqlType sqlType) {
    this.parseQualifiedClassName(converterClass);
    this.convertibleTypes = types;
    this.bindType = bindType;
    this.sqlType = sqlType;
  }

  /**
   * Construct from a built-in converter on the classpath.
   *
   * @param converter
   */
  public ConverterModel(TypeConverter converter) {
    this.builtIn = true;
    this.parseQualifiedClassName(converter.getClass().getCanonicalName());
    Converter annotation = converter.getClass().getAnnotation(Converter.class);
    this.bindType = annotation.bindType();
    this.sqlType = annotation.sqlType();
    this.convertibleTypes = new String[annotation.forTypes().length];
    int i = 0;
    for (Class convertibleType : annotation.forTypes()) {
      this.convertibleTypes[i++] = convertibleType.getCanonicalName();
    }
  }

  public String[] getConvertibleTypes() {
    return convertibleTypes;
  }

  public BindType getBindType() {
    return bindType;
  }

  public SqlType getSqlType() {
    return sqlType;
  }

  public static ConverterModel readFromIndex(String convInfo, ProcessorLogger logger) throws IOException {
    Map<String, String> props = CsvUtils.getAsMap(convInfo);
    String converterClass = props.get("converterClass");
    BindType bindType = BindType.valueOf(props.get("bindType"));
    SqlType sqlType = SqlType.valueOf(props.get("sqlType"));
    String[] convertibleTypes = props.get("convertibleTypes").split(TYPE_DELIMITER);
    return new ConverterModel(converterClass, convertibleTypes, bindType, sqlType);
  }

  public void writeToIndex(PrintWriter out) {
    // Don't write the built-in converters, causes dups
    if (builtIn)
      return;
    String typeList = new String();
    for (String type : this.convertibleTypes) {
      typeList += TYPE_DELIMITER + type;
    }
    typeList = typeList.substring(1);
    Map<String,String> map = new LinkedHashMap<String,String>();
    map.put("converterClass", this.getQualifiedClassName());
    map.put("bindType", this.bindType.name());
    map.put("sqlType", this.sqlType.name());
    map.put("convertibleTypes", typeList);
    out.println(CsvUtils.mapToCsv(map));
  }

  @Override
  public int hashCode() {
    return getQualifiedClassName().hashCode();
  }

  @Override
  public boolean equals(Object obj) {
    // TODO compare all fields to ensure index up to date
    // but how to replace a prior version with different values?
    if (obj instanceof ConverterModel) {
      ConverterModel cm = (ConverterModel) obj;
      return getQualifiedClassName().equals(cm.getQualifiedClassName());
    }
    return false;
  }

}




Java Source Code List

com.turbomanage.storm.DatabaseHelper.java
com.turbomanage.storm.ModelBase.java
com.turbomanage.storm.SQLiteDao.java
com.turbomanage.storm.TableHelper.java
com.turbomanage.storm.api.Converter.java
com.turbomanage.storm.api.DatabaseFactory.java
com.turbomanage.storm.api.Database.java
com.turbomanage.storm.api.Entity.java
com.turbomanage.storm.api.Id.java
com.turbomanage.storm.api.Syncable.java
com.turbomanage.storm.api.package-info.java
com.turbomanage.storm.apt.BaseDaoModel.java
com.turbomanage.storm.apt.ClassModel.java
com.turbomanage.storm.apt.ClassProcessor.java
com.turbomanage.storm.apt.ClassTemplate.java
com.turbomanage.storm.apt.MainProcessor.java
com.turbomanage.storm.apt.ProcessorLogger.java
com.turbomanage.storm.apt.SqlUtil.java
com.turbomanage.storm.apt.StormAnnotationException.java
com.turbomanage.storm.apt.StormEnvironment.java
com.turbomanage.storm.apt.converter.ConverterModel.java
com.turbomanage.storm.apt.converter.ConverterProcessor.java
com.turbomanage.storm.apt.converter.ConverterTypeAnnotationValueVisitor.java
com.turbomanage.storm.apt.converter.ConverterTypeAnnotationValuesVisitor.java
com.turbomanage.storm.apt.converter.package-info.java
com.turbomanage.storm.apt.database.DatabaseFactoryTemplate.java
com.turbomanage.storm.apt.database.DatabaseModel.java
com.turbomanage.storm.apt.database.DatabaseProcessor.java
com.turbomanage.storm.apt.database.package-info.java
com.turbomanage.storm.apt.entity.EntityDaoTemplate.java
com.turbomanage.storm.apt.entity.EntityModel.java
com.turbomanage.storm.apt.entity.EntityProcessor.java
com.turbomanage.storm.apt.entity.FieldModel.java
com.turbomanage.storm.apt.entity.TableHelperTemplate.java
com.turbomanage.storm.apt.entity.package-info.java
com.turbomanage.storm.csv.CsvTableReader.java
com.turbomanage.storm.csv.CsvTableWriter.java
com.turbomanage.storm.csv.CsvUtils.java
com.turbomanage.storm.csv.package-info.java
com.turbomanage.storm.exception.TooManyResultsException.java
com.turbomanage.storm.exception.TypeNotSupportedException.java
com.turbomanage.storm.exception.package-info.java
com.turbomanage.storm.query.Query.java
com.turbomanage.storm.query.package-info.java
com.turbomanage.storm.sample.activity.ContactActivity.java
com.turbomanage.storm.sample.activity.NewContactActivity.java
com.turbomanage.storm.sample.adapter.ContactAdapter.java
com.turbomanage.storm.sample.database.SampleDatabaseHelper.java
com.turbomanage.storm.sample.loader.AbstractAsyncTaskLoader.java
com.turbomanage.storm.sample.loader.ContactLoader.java
com.turbomanage.storm.sample.model.Contact.java
com.turbomanage.storm.types.BlobConverter.java
com.turbomanage.storm.types.BooleanConverter.java
com.turbomanage.storm.types.ByteConverter.java
com.turbomanage.storm.types.CharConverter.java
com.turbomanage.storm.types.DateConverter.java
com.turbomanage.storm.types.DoubleConverter.java
com.turbomanage.storm.types.EnumConverter.java
com.turbomanage.storm.types.FloatConverter.java
com.turbomanage.storm.types.IntegerConverter.java
com.turbomanage.storm.types.LongConverter.java
com.turbomanage.storm.types.PrimitiveConverter.java
com.turbomanage.storm.types.ShortConverter.java
com.turbomanage.storm.types.StringConverter.java
com.turbomanage.storm.types.TypeConverter.java
com.turbomanage.storm.types.package-info.java
com.turbomanage.storm.package-info.java