Ana içeriğe geç

Generate Package Plugin#

Projelerde, veri tabanı DDL betiği veya varlık (entity) isimleri üzerinden uygulama katmanların oluşmasını sağlamaktadır. 'hvl-plugin' veya 'hvl-code-generator-plugin' plugin id bilgileriyle eklenmektedir. 'hvl-plugin', varsayılan olarak 'hvl-code-generator-plugin' eklentisini uygulamaktadır. Bundan sebep 'hvl-plugin' dahil edilmiş bir projede 'hvl-code-generator-plugin' dahil edilmesine gerek yoktur.

Projelere iki farklı yöntem ile eklenebilmektedir. Aşağıda 'hvl-plugin' eklentisinin nasıl ekleneceği gösterilmiştir. Eğer yalnız 'hvl-code-generator-plugin' eklentisi eklenmek istenirse yöntemler aynıdır. Yöntemler şunlardır:

DSL kullanımı

build.gradle
plugins {
    id 'hvl-plugin' version hvlGradlePluginVersion
}

Buildscript kullanımı

build.gradle
buildscript {
    repositories {
        maven {
            url 'http://nexus.bulut.ai/repository/framework-plugin-group/'
        }
    }
    dependencies {
        classpath(group: 'tr.com.havelsan.plugin', name: 'hvl-gradle-plugin', version: hvlGradlePluginVersion)
    }
}

apply plugin: 'hvl-gradle-plugin'

Paket içeriği üretimi için generatePackage adlı gradle görevi kullanılmaktadır.

Görev, çalışılan projenin build.gradle seviyesinde terminal veya IDE üzerinden tetiklenebilir.

  • Terminal üzerinden:
gradle generatePackage
  • IDE üzerinden:


Görev çalıştırıldığında aşağıda gösterilen pencere açılır.

Ekranda yer alan girdi alanları ve kullanım amaçları aşağıdaki gibidir:

  • Base Package (Zorunlu) Temel paket adını ifade etmektedir.
  • Type Naming Prefix (Opsiyonel) Sınıf adları için ön ek. Alan CaseFormat.UPPER_CAMEL biçimine uygun olmalıdır.
  • Module Name (Zorunlu) Oluşturulmak istenilen modül adını ifade etmektedir.
  • Base Entity Type (Zorunlu) Kalıtım alınacak temel entity tipini ifade etmektedir. Altyapı tarafından, HvlHardDeleteEntity, HvlSoftDeleteEntity olmak üzere iki adet entity tipi sağlanmaktadır.
  • Entity Generating Mode Varlıklar (entity) ve bağlı komponentlerin üretileceği kaynakğın seçimini ifade etmektedir.
    • Entity Name Varlık (entity) adları girişi için metin giriş alanını etkinleştirmektedir. Birden fazla varlık girişi yapılmak istenirse, varlık adları arasına , konulmalıdır. Veri tabanı şema adı girişi için ${schemaName}.${entityName} biçimi uygulanmalıdır. Örneğin device_mgmt.DlmsMeter
    • Database DDL ANSI SQL spesifikasyonlarına uygun veri tabanı DDL betiği girişi için dosya seçim alanını etkinleştirmektedir. Seçilen DDL dosyası, tablo ilişkileri ve veri doğrulama tanımlarını (constraint) eksiksiz içermelidir.
  • Entity Source (Zorunlu) Seçilen Entity Generating Mode için giriş alanıdır.
  • Proj. Entity/Model içinde yer alacak projeksiyon alanların seçimi sağlamaktadır. Ayrıca entity dahilinde yer almayıp varlık ilişkilerinden gelen alanların veri sorgularına dahil edilmesini temin etmektedir.
  • Lookup. Seçilen varlık (entity) alanları içinden Lookup olarak kullanılacak alanların seçimini sağlamaktadır.
  • Query Expression Sorgu modeli içinde yer alacak alanları ve sorgulama kurallarının seçimini sağlamaktadır.

Gerekli alanlar doldurulduktan sonra Generate butonu kullanılarak entity ve bağlı komponentlerin oluşturulması sağlanır. Generate butonunun her kullanımında oluşturulan çıktılar /generated/sources/hvl-codegen yolu altına çıkartılır. Bu yol generatePackage görevinin her çalıştırılmasında silinir. Çıkarılan dosyaların tamamı yada kullanılmak istenilenleri src/main/java altına kopyalanmalıdır.

Template proje üzerinden gradle projesi oluşturma örneği aşağıda yer alan videoda gösterilmiştir.

DDL betiği seçilerek yapılan bir örnek aşağıda yer alan videoda gösterilmiştir.

  • Backend
  • Frontend

Örnek gösterimde kullanılan DDL betik dosyasını buradan indirilebilirsiniz.