class Bumble::CLI

Public Instance Methods

generate(entity) click to toggle source
# File lib/bumble.rb, line 10
def generate(entity)
  puts "\e[1mBzz..\e[0m "
  # Create the data directory for model
  _root = FileUtils.pwd
  cap_entity = entity.capitalize
  puts "\n\e[4mModel\e[0m" ## underlines
  genereate_model(cap_entity)
  FileUtils.cd(_root)
  # Create presentors
  puts "\n\e[4mView-Presenter\e[0m" # underlines
  generate_vp(cap_entity)
end

Private Instance Methods

create_activity(model) click to toggle source
# File lib/bumble.rb, line 174
def create_activity(model)
  return "import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;

  public class #{model}Activity extends AppCompatActivity {

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          //TODO setContentView(R.layout.activity_#{model});
      }
  }"
end
create_contract(model) click to toggle source
# File lib/bumble.rb, line 92
def create_contract(model)
  return "//TODO set package \nimport java.util.List;\ninterface #{model}sContract {

  interface View {

      void show#{model}s(List<#{model}> tasks);

      void showLoadingError();

  }

  interface Presenter {

      void result(int requestCode, int resultCode);

      void load#{model}s(boolean forceUpdate);

      void addNew#{model}();

    }
  }"
end
create_data_repo(model) click to toggle source
# File lib/bumble.rb, line 115
def create_data_repo(model)
  src_interface = "#{model}sDataSource"
  repo_class= "#{model}sRepository"
  src_remote = "m#{model}sRemoteDataSource"
  src_local ="m#{model}sLocalDataSource"
  return "//TODO set package \n\nimport java.util.List;\npublic class #{repo_class} implements #{src_interface} {

    private static #{repo_class} INSTANCE = null;

    private final #{src_interface} #{src_remote};

    private final #{src_interface} #{src_local};

    public #{repo_class}(#{src_interface} mRemoteDataSource, #{src_interface} mLocalDataSource) {
           this.#{src_remote} = mRemoteDataSource;
           this.#{src_local} = mLocalDataSource;
       }

   public static #{repo_class} getInstance(#{src_interface} remoteSrc,
                                          #{src_interface} localSrc) {
       if (INSTANCE == null) {
           INSTANCE = new #{repo_class}(remoteSrc,localSrc);
       }
       return INSTANCE;
   }

   /*
    */
   public static void destroyInstance() {
       INSTANCE = null;
   }
 }"
end
create_data_src(model) click to toggle source
# File lib/bumble.rb, line 149
def create_data_src(model)
  return "//TODO set package \nimport java.util.List;\n public interface #{model}sDataSource {

    interface Load#{model}sCallback {

        void onLoaded(List<#{model}> loaded);

        void onDataNotAvailable();
    }

    interface Get#{model}Callback {

        void on#{model}Loaded(#{model} task);

        void onDataNotAvailable();
    }

    void get#{model}s(Load#{model}sCallback callback);
    void get#{model}(String id, Get#{model}Callback callback);
    void save(#{model} saveItem);
    void delete#{model}(String id);
    void deleteAll#{model}s();
  }"
end
create_model(model) click to toggle source
# File lib/bumble.rb, line 88
def create_model(model)
  return "//TODO set package\npublic class #{model} {\n//TODO \n}"
end
generate_vp(entity) click to toggle source

Creates contract with presenter and view in model/folder

# File lib/bumble.rb, line 38
def generate_vp(entity)

  make_dir(entity.downcase)
  FileUtils.cd(entity)

  contract = "#{entity}sContract.java"

  make_file(contract)
  write(contract,create_contract(entity))

end
genereate_model(entity) click to toggle source

Creates directories: data/

source/
     local/
     remote/
# File lib/bumble.rb, line 55
def genereate_model(entity)
  datadir = "data"
  sourcedir = "source"
  localdir = "local"
  remotedir = "remote"
  ext = ".java"
  model_file ="#{entity}"+ext


  make_dir(datadir)
  FileUtils.cd(datadir)

  FileUtils.touch(model_file)
  write(model_file,create_model(entity))


    # Create Repos and DAOs
  make_dir(sourcedir)
  FileUtils.cd(sourcedir)
  make_dir(localdir)
  make_dir(remotedir)

    # Write Interface
  entity_src ="#{entity}sDataSource.java"
  make_file(entity_src)
  write(entity_src,create_data_src(entity))

  # Write Implementation Skeleton
  entity_repo = "#{entity}sRepository.java"
  make_file(entity_repo)
  write(entity_repo,create_data_repo(entity))
  end
make_dir(dir) click to toggle source
# File lib/bumble.rb, line 29
def make_dir(dir)
  FileUtils.mkdir(dir) unless File.exist? dir
end
make_file(file) click to toggle source
# File lib/bumble.rb, line 33
def make_file(file)
  FileUtils.touch(file) unless File.exist? file
end
write(file,val) click to toggle source
# File lib/bumble.rb, line 24
def write(file,val)
  puts("    \e[1mcreate\e[0m: "+file)
  File.open(file, 'w') { |file| file.write(val) }
end